From 312880208fdcdf7572473165873a3f17588c52f7 Mon Sep 17 00:00:00 2001 From: dphuang2 Date: Fri, 29 Mar 2024 13:56:14 -0700 Subject: [PATCH] publish chatkitty, browse AI, miso, baserow, wallester --- .../from-custom-request_askmiso.com.yaml | 1382 + .../from-custom-request_baserow.io.yaml | 10347 ++++ .../from-custom-request_beamlend.com.yaml | 4 +- .../from-custom-request_browse.ai.yaml | 820 + .../from-custom-request_chatkitty.com.yaml | 2105 + ...ustom-request_telintel.com_SmsGateway.yaml | 2 +- .../from-custom-request_uploadthing.com.yaml | 2 +- sdks/db/category-cache.yaml | 4 + sdks/db/custom-request-last-fetched.yaml | 4 + sdks/db/custom-request-specs/askmiso.com.yaml | 20828 +++++++ sdks/db/custom-request-specs/baserow.io.yaml | 49457 +++++++++++++++ sdks/db/custom-request-specs/browse.ai.yaml | 8159 +++ .../custom-request-specs/chatkitty.com.yaml | 15837 +++++ .../fixed-specs-cache/baserow-fixed-spec.yaml | 49490 +++++++++++++++ .../db/fixed-specs-cache/beam-fixed-spec.yaml | 2 +- .../browse-ai-fixed-spec.yaml | 8179 +++ .../chat-kitty-fixed-spec.yaml | 15856 +++++ .../db/fixed-specs-cache/miso-fixed-spec.yaml | 20848 +++++++ .../telintel-sms-gateway-fixed-spec.yaml | 2 +- sdks/db/fixed-specs/baserow-fixed-spec.yaml | 50881 ++++++++++++++++ sdks/db/fixed-specs/beam-fixed-spec.yaml | 2 +- sdks/db/fixed-specs/browse-ai-fixed-spec.yaml | 8161 +++ .../db/fixed-specs/chat-kitty-fixed-spec.yaml | 15836 +++++ sdks/db/fixed-specs/miso-fixed-spec.yaml | 21251 +++++++ .../baserow.json | 3 + .../beam.json | 3 +- .../browse-ai.json | 3 + .../chat-kitty.json | 3 + .../miso.json | 3 + .../telintel-sms-gateway.json | 3 +- .../baserow/openapi.yaml | 49457 +++++++++++++++ .../beam/openapi.yaml | 2 +- .../browse-ai/openapi.yaml | 8159 +++ .../chatkitty/openapi.yaml | 15837 +++++ .../miso/openapi.yaml | 20828 +++++++ .../askmiso.com.yaml | 218 + .../baserow.io.yaml | 31 + .../browse.ai.yaml | 17 + .../chatkitty.com.yaml | 34 + sdks/db/progress/baserow-progress.yaml | 2148 + sdks/db/progress/browse-ai-progress.yaml | 64 + sdks/db/progress/chat-kitty-progress.yaml | 193 + sdks/db/progress/miso-progress.yaml | 165 + .../from-custom-request_askmiso.com.json | 1993 + .../from-custom-request_baserow.io.json | 12206 ++++ .../from-custom-request_beamlend.com.json | 8 +- .../from-custom-request_browse.ai.json | 1135 + .../from-custom-request_chatkitty.com.json | 3408 ++ ...ustom-request_telintel.com_SmsGateway.json | 6 +- .../from-custom-request_uploadthing.com.json | 4 +- .../apideck.com_ecosystem_0.0.6.json | 2 +- .../from-custom-request_askmiso.com.json | 31 + .../from-custom-request_baserow.io.json | 31 + .../from-custom-request_browse.ai.json | 18 + .../from-custom-request_chatkitty.com.json | 40 + .../from-custom-request_uploadthing.com.json | 2 +- sdks/db/spec-data/mandrillapp.com_1.0.json | 2 +- sdks/db/spec-data/vatapi.com_1.json | 2 +- sdks/db/spec-data/vonage.com_vgis_1.0.1.json | 2 +- ...vtex.local_Orders-API-PII-version_1.0.json | 2 +- sdks/publish.yaml | 90 +- sdks/src/collect-from-custom-requests.ts | 19 +- 62 files changed, 415602 insertions(+), 29 deletions(-) create mode 100644 sdks/db/cached-method-objects/from-custom-request_askmiso.com.yaml create mode 100644 sdks/db/cached-method-objects/from-custom-request_baserow.io.yaml create mode 100644 sdks/db/cached-method-objects/from-custom-request_browse.ai.yaml create mode 100644 sdks/db/cached-method-objects/from-custom-request_chatkitty.com.yaml create mode 100644 sdks/db/custom-request-specs/askmiso.com.yaml create mode 100644 sdks/db/custom-request-specs/baserow.io.yaml create mode 100644 sdks/db/custom-request-specs/browse.ai.yaml create mode 100644 sdks/db/custom-request-specs/chatkitty.com.yaml create mode 100644 sdks/db/fixed-specs-cache/baserow-fixed-spec.yaml create mode 100644 sdks/db/fixed-specs-cache/browse-ai-fixed-spec.yaml create mode 100644 sdks/db/fixed-specs-cache/chat-kitty-fixed-spec.yaml create mode 100644 sdks/db/fixed-specs-cache/miso-fixed-spec.yaml create mode 100644 sdks/db/fixed-specs/baserow-fixed-spec.yaml create mode 100644 sdks/db/fixed-specs/browse-ai-fixed-spec.yaml create mode 100644 sdks/db/fixed-specs/chat-kitty-fixed-spec.yaml create mode 100644 sdks/db/fixed-specs/miso-fixed-spec.yaml create mode 100644 sdks/db/generate-repository-description-cache/baserow.json create mode 100644 sdks/db/generate-repository-description-cache/browse-ai.json create mode 100644 sdks/db/generate-repository-description-cache/chat-kitty.json create mode 100644 sdks/db/generate-repository-description-cache/miso.json create mode 100644 sdks/db/intermediate-fixed-specs/baserow/openapi.yaml create mode 100644 sdks/db/intermediate-fixed-specs/browse-ai/openapi.yaml create mode 100644 sdks/db/intermediate-fixed-specs/chatkitty/openapi.yaml create mode 100644 sdks/db/intermediate-fixed-specs/miso/openapi.yaml create mode 100644 sdks/db/processed-custom-request-cache/askmiso.com.yaml create mode 100644 sdks/db/processed-custom-request-cache/baserow.io.yaml create mode 100644 sdks/db/processed-custom-request-cache/browse.ai.yaml create mode 100644 sdks/db/processed-custom-request-cache/chatkitty.com.yaml create mode 100644 sdks/db/progress/baserow-progress.yaml create mode 100644 sdks/db/progress/browse-ai-progress.yaml create mode 100644 sdks/db/progress/chat-kitty-progress.yaml create mode 100644 sdks/db/progress/miso-progress.yaml create mode 100644 sdks/db/published/from-custom-request_askmiso.com.json create mode 100644 sdks/db/published/from-custom-request_baserow.io.json create mode 100644 sdks/db/published/from-custom-request_browse.ai.json create mode 100644 sdks/db/published/from-custom-request_chatkitty.com.json create mode 100644 sdks/db/spec-data/from-custom-request_askmiso.com.json create mode 100644 sdks/db/spec-data/from-custom-request_baserow.io.json create mode 100644 sdks/db/spec-data/from-custom-request_browse.ai.json create mode 100644 sdks/db/spec-data/from-custom-request_chatkitty.com.json diff --git a/sdks/db/cached-method-objects/from-custom-request_askmiso.com.yaml b/sdks/db/cached-method-objects/from-custom-request_askmiso.com.yaml new file mode 100644 index 0000000000..0f15f21458 --- /dev/null +++ b/sdks/db/cached-method-objects/from-custom-request_askmiso.com.yaml @@ -0,0 +1,1382 @@ +hash: 6dd131ddc01156d62dc9a3cdb503d59e2948ea0b41d3d4081e04fd09bed1de11 +methodObjects: + - url: /v1/experiments/{experiment_id_or_slug}/events + method: sendEvent + httpMethod: post + tag: Experiment APIs + typeScriptTag: experimentApIs + description: Send Experiment Event + parameters: + - name: user_id + schema: string + description: '' + example: '2179873' + - name: anonymous_id + schema: string + description: '' + example: 403fb18e-98ff-434d-8585-726fabf5ed37 + - name: variant_name + schema: string + description: '' + example: Treatment_Group + - name: timestamp + schema: string + description: '' + example: '2022-01-23T12:34:56-08:00' + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - url: /v1/interactions + method: removeData + httpMethod: delete + tag: Interaction APIs + typeScriptTag: interactionApIs + description: Interaction Delete API + parameters: + - name: user_ids + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/interactions + method: insertRecords + httpMethod: post + tag: Interaction APIs + typeScriptTag: interactionApIs + description: Interaction Upload API + parameters: + - name: data + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: '' + - url: /v1/products + method: bulkInsert + httpMethod: post + tag: Product / Content APIs + typeScriptTag: productContentApIs + description: Product / Content Upload API + parameters: + - name: data + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /v1/products/{product_id} + method: deleteProductContent + httpMethod: delete + tag: Product / Content APIs + typeScriptTag: productContentApIs + description: Product / Content Delete API + parameters: + - name: productId + schema: string + required: true + description: '' + example: PRODUCT_ID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /v1/products/{product_id} + method: getProductDetails + httpMethod: get + tag: Product / Content APIs + typeScriptTag: productContentApIs + description: Product / Content Read API + parameters: + - name: productId + schema: string + required: true + description: '' + example: PRODUCT_ID + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /v1/products/_ids + method: getProductIds + httpMethod: get + tag: Product / Content APIs + typeScriptTag: productContentApIs + description: Product / Content ID List API + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '500' + description: '' + - url: /v1/products/_delete + method: bulkDelete + httpMethod: post + tag: Product / Content APIs + typeScriptTag: productContentApIs + description: Product / Content Bulk Delete API + parameters: + - name: data + schema: object + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /v1/users + method: bulkUpload + httpMethod: post + tag: User APIs + typeScriptTag: userApIs + description: User Upload API + parameters: + - name: data + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /v1/users/{user_id} + method: deleteUser + httpMethod: delete + tag: User APIs + typeScriptTag: userApIs + description: User Delete API + parameters: + - name: userId + schema: string + required: true + description: '' + example: USER_ID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /v1/users/{user_id} + method: getUserDetails + httpMethod: get + tag: User APIs + typeScriptTag: userApIs + description: User Read API + parameters: + - name: userId + schema: string + required: true + description: '' + example: USERID + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /v1/users/_delete + method: bulkUserDelete + httpMethod: post + tag: User APIs + typeScriptTag: userApIs + description: User Bulk Delete API + parameters: + - name: data + schema: object + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /v1/search/search + method: searchRequest + httpMethod: post + tag: Search APIs + typeScriptTag: searchApIs + description: Search API + parameters: + - name: engine_id + schema: string + description: '' + - name: user_id + schema: string + description: '' + - name: anonymous_id + schema: string + description: '' + - name: user_hash + schema: string + description: '' + - name: user_cohort + schema: object + description: '' + - name: rows + schema: integer + description: '' + default: 5 + - name: type + schema: string + description: '' + - name: dedupe_product_group_id + schema: boolean + description: '' + default: true + - name: additional_interactions + schema: array + description: '' + default: [] + - name: fl + schema: array + description: '' + default: [] + - name: exclude + schema: array + description: '' + - name: q + schema: string + description: '' + - name: advanced_q + schema: string + description: '' + - name: boosting_tags + schema: array + description: '' + example: + - tag-1 + - quetag-2 + default: [] + - name: enable_boosting_campaigns + schema: boolean + description: '' + default: true + - name: custom_context + schema: object + description: '' + example: + session_variable_1: + - value_1 + - value_2 + - name: language + schema: string + description: '' + - name: like + schema: string + description: '' + - name: category + schema: array + description: '' + - name: spellcheck + schema: object + description: '' + - name: start + schema: integer + description: '' + default: 0 + - name: order_by + schema: array + description: '' + default: [] + - name: facets + schema: array + description: '' + default: [] + - name: facet_filters + schema: object + description: '' + default: {} + - name: anchoring_settings + schema: array + description: '' + default: [] + - name: enable_partial_match + schema: boolean + description: '' + default: false + - name: partial_match_mode + schema: string + description: '' + default: blended + - name: enable_partial_match_threshold + schema: integer + description: '' + - name: enable_semantic_search + schema: boolean + description: '' + default: false + - name: semantic_search_threshold + schema: number + description: '' + default: 0.5 + - name: enable_matched_fields + schema: boolean + description: '' + default: false + - name: query_product_existence + schema: object + description: '' + - name: personalization_weight + schema: integer + description: '' + default: 5 + - name: fq + schema: string + description: '' + - name: boost_fq + schema: string + description: '' + - name: boost_positions + schema: array + description: '' + - name: boost_rules + schema: array + description: '' + default: [] + - name: geo + schema: object + description: '' + - name: diversification + schema: object + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/search/autocomplete + method: autocompleteRequest + httpMethod: post + tag: Search APIs + typeScriptTag: searchApIs + description: Autocomplete API + parameters: + - name: engine_id + schema: string + required: false + description: '' + - name: user_id + schema: string + required: false + description: '' + - name: anonymous_id + schema: string + required: false + description: '' + - name: user_hash + schema: string + required: false + description: '' + - name: user_cohort + schema: object + required: false + description: '' + - name: rows + schema: integer + required: false + description: '' + default: 5 + - name: type + schema: string + required: false + description: '' + - name: dedupe_product_group_id + schema: boolean + required: false + description: '' + default: true + - name: additional_interactions + schema: array + required: false + description: '' + default: [] + - name: fq + schema: string + required: false + description: '' + - name: boost_fq + schema: string + required: false + description: '' + - name: boost_positions + schema: array + required: false + description: '' + - name: boost_rules + schema: array + required: false + description: '' + default: [] + - name: geo + schema: object + required: false + description: '' + - name: q + schema: string + required: true + description: '' + example: Q + - name: language + schema: string + required: false + description: '' + - name: min_query_users + schema: integer + required: false + description: '' + default: 5 + - name: completion_fields + schema: array + required: false + description: '' + default: + - title + - name: fl + schema: array + required: false + description: '' + default: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/search/mget + method: multipleGetProducts + httpMethod: post + tag: Search APIs + typeScriptTag: searchApIs + description: Multiple Get API + parameters: + - name: engine_id + schema: string + required: false + description: '' + - name: user_id + schema: string + required: false + description: '' + - name: anonymous_id + schema: string + required: false + description: '' + - name: user_hash + schema: string + required: false + description: '' + - name: product_ids + schema: array + required: true + description: '' + - name: fl + schema: array + required: false + description: '' + default: + - '*' + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/ask/questions + method: submitQuestion + httpMethod: post + tag: Ask APIs + typeScriptTag: askApIs + description: Create a new qestion + parameters: + - name: user_id + schema: string + required: false + description: '' + - name: anonymous_id + schema: string + required: false + description: '' + - name: fq + schema: string + required: false + description: '' + - name: question + schema: string + required: true + description: '' + example: QUESTION + - name: parent_question_id + schema: string + required: false + description: '' + - name: yearly_decay + schema: number + required: false + description: '' + default: 0.93 + - name: source_fl + schema: array + required: false + description: '' + default: + - title + - name: related_resource_fl + schema: array + required: false + description: '' + default: + - title + - name: cite_start + schema: string + required: false + description: '' + - name: cite_end + schema: string + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/ask/questions/{question_id}/answer + method: getAnswerStage + httpMethod: get + tag: Ask APIs + typeScriptTag: askApIs + description: Get latest answer of asked question + parameters: + - name: questionId + schema: string + required: true + description: '' + example: QUESTION_ID + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/recommendation/user_to_products + method: getRecommendedProducts + httpMethod: post + tag: Recommendation APIs + typeScriptTag: recommendationApIs + description: User to Products API + parameters: + - name: engine_id + schema: string + description: '' + - name: user_id + schema: string + description: '' + - name: anonymous_id + schema: string + description: '' + - name: user_hash + schema: string + description: '' + - name: user_cohort + schema: object + description: '' + - name: rows + schema: integer + description: '' + default: 5 + - name: type + schema: string + description: '' + - name: dedupe_product_group_id + schema: boolean + description: '' + default: true + - name: additional_interactions + schema: array + description: '' + default: &ref_0 [] + - name: fl + schema: array + description: '' + default: &ref_1 [] + - name: exclude + schema: array + description: '' + - name: boosting_tags + schema: array + description: '' + example: &ref_2 + - tag-1 + - quetag-2 + default: &ref_3 [] + - name: fq + schema: string + description: '' + - name: boost_fq + schema: string + description: '' + - name: boost_positions + schema: array + description: '' + - name: boost_rules + schema: array + description: '' + default: &ref_4 [] + - name: geo + schema: object + description: '' + - name: diversification + schema: object + description: '' + - name: pagination_id + schema: string + description: '' + - name: start + schema: integer + description: '' + default: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/recommendation/user_to_categories + method: getUserCategories + httpMethod: post + tag: Recommendation APIs + typeScriptTag: recommendationApIs + description: User to Categories API + parameters: + - name: engine_id + schema: string + description: '' + - name: user_id + schema: string + description: '' + - name: anonymous_id + schema: string + description: '' + - name: user_hash + schema: string + description: '' + - name: user_cohort + schema: object + description: '' + - name: rows + schema: integer + description: '' + default: 5 + - name: type + schema: string + description: '' + - name: dedupe_product_group_id + schema: boolean + description: '' + default: true + - name: additional_interactions + schema: array + description: '' + default: [] + - name: fl + schema: array + description: '' + default: [] + - name: exclude + schema: array + description: '' + - name: boosting_tags + schema: array + description: '' + example: + - tag-1 + - quetag-2 + default: [] + - name: products_per_category + schema: integer + description: '' + default: 5 + - name: root_category + schema: array + description: '' + default: [] + - name: fq + schema: string + description: '' + - name: boost_fq + schema: string + description: '' + - name: boost_positions + schema: array + description: '' + - name: boost_rules + schema: array + description: '' + default: [] + - name: geo + schema: object + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/recommendation/user_to_attributes + method: getUserAttributes + httpMethod: post + tag: Recommendation APIs + typeScriptTag: recommendationApIs + description: User to Attributes API + parameters: + - name: boosting_tags + schema: array + required: false + description: '' + example: + - tag-1 + - quetag-2 + default: [] + - name: field + schema: string + required: true + description: '' + example: FIELD + - name: boost_attributes + schema: array + required: false + description: '' + default: [] + - name: exclude_attributes + schema: array + required: false + description: '' + default: [] + - name: rows + schema: integer + required: false + description: '' + default: 5 + - name: products_per_attribute + schema: integer + required: false + description: '' + default: 2 + - name: engine_id + schema: string + required: false + description: '' + - name: user_id + schema: string + required: false + description: '' + - name: anonymous_id + schema: string + required: false + description: '' + - name: user_hash + schema: string + required: false + description: '' + - name: user_cohort + schema: object + required: false + description: '' + - name: type + schema: string + required: false + description: '' + - name: dedupe_product_group_id + schema: boolean + required: false + description: '' + default: true + - name: additional_interactions + schema: array + required: false + description: '' + default: [] + - name: fl + schema: array + required: false + description: '' + default: [] + - name: exclude + schema: array + required: false + description: '' + - name: fq + schema: string + required: false + description: '' + - name: boost_fq + schema: string + required: false + description: '' + - name: boost_positions + schema: array + required: false + description: '' + - name: boost_rules + schema: array + required: false + description: '' + default: [] + - name: geo + schema: object + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/recommendation/user_to_trending + method: getUserTrending + httpMethod: post + tag: Recommendation APIs + typeScriptTag: recommendationApIs + description: User to Trending API + parameters: + - name: engine_id + schema: string + description: '' + - name: user_id + schema: string + description: '' + - name: anonymous_id + schema: string + description: '' + - name: user_hash + schema: string + description: '' + - name: user_cohort + schema: object + description: '' + - name: rows + schema: integer + description: '' + default: 5 + - name: type + schema: string + description: '' + - name: dedupe_product_group_id + schema: boolean + description: '' + default: true + - name: additional_interactions + schema: array + description: '' + default: *ref_0 + - name: fl + schema: array + description: '' + default: *ref_1 + - name: exclude + schema: array + description: '' + - name: boosting_tags + schema: array + description: '' + example: *ref_2 + default: *ref_3 + - name: fq + schema: string + description: '' + - name: boost_fq + schema: string + description: '' + - name: boost_positions + schema: array + description: '' + - name: boost_rules + schema: array + description: '' + default: *ref_4 + - name: geo + schema: object + description: '' + - name: diversification + schema: object + description: '' + - name: pagination_id + schema: string + description: '' + - name: start + schema: integer + description: '' + default: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/recommendation/product_to_products + method: getRelatedProducts + httpMethod: post + tag: Recommendation APIs + typeScriptTag: recommendationApIs + description: Product to Products API + parameters: + - name: product_id + schema: string + description: '' + - name: product_ids + schema: array + description: '' + - name: product_group_id + schema: string + description: '' + - name: product_group_ids + schema: array + description: '' + - name: buy_together + schema: boolean + description: '' + default: false + - name: engine_id + schema: string + description: '' + - name: user_id + schema: string + description: '' + - name: anonymous_id + schema: string + description: '' + - name: user_hash + schema: string + description: '' + - name: user_cohort + schema: object + description: '' + - name: rows + schema: integer + description: '' + default: 5 + - name: type + schema: string + description: '' + - name: dedupe_product_group_id + schema: boolean + description: '' + default: true + - name: additional_interactions + schema: array + description: '' + default: [] + - name: fl + schema: array + description: '' + default: [] + - name: exclude + schema: array + description: '' + - name: boosting_tags + schema: array + description: '' + example: + - tag-1 + - quetag-2 + default: [] + - name: fq + schema: string + description: '' + - name: boost_fq + schema: string + description: '' + - name: boost_positions + schema: array + description: '' + - name: boost_rules + schema: array + description: '' + default: [] + - name: geo + schema: object + description: '' + - name: diversification + schema: object + description: '' + - name: pagination_id + schema: string + description: '' + - name: start + schema: integer + description: '' + default: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/qa/question_answering + method: extractAnswer + httpMethod: post + tag: Q&A APIs + typeScriptTag: q&aApIs + description: Q&A API + parameters: + - name: version + schema: string + required: false + description: '' + example: v1.2 + default: v1.2 + - name: q + schema: string + required: true + description: '' + example: what is gradient descent + - name: min_probability + schema: number + required: true + description: '' + example: 0.7 + - name: rows + schema: integer + required: false + description: '' + default: 1 + - name: fl + schema: array + required: false + description: '' + default: [] + - name: spellcheck + schema: object + required: false + description: '' + - name: enable_answer_html + schema: boolean + required: false + description: '' + default: false + - name: enable_answer_block + schema: boolean + required: false + description: '' + default: false + - name: fq + schema: string + required: false + description: '' + - name: boost_fq + schema: string + required: false + description: '' + - name: boost_positions + schema: array + required: false + description: '' + - name: boost_rules + schema: array + required: false + description: '' + default: [] + - name: geo + schema: object + required: false + description: '' + - name: boost_probability_threshold + schema: number + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/qa/questions + method: uploadQuestionBank + httpMethod: post + tag: Q&A APIs + typeScriptTag: q&aApIs + description: Upload Question Bank API + parameters: + - name: data + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '422' + description: '' + - url: /v1/qa/question_autocomplete + method: getAutocomplete + httpMethod: post + tag: Q&A APIs + typeScriptTag: q&aApIs + description: Question Autocomplete API + parameters: + - name: q + schema: string + required: true + description: '' + example: what is g + - name: rows + schema: integer + required: false + description: '' + default: 5 + responses: + - statusCode: '200' + description: Autocomplete Response + - statusCode: '422' + description: '' + - url: /v1/bulk + method: requestPost + httpMethod: post + tag: Bulk API + typeScriptTag: bulkApi + description: Bulk Request API + parameters: + - name: requests + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: 'Bulk API response ' + - statusCode: '422' + description: '' +numberOfSchemas: 175 +apiDescription: > + + # Overview + + Miso’s approach to personalization is to train machine learning Engines on + three core data sets: + + + 1. Your site’s log of historical and real-time interactions, + + 2. Your catalog of products and content, and + + 3. Your users. Miso provides the output of its Engines to you, so you can + build search and recommendation + + experiences that are personalized down to the individual level (n=1 + personalization). + + + To see how Miso works and explore the power of its Engines, we recommend + following + + [this tutorial](https://docs.askmiso.com/) to get + + started with our Playground data. Integrating your site or application with + Miso happens in three basic steps: + + + 1. Upload your data + + 2. Train your Engines + + 3. Build search and recommendation experiences with the output of your + Engines. + + + + Miso provides two main integration points. The first is your [Dojo + Dashboard](https://dojo.askmiso.com/), + + which is used to set up your Engines with the conversions you want to optimize + and your training schedule. + + Dojo is also a great way to get familiar with Miso by manually uploading data + and exploring the output of + + Miso’s Engines. In Dojo’s Sandboxes, you can tweak your Engine settings and + see visual examples of Miso’s search + + and recommendations running on your live data. + + + The second integration point is Miso’s API, which lets you automatically + manage your data in Miso and build + + experiences that leverage the output of Miso’s personalization Engines. + + + + Miso’s API is composed of two major groups of REST API endpoints: Data APIs + and Engine APIs. + + + ### Data APIs + + Data APIs collect input to Miso's personalization Engines. These APIs all + support high-throughput + + data ingestion through bulk insert, and satisfy GDPR and CCPA compliance by + letting users delete their data + + from Miso. Subcategories of Data APIs are: + + + * [Interaction APIs](https://api.askmiso.com), for managing your Interaction + records. By uploading historical and real-time Interaction + + records, you tell Miso how users are engaging with the products and content on + your site, and in turn, Miso’s + + Engines learn how to optimize your conversion funnels. + + * [Product / Content APIs](https://api.askmiso.com), for managing your Product + / Content records. These records provide a deep semantic + + understanding of your catalog and keep Miso up to date about your offerings so + it can make smart and timely + + suggestions. The `product_id` is how Miso links Product / Content records to + your Interaction records. + + * [User APIs](https://api.askmiso.com), for managing your User records. These + records tell Miso about your site’s users and visitors, + + so Miso can build an understanding of user segmentation and behavior in + relation to products and content. + + The `user_id` is how Miso links User records to your Interaction records. + + + As a rule of thumb, we recommend batching up data to avoid timeout risks. For + the Product / Content and User + + Upload APIs, we recommend limiting each API upload call to about 100 records + at a time. For the Interaction + + Upload API, we recommend limiting your calls to around 10,000 records at a + time. + + + ### Engine APIs + + Engine APIs provide the output of Miso's personalization Engines. We designed + these APIs with a focus on low + + latency and high availability. Most of these APIs' 95th percentile response + time is under 75ms, + + and the services are replicated to at least three separate instances for high + availability. + + The types of Engine APIs are: + + + * [Search APIs](https://api.askmiso.com), for getting Miso’s personalized + search results for a user, with search-as-you-type and + + autocompletion. + + * [Recommendation APIs](https://api.askmiso.com), for retrieving Miso’s + recommendations that match users with + + the products, categories, and product attributes that are likely to drive + conversions. + + + # Authentication + + [View your API Keys in your Dojo + Dashboard.](https://dojo.askmiso.com/docs/api-browser) + + + There are three environments in Miso: + + * **Playground**, a read-only tutorial environment with sample data. + + * **Development**, for staging, QA, and experimentation. + + * **Production**, where you run your live integration with Miso. + + + Access a Miso environment by passing in the corresponding API key in your API + calls. There is one publishable + + key and one secret key per environment. + + + API Key can passed with query parameter `api_key`, or using the `X-API-KEY` + header. diff --git a/sdks/db/cached-method-objects/from-custom-request_baserow.io.yaml b/sdks/db/cached-method-objects/from-custom-request_baserow.io.yaml new file mode 100644 index 0000000000..e7de0bf4cf --- /dev/null +++ b/sdks/db/cached-method-objects/from-custom-request_baserow.io.yaml @@ -0,0 +1,10347 @@ +hash: 9d9ff759a8eebe7ec84809b8142f8dd9daba1b6e189a9abc89acfe36f6f9706e +methodObjects: + - url: /api/database/view/{view_id}/premium + method: setPremiumAttributes + httpMethod: patch + tag: Database table views + typeScriptTag: databaseTableViews + description: Sets view attributes only available for premium users. + parameters: + - name: viewId + schema: integer + required: true + description: Sets show_logo of this view. + example: 0 + - name: show_logo + schema: boolean + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/user-source/{user_source_id}/force-token-auth + method: forceTokenAuth + httpMethod: post + tag: User sources + typeScriptTag: userSources + description: >- + Force authenticates an existing user based on their ID. If successful, an + access token and a refresh token will be returned. + parameters: + - name: userSourceId + schema: integer + required: true + description: The user source to use to authenticate the user. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /api/user-source/{user_source_id}/token-auth + method: authenticateUserWithToken + httpMethod: post + tag: User sources + typeScriptTag: userSources + description: >- + Authenticates an existing user against a user source based on their + credentials. If successful, an access token and a refresh token will be + returned. + parameters: + - name: userSourceId + schema: integer + required: true + description: The id of the user_source to move + example: 0 + - name: username + schema: string + required: true + description: '' + example: USERNAME + - name: password + schema: string + required: true + description: '' + example: PASSWORD + - name: access + schema: string + required: true + description: '' + example: ACCESS + - name: refresh + schema: string + required: true + description: '' + example: REFRESH + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /api/_health/email + method: tester + httpMethod: post + tag: Health + typeScriptTag: health + description: >- + Sends a test email to the provided email address. Useful for testing + Baserow's email configuration as errors are clearly returned. + parameters: + - name: target_email + schema: string + required: true + description: '' + example: TARGET_EMAIL + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /api/_health/full + method: runFullCheck + httpMethod: get + tag: Health + typeScriptTag: health + description: >- + Runs a full health check testing as many services and systems as possible. + These health checks can be expensive operations such as writing files to + storage etc. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/admin/audit-log + method: listEntriesForWorkspace + httpMethod: get + tag: Audit log + typeScriptTag: auditLog + description: |- + Lists all audit log entries for the given workspace id. + + This is a **enterprise** feature. + parameters: + - name: actionType + schema: string + description: Filter the audit log entries by action type. + - name: fromTimestamp + schema: string + description: The ISO timestamp to filter the audit log entries from. + - name: page + schema: integer + description: Defines which page should be returned. + - name: size + schema: integer + description: Defines how many audit log entries should be returned per page. + - name: sorts + schema: string + description: >- + A comma separated string of attributes to sort by, each attribute must + be prefixed with `+` for a descending sort or a `-` for an ascending + sort. The accepted attribute names are: `user, workspace, type, + timestamp, ip_address`. For example `sorts=-user,-workspace` will sort + the audit log entries first by descending user and then ascending + workspace. A sortparameter with multiple instances of the same sort + attribute will respond with the ERROR_INVALID_SORT_ATTRIBUTE error. + - name: toTimestamp + schema: string + description: The ISO timestamp to filter the audit log entries to. + - name: userId + schema: integer + description: Filter the audit log entries by user id. + - name: workspaceId + schema: integer + description: >- + Filter the audit log entries by workspace id. This filter works only + for the admin audit log. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/audit-log/action-types + method: listActionTypes + httpMethod: get + tag: Audit log + typeScriptTag: auditLog + description: |- + List all distinct action types related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - name: search + schema: string + description: >- + If provided only action_types with name that match the query will be + returned. + - name: workspaceId + schema: integer + description: Return action types related to the workspace. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/audit-log/export + method: createExportJob + httpMethod: post + tag: Audit log + typeScriptTag: auditLog + description: |- + Creates a job to export the filtered audit log to a CSV file. + + This is a **enterprise** feature. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: url + schema: string + required: true + description: '' + example: URL + - name: export_charset + schema: string + required: false + description: '' + - name: csv_column_separator + schema: string + required: false + description: '' + - name: csv_first_row_header + schema: boolean + required: false + description: '' + default: true + - name: filter_user_id + schema: integer + required: false + description: '' + - name: filter_workspace_id + schema: integer + required: false + description: '' + - name: filter_action_type + schema: string + required: false + description: '' + - name: filter_from_timestamp + schema: string + required: false + description: '' + - name: filter_to_timestamp + schema: string + required: false + description: '' + - name: exclude_columns + schema: string + required: false + description: '' + responses: + - statusCode: '202' + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/admin/audit-log/users + method: listUsers + httpMethod: get + tag: Audit log + typeScriptTag: auditLog + description: |- + List all users that have performed an action in the audit log. + + This is a **enterprise** feature. + parameters: + - name: page + schema: integer + description: Defines which page should be returned. + - name: search + schema: string + description: >- + If provided only users with email that match the query will be + returned. + - name: size + schema: integer + description: Defines how many users should be returned per page. + - name: workspaceId + schema: integer + description: Return users belonging to the given workspace_id. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/audit-log/workspaces + method: listDistinctWorkspaceNames + httpMethod: get + tag: Audit log + typeScriptTag: auditLog + description: |- + List all distinct workspace names related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - name: page + schema: integer + description: Defines which page should be returned. + - name: search + schema: string + description: >- + If provided only workspaces with name that match the query will be + returned. + - name: size + schema: integer + description: Defines how many workspaces should be returned per page. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/auth-provider + method: listProviders + httpMethod: get + tag: Auth + typeScriptTag: auth + description: List all the available authentication providers. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/admin/auth-provider + method: registerAuthProvider + httpMethod: post + tag: Auth + typeScriptTag: auth + description: >- + Creates a new authentication provider. This can be used to enable + authentication with a third party service like Google or Facebook. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /api/admin/auth-provider/{auth_provider_id} + method: deleteAuthProvider + httpMethod: delete + tag: Auth + typeScriptTag: auth + description: Delete an authentication provider. + parameters: + - name: authProviderId + schema: integer + required: true + description: The authentication provider id to delete. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '404' + description: '' + - url: /api/admin/auth-provider/{auth_provider_id} + method: getAuthProvider + httpMethod: get + tag: Auth + typeScriptTag: auth + description: Get an authentication provider. + parameters: + - name: authProviderId + schema: integer + required: true + description: The authentication provider id to fetch. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/admin/auth-provider/{auth_provider_id} + method: updateAuthProvider + httpMethod: patch + tag: Auth + typeScriptTag: auth + description: >- + Updates a new authentication provider. This can be used to enable + authentication with a third party service like Google or Facebook. + parameters: + - name: authProviderId + schema: integer + required: true + description: The authentication provider id to update. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/admin/dashboard + method: dashboard + httpMethod: get + tag: Admin + typeScriptTag: admin + description: >- + Returns the new and active users for the last 24 hours, 7 days and 30 + days. The `previous_` values are the values of the period before, so for + example `previous_new_users_last_24_hours` are the new users that signed + up from 48 to 24 hours ago. It can be used to calculate an increase or + decrease in the amount of signups. A list of the new and active users for + every day for the last 30 days is also included. + + + This is a **premium** feature. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/groups + method: getAllGroups + httpMethod: get + tag: Admin + typeScriptTag: admin + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [admin_list_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns all groups with detailed information on each group, if the requesting user is staff. + + This is a **premium** feature. + parameters: + - name: page + schema: integer + description: Defines which page should be returned. + - name: search + schema: string + description: >- + If provided only groups with id or name that match the query will be + returned. + - name: size + schema: integer + description: Defines how many groups should be returned per page. + - name: sorts + schema: string + description: >- + A comma separated string of attributes to sort by, each attribute must + be prefixed with `+` for a descending sort or a `-` for an ascending + sort. The accepted attribute names are: `id, name, application_count, + created_on, row_count, storage_usage`. For example `sorts=-id,-name` + will sort the groups first by descending id and then ascending name. A + sortparameter with multiple instances of the same sort attribute will + respond with the ERROR_INVALID_SORT_ATTRIBUTE error. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/groups/{group_id} + method: deleteGroup + httpMethod: delete + tag: Admin + typeScriptTag: admin + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [admin_delete_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes the specified group and the applications inside that group, if the requesting user is staff. + + This is a **premium** feature. + parameters: + - name: groupId + schema: integer + required: true + description: The id of the group to delete + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/users + method: getUsersDetail + httpMethod: get + tag: Admin + typeScriptTag: admin + description: >- + Returns all users with detailed information on each user, if the + requesting user is staff. + + + This is a **premium** feature. + parameters: + - name: page + schema: integer + description: Defines which page should be returned. + - name: search + schema: string + description: >- + If provided only users with username that match the query will be + returned. + - name: size + schema: integer + description: Defines how many users should be returned per page. + - name: sorts + schema: string + description: >- + A comma separated string of attributes to sort by, each attribute must + be prefixed with `+` for a descending sort or a `-` for an ascending + sort. The accepted attribute names are: `id, is_active, name, + username, date_joined, last_login`. For example `sorts=-id,-is_active` + will sort the users first by descending id and then ascending + is_active. A sortparameter with multiple instances of the same sort + attribute will respond with the ERROR_INVALID_SORT_ATTRIBUTE error. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/users + method: createNewUser + httpMethod: post + tag: Admin + typeScriptTag: admin + description: >- + Creates and returns a new user if the requesting user is staff. This works + even if new signups are disabled. + + + This is a **premium** feature. + parameters: + - name: username + schema: string + required: true + description: '' + example: USERNAME + - name: name + schema: string + required: true + description: '' + example: NAME + - name: is_active + schema: boolean + required: false + description: '' + - name: is_staff + schema: boolean + required: false + description: '' + - name: password + schema: string + required: true + description: '' + example: PASSWORD + responses: + - statusCode: '200' + description: >- + Serializes the safe user attributes to expose for a response back to + the user. + - statusCode: '400' + description: '' + - url: /api/admin/users/{user_id} + method: deleteUserPremium + httpMethod: delete + tag: Admin + typeScriptTag: admin + description: >- + Deletes the specified user, if the requesting user has admin permissions. + You cannot delete yourself. + + + This is a **premium** feature. + parameters: + - name: userId + schema: integer + required: true + description: The id of the user to delete + example: 0 + responses: + - statusCode: '200' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/users/{user_id} + method: updateUserAttributes + httpMethod: patch + tag: Admin + typeScriptTag: admin + description: >- + Updates specified user attributes and returns the updated user if the + requesting user is staff. You cannot update yourself to no longer be an + admin or active. + + + This is a **premium** feature. + parameters: + - name: userId + schema: integer + required: true + description: The id of the user to edit + example: 0 + - name: username + schema: string + description: '' + - name: name + schema: string + description: '' + - name: is_active + schema: boolean + description: '' + - name: is_staff + schema: boolean + description: '' + - name: password + schema: string + description: '' + responses: + - statusCode: '200' + description: >- + Serializes the safe user attributes to expose for a response back to + the user. + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/users/impersonate + method: impersonateUser + httpMethod: post + tag: Admin + typeScriptTag: admin + description: >- + This endpoint allows staff to impersonate another user by requesting a JWT + token and user object. The requesting user must have staff access in order + to do this. It's not possible to impersonate a superuser or staff. + + + This is a **premium** feature. + parameters: + - name: user + schema: integer + required: true + description: '' + example: 0 + responses: + - statusCode: '200' + description: '' + - url: /api/admin/workspaces + method: getWorkspaceDetails + httpMethod: get + tag: Admin + typeScriptTag: admin + description: >- + Returns all workspaces with detailed information on each workspace, if the + requesting user is staff. + + + This is a **premium** feature. + parameters: + - name: page + schema: integer + description: Defines which page should be returned. + - name: search + schema: string + description: >- + If provided only workspaces with id or name that match the query will + be returned. + - name: size + schema: integer + description: Defines how many workspaces should be returned per page. + - name: sorts + schema: string + description: >- + A comma separated string of attributes to sort by, each attribute must + be prefixed with `+` for a descending sort or a `-` for an ascending + sort. The accepted attribute names are: `id, name, application_count, + created_on, row_count, storage_usage`. For example `sorts=-id,-name` + will sort the workspaces first by descending id and then ascending + name. A sortparameter with multiple instances of the same sort + attribute will respond with the ERROR_INVALID_SORT_ATTRIBUTE error. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/admin/workspaces/{workspace_id} + method: deleteWorkspaceAndApplications + httpMethod: delete + tag: Admin + typeScriptTag: admin + description: >- + Deletes the specified workspace and the applications inside that + workspace, if the requesting user is staff. + + + This is a **premium** feature. + parameters: + - name: workspaceId + schema: integer + required: true + description: The id of the workspace to delete + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/application/{application_id}/integrations + method: listApplicationIntegrations + httpMethod: get + tag: Integrations + typeScriptTag: integrations + description: >- + Lists all the integrations of the application related to the provided + parameter if the user has access to the related application's workspace. + If the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - name: applicationId + schema: integer + required: true + description: >- + Returns only the integrations of the application related to the + provided Id. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/application/{application_id}/integrations + method: createNewIntegration + httpMethod: post + tag: Integrations + typeScriptTag: integrations + description: Creates a new integration + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: applicationId + schema: integer + required: true + description: >- + Creates an integration for the application related to the provided + value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/application/{application_id}/list-user-source-users + method: listAvailableUsers + httpMethod: get + tag: User sources + typeScriptTag: userSources + description: List per user sources the first 5 users available. + parameters: + - name: applicationId + schema: integer + required: true + description: The application we want the users for. + example: 0 + responses: + - statusCode: '200' + description: The response of the list user source users endpoint. + - statusCode: '404' + description: '' + - url: /api/application/{application_id}/user-sources + method: list + httpMethod: get + tag: User sources + typeScriptTag: userSources + description: >- + Lists all the user_sources of the application related to the provided + parameter if the user has access to the related application's workspace. + If the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - name: applicationId + schema: integer + required: true + description: >- + Returns only the user_sources of the application related to the + provided Id. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/application/{application_id}/user-sources + method: createNewUserSource + httpMethod: post + tag: User sources + typeScriptTag: userSources + description: Creates a new user_source + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: applicationId + schema: integer + required: true + description: >- + Creates an user_source for the application related to the provided + value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/applications + method: listUserApplications + httpMethod: get + tag: Applications + typeScriptTag: applications + description: >- + Lists all the applications that the authorized user has access to. The + properties that belong to the application can differ per type. An + application always belongs to a single workspace. All the applications of + the workspaces that the user has access to are going to be listed here. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /api/applications/{application_id} + method: application + httpMethod: delete + tag: Applications + typeScriptTag: applications + description: >- + Deletes an application if the authorized user is in the application's + workspace. All the related children are also going to be deleted. For + example in case of a database application all the underlying tables, + fields, views and rows are going to be deleted. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: applicationId + schema: integer + required: true + description: Deletes the application related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/applications/{application_id} + method: getApplicationById + httpMethod: get + tag: Applications + typeScriptTag: applications + description: >- + Returns the requested application if the authorized user is in the + application's workspace. The properties that belong to the application can + differ per type. + parameters: + - name: applicationId + schema: integer + required: true + description: Returns the application related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/applications/{application_id} + method: application + httpMethod: patch + tag: Applications + typeScriptTag: applications + description: >- + Updates the existing application related to the provided `application_id` + param if the authorized user is in the application's workspace. It is not + possible to change the type, but properties like the name can be changed. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: applicationId + schema: integer + required: true + description: Updates the application related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/applications/{application_id}/duplicate/async + method: duplicateAsync + httpMethod: post + tag: Applications + typeScriptTag: applications + description: >- + Duplicate an application if the authorized user is in the application's + workspace. All the related children are also going to be duplicated. For + example in case of a database application all the underlying tables, + fields, views and rows are going to be duplicated. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: applicationId + schema: integer + required: true + description: The id of the application to duplicate. + example: 0 + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/applications/group/{group_id} + method: listGroupApplications + httpMethod: get + tag: Applications + typeScriptTag: applications + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_list_applications](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the applications of the group related to the provided `group_id` parameter if the authorized user is in that group. If the group is related to a template, then this endpoint will be publicly accessible. The properties that belong to the application can differ per type. An application always belongs to a single group. + parameters: + - name: groupId + schema: integer + required: true + description: >- + Returns only applications that are in the group related to the + provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/applications/group/{group_id} + method: createGroupApplication + httpMethod: post + tag: Applications + typeScriptTag: applications + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_create_application](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new application based on the provided type. The newly created application is going to be added to the group related to the provided `group_id` parameter. If the authorized user does not belong to the group an error will be returned. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: groupId + schema: integer + required: true + description: Creates an application for the group related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/applications/group/{group_id}/order + method: changeOrderOfGroupApplications + httpMethod: post + tag: Applications + typeScriptTag: applications + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_order_applications](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Changes the order of the provided application ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order of the not provided tables will be set to `0`. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: groupId + schema: integer + required: true + description: >- + Updates the order of the applications in the group related to the + provided value. + example: 0 + - name: application_ids + schema: array + required: true + description: '' + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/applications/workspace/{workspace_id} + method: listUserApplications + httpMethod: get + tag: Applications + typeScriptTag: applications + description: >- + Lists all the applications of the workspace related to the provided + `workspace_id` parameter if the authorized user is in that workspace. If + theworkspace is related to a template, then this endpoint will be publicly + accessible. The properties that belong to the application can differ per + type. An application always belongs to a single workspace. + parameters: + - name: workspaceId + schema: integer + required: true + description: >- + Returns only applications that are in the workspace related to the + provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/applications/workspace/{workspace_id} + method: createApplicationInWorkspace + httpMethod: post + tag: Applications + typeScriptTag: applications + description: >- + Creates a new application based on the provided type. The newly created + application is going to be added to the workspace related to the provided + `workspace_id` parameter. If the authorized user does not belong to the + workspace an error will be returned. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: workspaceId + schema: integer + required: true + description: >- + Creates an application for the workspace related to the provided + value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/applications/workspace/{workspace_id}/order + method: changeApplicationOrder + httpMethod: post + tag: Applications + typeScriptTag: applications + description: >- + Changes the order of the provided application ids to the matching position + that the id has in the list. If the authorized user does not belong to the + workspace it will be ignored. The order of the not provided tables will be + set to `0`. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: workspaceId + schema: integer + required: true + description: >- + Updates the order of the applications in the workspace related to the + provided value. + example: 0 + - name: application_ids + schema: array + required: true + description: '' + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/audit-log + method: listEntries + httpMethod: get + tag: Audit log + typeScriptTag: auditLog + description: |- + Lists all audit log entries for the given workspace id. + + This is a **enterprise** feature. + parameters: + - name: actionType + schema: string + description: Filter the audit log entries by action type. + - name: fromTimestamp + schema: string + description: The ISO timestamp to filter the audit log entries from. + - name: page + schema: integer + description: Defines which page should be returned. + - name: size + schema: integer + description: Defines how many audit log entries should be returned per page. + - name: sorts + schema: string + description: >- + A comma separated string of attributes to sort by, each attribute must + be prefixed with `+` for a descending sort or a `-` for an ascending + sort. The accepted attribute names are: `user, workspace, type, + timestamp, ip_address`. For example `sorts=-user,-workspace` will sort + the audit log entries first by descending user and then ascending + workspace. A sortparameter with multiple instances of the same sort + attribute will respond with the ERROR_INVALID_SORT_ATTRIBUTE error. + - name: toTimestamp + schema: string + description: The ISO timestamp to filter the audit log entries to. + - name: userId + schema: integer + description: Filter the audit log entries by user id. + - name: workspaceId + schema: integer + description: >- + Filter the audit log entries by workspace id. This filter works only + for the admin audit log. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/audit-log/action-types + method: listActionTypes + httpMethod: get + tag: Audit log + typeScriptTag: auditLog + description: |- + List all distinct action types related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - name: search + schema: string + description: >- + If provided only action_types with name that match the query will be + returned. + - name: workspaceId + schema: integer + description: Return action types related to the workspace. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/audit-log/export + method: exportJob + httpMethod: post + tag: Audit log + typeScriptTag: auditLog + description: |- + Creates a job to export the filtered audit log to a CSV file. + + This is a **enterprise** feature. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: url + schema: string + required: true + description: '' + example: URL + - name: export_charset + schema: string + required: false + description: '' + - name: csv_column_separator + schema: string + required: false + description: '' + - name: csv_first_row_header + schema: boolean + required: false + description: '' + default: true + - name: filter_user_id + schema: integer + required: false + description: '' + - name: filter_workspace_id + schema: integer + required: false + description: '' + - name: filter_action_type + schema: string + required: false + description: '' + - name: filter_from_timestamp + schema: string + required: false + description: '' + - name: filter_to_timestamp + schema: string + required: false + description: '' + - name: exclude_columns + schema: string + required: false + description: '' + responses: + - statusCode: '202' + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/audit-log/users + method: listUsers + httpMethod: get + tag: Audit log + typeScriptTag: auditLog + description: |- + List all users that have performed an action in the audit log. + + This is a **enterprise** feature. + parameters: + - name: page + schema: integer + description: Defines which page should be returned. + - name: search + schema: string + description: >- + If provided only users with email that match the query will be + returned. + - name: size + schema: integer + description: Defines how many users should be returned per page. + - name: workspaceId + schema: integer + description: Return users belonging to the given workspace_id. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/audit-log/workspaces + method: listDistinctWorkspaceNames + httpMethod: get + tag: Audit log + typeScriptTag: auditLog + description: |- + List all distinct workspace names related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - name: page + schema: integer + description: Defines which page should be returned. + - name: search + schema: string + description: >- + If provided only workspaces with name that match the query will be + returned. + - name: size + schema: integer + description: Defines how many workspaces should be returned per page. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: No response body + - url: /api/auth-provider/login-options + method: listLoginOptions + httpMethod: get + tag: Auth + typeScriptTag: auth + description: >- + Lists the available login options for the configured authentication + providers. + parameters: [] + responses: + - statusCode: '200' + description: Unspecified response body + - url: /api/builder/{builder_id}/domains + method: getAll + httpMethod: get + tag: Builder domains + typeScriptTag: builderDomains + description: Gets all the domains of a builder + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: builderId + schema: integer + required: true + description: Gets all the domains for the specified builder + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/{builder_id}/domains + method: createNewDomain + httpMethod: post + tag: Builder domains + typeScriptTag: builderDomains + description: Creates a new domain for an application builder + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: builderId + schema: integer + required: true + description: >- + Creates a domain for the application builder related tothe provided + value + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/{builder_id}/domains/order + method: applyOrder + httpMethod: post + tag: Builder domains + typeScriptTag: builderDomains + description: Apply a new order to the domains of a builder + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: builderId + schema: integer + required: true + description: The builder the domain belongs to + example: 0 + - name: domain_ids + schema: array + required: true + description: '' + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/{builder_id}/pages + method: createNewPage + httpMethod: post + tag: Builder pages + typeScriptTag: builderPages + description: Creates a new page for an application builder + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: builderId + schema: integer + required: true + description: >- + Creates a page for the application builder related to the provided + value. + example: 0 + - name: name + schema: string + required: true + description: '' + example: NAME + - name: path + schema: string + required: true + description: '' + example: PATH + - name: path_params + schema: array + required: false + description: '' + responses: + - statusCode: '200' + description: |- + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicPageSerializer + when you update this one. + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/{builder_id}/pages/order + method: applyOrderToPages + httpMethod: post + tag: Builder pages + typeScriptTag: builderPages + description: Apply a new order to the pages of a builder + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: builderId + schema: integer + required: true + description: The builder the page belongs to + example: 0 + - name: page_ids + schema: array + required: true + description: '' + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/{builder_id}/theme + method: updateProperties + httpMethod: patch + tag: Builder theme + typeScriptTag: builderTheme + description: Updates the theme properties for the provided id. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: builderId + schema: integer + required: true + description: >- + Updates the theme for the application builder related to the provided + value. + example: 0 + - name: primary_color + schema: string + description: '' + - name: secondary_color + schema: string + description: '' + - name: border_color + schema: string + description: '' + - name: heading_1_font_size + schema: integer + description: '' + - name: heading_1_color + schema: string + description: '' + - name: heading_2_font_size + schema: integer + description: '' + - name: heading_2_color + schema: string + description: '' + - name: heading_3_font_size + schema: integer + description: '' + - name: heading_3_color + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/data-source/{data_source_id} + method: deleteById + httpMethod: delete + tag: Builder data sources + typeScriptTag: builderDataSources + description: Deletes the data_source related by the given id. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: dataSourceId + schema: integer + required: true + description: The id of the data_source + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/data-source/{data_source_id} + method: updateExistingDataSource + httpMethod: patch + tag: Builder data sources + typeScriptTag: builderDataSources + description: Updates an existing builder data_source. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: dataSourceId + schema: integer + required: true + description: The id of the data_source + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/data-source/{data_source_id}/dispatch + method: dispatchServiceResult + httpMethod: post + tag: Builder data sources + typeScriptTag: builderDataSources + description: Dispatches the service of the related data_source and returns the result. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: dataSourceId + schema: integer + required: true + description: The id of the data_source you want to call the dispatch for + example: 0 + responses: + - statusCode: default + description: '' + - url: /api/builder/data_source/{data_source_id}/move + method: moveDataSource + httpMethod: patch + tag: Builder data sources + typeScriptTag: builderDataSources + description: >- + Moves the data_source in the page before another data_source or at the end + of the page if no before data_source is given. The data_sources must + belong to the same page. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: dataSourceId + schema: integer + required: true + description: The id of the data_source to move + example: 0 + - name: before_id + schema: integer + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/domains/{domain_id} + method: removeExistingDomain + httpMethod: delete + tag: Builder domains + typeScriptTag: builderDomains + description: Deletes an existing domain of an application builder + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: domainId + schema: integer + required: true + description: The id of the domain + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/domains/{domain_id} + method: updateExistingDomain + httpMethod: patch + tag: Builder domains + typeScriptTag: builderDomains + description: Updates an existing domain of an application builder + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: domainId + schema: integer + required: true + description: The id of the domain + example: 0 + - name: type + schema: string + description: '' + - name: domain_name + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/domains/{domain_id}/publish/async + method: startPublishJob + httpMethod: post + tag: Builder domains + typeScriptTag: builderDomains + description: >- + This endpoint starts an asynchronous job to publish the builder. The job + clones the current version of the given builder and publish it for the + given domain. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: domainId + schema: integer + required: true + description: The builder application id the user wants to publish. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/domains/ask-public-domain-exists + method: checkDomainExists + httpMethod: get + tag: Builder domains + typeScriptTag: builderDomains + description: >- + This endpoint can be used to check whether a domain exists for SSL + certificate purposes. It's compatible with the Caddy on_demand TLS as + described here: + https://caddyserver.com/docs/json/apps/tls/automation/on_demand/ask/. It + will respond with a 200 status code if it exists or a 404 if it doesn't + exist. + parameters: + - name: domain + schema: integer + description: The domain name for which + responses: + - statusCode: '200' + description: No response body + - statusCode: '404' + description: No response body + - url: /api/builder/domains/published/by_id/{builder_id} + method: serializedVersionById + httpMethod: get + tag: Builder public + typeScriptTag: builderPublic + description: >- + Returns the public serialized version of the builder and its pages for the + given builder id. + parameters: + - name: builderId + schema: integer + required: true + description: Returns the builder related to the provided Id and its pages. + example: 0 + responses: + - statusCode: '200' + description: >- + A public version of the builder serializer with less data to prevent + data leaks. + - statusCode: '404' + description: '' + - url: /api/builder/domains/published/by_name/{domain_name} + method: serializedVersion + httpMethod: get + tag: Builder public + typeScriptTag: builderPublic + description: >- + Returns the public serialized version of the builder for the given domain + name and its pages . + parameters: + - name: domainName + schema: string + required: true + description: Returns the builder published for the given domain name. + example: DOMAIN_NAME + responses: + - statusCode: '200' + description: >- + A public version of the builder serializer with less data to prevent + data leaks. + - statusCode: '404' + description: '' + - url: /api/builder/domains/published/page/{page_id}/data_sources + method: listPageDataSources + httpMethod: get + tag: Builder data sources + typeScriptTag: builderDataSources + description: >- + Lists all the data_sources of the page related to the provided parameter + if the builder is public. + parameters: + - name: pageId + schema: integer + required: true + description: >- + Returns only the data_sources of the page related to the provided Id + if the related builder is public. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/domains/published/page/{page_id}/elements + method: getPageElements + httpMethod: get + tag: Builder elements + typeScriptTag: builderElements + description: >- + Lists all the elements of the page related to the provided parameter. If + the user is Anonymous, the page must belong to a published builder + instance to being accessible. + parameters: + - name: pageId + schema: integer + required: true + description: Returns the elements of the page related to the provided Id. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/domains/published/page/{page_id}/workflow_actions + method: listPageWorkflowActions + httpMethod: get + tag: Builder workflow actions + typeScriptTag: builderWorkflowActions + description: >- + Lists all the workflow actions with their public accessible data. Some + configuration might be omitted for security reasons such as passwords or + PII. + parameters: + - name: pageId + schema: integer + required: true + description: >- + Returns only the public workflow actions of the page related to the + provided Id. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/element/{element_id} + method: removeElementById + httpMethod: delete + tag: Builder elements + typeScriptTag: builderElements + description: Deletes the element related by the given id. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: elementId + schema: integer + required: true + description: The id of the element + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/element/{element_id} + method: updateExistingElement + httpMethod: patch + tag: Builder elements + typeScriptTag: builderElements + description: Updates an existing builder element. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: elementId + schema: integer + required: true + description: The id of the element + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/element/{element_id}/duplicate + method: duplicateElementChildren + httpMethod: post + tag: Builder elements + typeScriptTag: builderElements + description: >- + Duplicates an element and all of the elements children and the associated + workflow actions as well. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: elementId + schema: integer + required: true + description: The id of the element to duplicate + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/element/{element_id}/move + method: moveElement + httpMethod: patch + tag: Builder elements + typeScriptTag: builderElements + description: >- + Moves the element in the page before another element or at the end of the + page if no before element is given. The elements must belong to the same + page. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: elementId + schema: integer + required: true + description: The id of the element to move + example: 0 + - name: before_id + schema: integer + description: '' + - name: parent_element_id + schema: integer + description: '' + - name: place_in_container + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/page/{page_id}/data-sources + method: listPageDataSources + httpMethod: get + tag: Builder data sources + typeScriptTag: builderDataSources + description: >- + Lists all the data_sources of the page related to the provided parameter + if the user has access to the related builder's workspace. If the + workspace is related to a template, then this endpoint will be publicly + accessible. + parameters: + - name: pageId + schema: integer + required: true + description: Returns only the data_sources of the page related to the provided Id. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/page/{page_id}/data-sources + method: createNew + httpMethod: post + tag: Builder data sources + typeScriptTag: builderDataSources + description: Creates a new builder data_source + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: pageId + schema: integer + required: true + description: >- + Creates a data_source for the builder page related to the provided + value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/page/{page_id}/dispatch-data-sources + method: dispatchPageDataSources + httpMethod: post + tag: Builder data sources + typeScriptTag: builderDataSources + description: Dispatches the service of the related page data_sources + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: pageId + schema: integer + required: true + description: The page we want to dispatch the data source for. + example: 0 + responses: + - statusCode: default + description: '' + - url: /api/builder/page/{page_id}/elements + method: getPageElements + httpMethod: get + tag: Builder elements + typeScriptTag: builderElements + description: >- + Lists all the elements of the page related to the provided parameter if + the user has access to the related builder's workspace. If the workspace + is related to a template, then this endpoint will be publicly accessible. + parameters: + - name: pageId + schema: integer + required: true + description: Returns only the elements of the page related to the provided Id. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/page/{page_id}/elements + method: createNewElement + httpMethod: post + tag: Builder elements + typeScriptTag: builderElements + description: Creates a new builder element + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: pageId + schema: integer + required: true + description: Creates an element for the builder page related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/page/{page_id}/workflow_actions + method: listPageWorkflowActions + httpMethod: get + tag: Builder workflow actions + typeScriptTag: builderWorkflowActions + description: >- + Lists all the workflow actions of the page related to the provided + parameter if the user has access to the related builder's workspace. If + the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - name: pageId + schema: integer + required: true + description: >- + Returns only the workflow actions of the page related to the provided + Id. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/page/{page_id}/workflow_actions + method: createNewAction + httpMethod: post + tag: Builder workflow actions + typeScriptTag: builderWorkflowActions + description: Creates a new builder workflow action + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: pageId + schema: integer + required: true + description: >- + Creates a workflow action for the builder page related to the provided + value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/page/{page_id}/workflow_actions/order + method: applyNewOrder + httpMethod: post + tag: Builder workflow actions + typeScriptTag: builderWorkflowActions + description: Apply a new order to the workflow actions of a page + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: pageId + schema: integer + required: true + description: The page the workflow actions belong to + example: 0 + - name: workflow_action_ids + schema: array + required: true + description: '' + - name: element_id + schema: integer + required: false + description: '' + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/pages/{page_id} + method: deletePage + httpMethod: delete + tag: Builder pages + typeScriptTag: builderPages + description: Deletes an existing page of an application builder + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: pageId + schema: integer + required: true + description: The id of the page + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/pages/{page_id} + method: updateExistingPage + httpMethod: patch + tag: Builder pages + typeScriptTag: builderPages + description: Updates an existing page of an application builder + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: pageId + schema: integer + required: true + description: The id of the page + example: 0 + - name: name + schema: string + description: '' + - name: path + schema: string + description: '' + - name: path_params + schema: array + description: '' + responses: + - statusCode: '200' + description: |- + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicPageSerializer + when you update this one. + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/pages/{page_id}/duplicate/async + method: startDuplicationJob + httpMethod: post + tag: Builder pages + typeScriptTag: builderPages + description: >- + Start a job to duplicate the page with the provided `page_id` parameter if + the authorized user has access to the builder's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: pageId + schema: integer + required: true + description: The page to duplicate. + example: 0 + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/workflow_action/{workflow_action_id} + method: deleteWorkflowActionById + httpMethod: delete + tag: Builder workflow actions + typeScriptTag: builderWorkflowActions + description: Deletes the workflow action related by the given id. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: workflowActionId + schema: integer + required: true + description: The id of the workflow action + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/workflow_action/{workflow_action_id} + method: updateExistingAction + httpMethod: patch + tag: Builder workflow actions + typeScriptTag: builderWorkflowActions + description: Updates an existing builder workflow action. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: workflowActionId + schema: integer + required: true + description: The id of the workflow action + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/builder/workflow_action/{workflow_action_id}/dispatch + method: dispatchServiceResult + httpMethod: post + tag: Builder workflow actions + typeScriptTag: builderWorkflowActions + description: >- + Dispatches the service of the related workflow_action and returns the + result. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: workflowActionId + schema: integer + required: true + description: The id of the workflow_action you want to call the dispatch for. + example: 0 + responses: + - statusCode: default + description: '' + - url: /api/database/export/{job_id} + method: exportJobDetails + httpMethod: get + tag: Database table export + typeScriptTag: databaseTableExport + description: >- + Returns information such as export progress and state or the url of the + exported file for the specified export job, only if the requesting user + has access. + parameters: + - name: jobId + schema: integer + required: true + description: The job id to lookup information about. + example: 0 + responses: + - statusCode: '200' + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + - statusCode: '404' + description: '' + - url: /api/database/export/table/{table_id} + method: table + httpMethod: post + tag: Database table export + typeScriptTag: databaseTableExport + description: >- + Creates and starts a new export job for a table given some exporter + options. Returns an error if the requesting user does not have + permissionsto view the table. + parameters: + - name: tableId + schema: integer + required: true + description: The table id to create and start an export job for + example: 0 + responses: + - statusCode: '200' + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/fields/{field_id} + method: deleteField + httpMethod: delete + tag: Database table fields + typeScriptTag: databaseTableFields + description: >- + Deletes the existing field if the authorized user has access to the + related database's workspace. Note that all the related data to that field + is also deleted. Primary fields cannot be deleted because their value + represents the row. If deleting the field causes other fields to change + then the specificinstances of those fields will be included in the related + fields response key. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: fieldId + schema: integer + required: true + description: Deletes the field related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/fields/{field_id} + method: getFieldProperties + httpMethod: get + tag: Database table fields + typeScriptTag: databaseTableFields + description: >- + Returns the existing field if the authorized user has access to the + related database's workspace. Depending on the type different properties + could be returned. + parameters: + - name: fieldId + schema: integer + required: true + description: Returns the field related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/fields/{field_id} + method: updateField + httpMethod: patch + tag: Database table fields + typeScriptTag: databaseTableFields + description: >- + Updates the existing field if the authorized user has access to the + related database's workspace. The type can also be changed and depending + on that type, different additional properties can optionally be set. If + you change the field type it could happen that the data conversion fails, + in that case the `ERROR_CANNOT_CHANGE_FIELD_TYPE` is returned, but this + rarely happens. If a data value cannot be converted it is set to `null` so + data might go lost.If updated the field causes other fields to change then + the specificinstances of those fields will be included in the related + fields response key. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: fieldId + schema: integer + required: true + description: Updates the field related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/fields/{field_id}/duplicate/async + method: duplicateAsync + httpMethod: post + tag: Database table fields + typeScriptTag: databaseTableFields + description: >- + Duplicates the table with the provided `table_id` parameter if the + authorized user has access to the database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: fieldId + schema: integer + required: true + description: The field to duplicate. + example: 0 + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/fields/{field_id}/unique_row_values + method: getUniqueRowValues + httpMethod: get + tag: Database table fields + typeScriptTag: databaseTableFields + description: >- + Returns a list of all the unique row values for an existing field, sorted + in order of frequency. + parameters: + - name: fieldId + schema: integer + required: true + description: Returns the values related to the provided field. + example: 0 + - name: limit + schema: integer + description: Defines how many values should be returned. + - name: splitCommaSeparated + schema: boolean + description: >- + Indicates whether the original column values must be splitted by + comma. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/fields/table/{table_id} + method: getTableFields + httpMethod: get + tag: Database table fields + typeScriptTag: databaseTableFields + description: >- + Lists all the fields of the table related to the provided parameter if the + user has access to the related database's workspace. If the workspace is + related to a template, then this endpoint will be publicly accessible. A + table consists of fields and each field can have a different type. Each + type can have different properties. A field is comparable with a regular + table's column. + parameters: + - name: tableId + schema: integer + required: true + description: Returns only the fields of the table related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/fields/table/{table_id} + method: createNewField + httpMethod: post + tag: Database table fields + typeScriptTag: databaseTableFields + description: >- + Creates a new field for the table related to the provided `table_id` + parameter if the authorized user has access to the related database's + workspace. Depending on the type, different properties can optionally be + set.If creating the field causes other fields to change then the + specificinstances of those fields will be included in the related fields + response key. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: tableId + schema: integer + required: true + description: Creates a new field for the provided table related to the value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/formula/{table_id}/type + method: calculateFormulaType + httpMethod: post + tag: Database table fields + typeScriptTag: databaseTableFields + description: >- + Calculates and returns the type of the specified formula value. Does not + change the state of the field in any way. + parameters: + - name: tableId + schema: integer + required: true + description: The table id of the formula field to type. + example: 0 + - name: formula + schema: string + required: true + description: '' + example: FORMULA + - name: name + schema: string + required: true + description: '' + example: NAME + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/names + method: getNamesOfRow + httpMethod: get + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Returns the names of the given row of the given tables. The nameof a row + is the primary field value for this row. The result can be usedfor + example, when you want to display the name of a linked row from another + table. + parameters: + - name: table_{id} + schema: string + description: >- + A list of comma separated row ids to query from the table with id + {id}. For example, if you want the name of row `42` and `43` from + table `28` this parameter will be `table__28=42,43`. You can specify + multiple rows for different tables but every tables must be in the + same database. You need at least read permission on all specified + tables. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id} + method: listTableRows + httpMethod: get + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Lists all the rows of the table related to the provided parameter if the + user has access to the related database's workspace. The response is + paginated by a page/size style. It is also possible to provide an optional + search query, only rows where the data matches the search query are going + to be returned then. The properties of the returned rows depends on which + fields the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. Or if the GET parameter + `user_field_names` is provided then the keys will be the name of the + field. The value is what the user has provided and the format of it + depends on the fields type. + parameters: + - name: exclude + schema: string + description: >- + All the fields are included in the response by default. You can select + a subset of fields by providing the exclude query parameter. If you + for example provide the following GET parameter + `exclude=field_1,field_2` then the fields with id `1` and id `2` are + going to be excluded from the selection and response. If the + `user_field_names` parameter is provided then instead exclude should + be a comma separated list of the actual field names. For field names + with commas you should surround the name with quotes like so: + `exclude=My Field,"Field With , "`. A backslash can be used to escape + field names which contain double quotes like so: `exclude=My + Field,Field with \"`. + - name: filter_{field}_{filter} + schema: 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - name: filterType + schema: 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. + + - name: filters + schema: 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - name: include + schema: string + description: >- + All the fields are included in the response by default. You can select + a subset of fields by providing the include query parameter. If you + for example provide the following GET parameter + `include=field_1,field_2` then only the fields withid `1` and id `2` + are going to be selected and included in the response. If the + `user_field_names` parameter is provided then instead include should + be a comma separated list of the actual field names. For field names + with commas you should surround the name with quotes like so: + `include=My Field,"Field With , "`. A backslash can be used to escape + field names which contain double quotes like so: `include=My + Field,Field with \"`. + - name: orderBy + schema: string + description: >- + Optionally the rows can be ordered by provided field ids separated by + comma. By default a field is ordered in ascending + (https://baserow.io/docs/index order, but by prepending the field with + a '-' it can be ordered descending (https://baserow.io/docs/index. If + the `user_field_names` parameter is provided then instead order_by + should be a comma separated list of the actual field names. For field + names with commas you should surround the name with quotes like so: + `order_by=My Field,"Field With , "`. A backslash can be used to escape + field names which contain double quotes like so: `order_by=My + Field,Field with \"`. + - name: page + schema: integer + description: Defines which page of rows should be returned. + - name: search + schema: string + description: >- + If provided only rows with data that matches the search query are + going to be returned. + - name: searchMode + schema: string + description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` is + used, then Postgres full-text search is used. If `compat` is provided + then the search term will be exactly searched for including whitespace + on each cell. This is the Baserow legacy search behaviour. + - name: size + schema: integer + description: Defines how many rows should be returned per page. + - name: tableId + schema: integer + required: true + description: Returns the rows of the table related to the provided value. + example: 0 + - name: userFieldNames + schema: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field names + (field_123 etc). + - name: viewId + schema: integer + description: Includes all the filters and sorts of the provided view. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id} + method: createRow + httpMethod: post + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Creates a new row in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** to list them all. None of the fields are + required, if they are not provided the value is going to be `null` or + `false` or some default value is that is set. If you want to add a value + for the field with for example id `10`, the key must be named `field_10`. + Or instead if the `user_field_names` GET param is provided the key must be + the name of the field. Of course multiple fields can be provided in one + request. In the examples below you will find all the different field + types, the numbers/ids in the example are just there for example purposes, + the field_ID must be replaced with the actual id of the field or the name + of the field if `user_field_names` is provided. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: before + schema: integer + description: >- + If provided then the newly created row will be positioned before the + row with the provided id. + - name: tableId + schema: integer + required: true + description: Creates a row in the table related to the provided value. + example: 0 + - name: userFieldNames + schema: boolean + description: >- + A flag query parameter which if provided this endpoint will expect and + return the user specified field names instead of internal Baserow + field names (field_123 etc). + - name: field_1 + schema: string + description: '' + - name: field_2 + schema: string + description: '' + - name: field_3 + schema: string + description: '' + - name: field_4 + schema: string + description: '' + - name: field_5 + schema: string + description: '' + - name: field_6 + schema: integer + description: '' + default: 0 + - name: field_7 + schema: boolean + description: '' + default: false + - name: field_8 + schema: string + description: '' + - name: field_13 + schema: number + description: '' + - name: field_14 + schema: array + description: '' + - name: field_15 + schema: array + description: '' + - name: field_16 + schema: integer + description: '' + - name: field_17 + schema: array + description: '' + - name: field_18 + schema: string + description: '' + - name: field_23 + schema: array + description: '' + - name: field_26 + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id}/{row_id} + method: deleteRow + httpMethod: delete + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Deletes an existing row in the table if the user has access to the table's + workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: rowId + schema: integer + required: true + description: Deletes the row related to the value. + example: 0 + - name: tableId + schema: integer + required: true + description: Deletes the row in the table related to the value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id}/{row_id} + method: getRowByTableIdAndRowId + httpMethod: get + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Fetches an existing row from the table if the user has access to the + related table's workspace. The properties of the returned row depend on + which fields the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field of the field. Or if the GET parameter + `user_field_names` is provided then the keys will be the name of the + field. The value is what the user has provided and the format of it + depends on the fields type. + parameters: + - name: rowId + schema: integer + required: true + description: Returns the row related the provided value. + example: 0 + - name: tableId + schema: integer + required: true + description: Returns the row of the table related to the provided value. + example: 0 + - name: userFieldNames + schema: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field names + (field_123 etc). + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id}/{row_id} + method: updateRow + httpMethod: patch + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Updates an existing row in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. None of the + fields are required, if they are not provided the value is not going to be + updated. When you want to update a value for the field with id `10`, the + key must be named `field_10`. Or if the GET parameter `user_field_names` + is provided the key of the field to update must be the name of the field. + Multiple different fields to update can be provided in one request. In the + examples below you will find all the different field types, the + numbers/ids in the example are just there for example purposes, the + field_ID must be replaced with the actual id of the field or the name of + the field if `user_field_names` is provided. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: rowId + schema: integer + required: true + description: Updates the row related to the value. + example: 0 + - name: tableId + schema: integer + required: true + description: Updates the row in the table related to the value. + example: 0 + - name: userFieldNames + schema: boolean + description: >- + A flag query parameter which if provided this endpoint will expect and + return the user specified field names instead of internal Baserow + field names (field_123 etc). + - name: field_1 + schema: string + description: '' + - name: field_2 + schema: string + description: '' + - name: field_3 + schema: string + description: '' + - name: field_4 + schema: string + description: '' + - name: field_5 + schema: string + description: '' + - name: field_6 + schema: integer + description: '' + default: 0 + - name: field_7 + schema: boolean + description: '' + default: false + - name: field_8 + schema: string + description: '' + - name: field_13 + schema: number + description: '' + - name: field_14 + schema: array + description: '' + - name: field_15 + schema: array + description: '' + - name: field_16 + schema: integer + description: '' + - name: field_17 + schema: array + description: '' + - name: field_18 + schema: string + description: '' + - name: field_23 + schema: array + description: '' + - name: field_26 + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id}/{row_id}/adjacent + method: getAdjacentRow + httpMethod: get + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Fetches the adjacent row to a given row_id in the table with the given + table_id. If the previous flag is set it will return the previous row, + otherwise it will return the next row. You can specifya view_id and it + will apply the filters and sorts of the provided view. + parameters: + - name: previous + schema: boolean + description: >- + A flag query parameter which if provided returns theprevious row to + the specified row_id. If it's not setit will return the next row. + - name: rowId + schema: integer + required: true + description: Returns the row adjacent the provided value. + example: 0 + - name: search + schema: string + description: >- + If provided, the adjacent row will be one that matchesthe search + query. + - name: searchMode + schema: string + description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` is + used, then Postgres full-text search is used. If `compat` is provided + then the search term will be exactly searched for including whitespace + on each cell. This is the Baserow legacy search behaviour. + - name: tableId + schema: integer + required: true + description: Returns the row of the table related to the provided value. + example: 0 + - name: userFieldNames + schema: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field names + (field_123 etc). + - name: viewId + schema: integer + description: Applies the filters and sorts of the provided view. + responses: + - statusCode: '200' + description: '' + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id}/{row_id}/history + method: getRowChangeHistory + httpMethod: get + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Fetches the row change history of a given row_id in the table with the + given table_id. The row change history is paginated and can be limited + with the limit and offset query parameters. + parameters: + - name: limit + schema: integer + description: The maximum number of row change history entries to return. + - name: offset + schema: integer + description: The offset of the row change history entries to return. + - name: rowId + schema: integer + required: true + description: The id of the row to fetch the change history from. + example: 0 + - name: tableId + schema: integer + required: true + description: The id of the table to fetch the row change history from. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id}/{row_id}/move + method: moveRowTo + httpMethod: patch + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Moves the row related to given `row_id` parameter to another position. It + is only possible to move the row before another existing row or to the + end. If the `before_id` is provided then the row related to the `row_id` + parameter is moved before that row. If the `before_id` parameter is not + provided, then the row will be moved to the end. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: beforeId + schema: integer + description: >- + Moves the row related to the given `row_id` before the row related to + the provided value. If not provided, then the row will be moved to the + end. + - name: rowId + schema: integer + required: true + description: Moves the row related to the value. + example: 0 + - name: tableId + schema: integer + required: true + description: Moves the row in the table related to the value. + example: 0 + - name: userFieldNames + schema: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field names + (field_123 etc). + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id}/batch + method: updateBatchRows + httpMethod: patch + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Updates existing rows in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. None of the + fields are required, if they are not provided the value is not going to be + updated. When you want to update a value for the field with id `10`, the + key must be named `field_10`. Or if the GET parameter `user_field_names` + is provided the key of the field to update must be the name of the field. + Multiple different fields to update can be provided for each row. In the + examples below you will find all the different field types, the + numbers/ids in the example are just there for example purposes, the + field_ID must be replaced with the actual id of the field or the name of + the field if `user_field_names` is provided. + + **WARNING:** This endpoint doesn't yet work with row updated webhooks. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: tableId + schema: integer + required: true + description: Updates the rows in the table. + example: 0 + - name: userFieldNames + schema: boolean + description: >- + A flag query parameter which if provided this endpoint will expect and + return the user specified field names instead of internal Baserow + field names (field_123 etc). + - name: items + schema: array + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id}/batch + method: createBatchRows + httpMethod: post + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Creates new rows in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** to list them all. None of the fields are + required, if they are not provided the value is going to be `null` or + `false` or some default value is that is set. If you want to add a value + for the field with for example id `10`, the key must be named `field_10`. + Or instead if the `user_field_names` GET param is provided the key must be + the name of the field. Of course multiple fields can be provided in one + request. In the examples below you will find all the different field + types, the numbers/ids in the example are just there for example purposes, + the field_ID must be replaced with the actual id of the field or the name + of the field if `user_field_names` is provided. + + **WARNING:** This endpoint doesn't yet work with row created webhooks. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: before + schema: integer + description: >- + If provided then the newly created rows will be positioned before the + row with the provided id. + - name: tableId + schema: integer + required: true + description: Creates the rows in the table. + example: 0 + - name: userFieldNames + schema: boolean + description: >- + A flag query parameter which if provided this endpoint will expect and + return the user specified field names instead of internal Baserow + field names (field_123 etc). + - name: items + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/rows/table/{table_id}/batch-delete + method: batchDelete + httpMethod: post + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Deletes existing rows in the table if the user has access to the table's + workspace. + + **WARNING:** This endpoint doesn't yet work with row deleted webhooks. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: tableId + schema: integer + required: true + description: Deletes the rows in the table related to the value. + example: 0 + - name: items + schema: array + required: true + description: '' + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tables/{table_id} + method: deleteTable + httpMethod: delete + tag: Database tables + typeScriptTag: databaseTables + description: >- + Deletes the existing table if the authorized user has access to the + related database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: tableId + schema: integer + required: true + description: Deletes the table related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tables/{table_id} + method: getTable + httpMethod: get + tag: Database tables + typeScriptTag: databaseTables + description: >- + Returns the requested table if the authorized user has access to the + related database's workspace. + parameters: + - name: tableId + schema: integer + required: true + description: Returns the table related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tables/{table_id} + method: updateTable + httpMethod: patch + tag: Database tables + typeScriptTag: databaseTables + description: >- + Updates the existing table if the authorized user has access to the + related database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: tableId + schema: integer + required: true + description: Updates the table related to the provided value. + example: 0 + - name: name + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tables/{table_id}/duplicate/async + method: duplicateAsyncJob + httpMethod: post + tag: Database tables + typeScriptTag: databaseTables + description: >- + Start a job to duplicate the table with the provided `table_id` parameter + if the authorized user has access to the database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: tableId + schema: integer + required: true + description: The table to duplicate. + example: 0 + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tables/{table_id}/import/async + method: importAsyncJob + httpMethod: post + tag: Database tables + typeScriptTag: databaseTables + description: >- + Import data in the specified table if the authorized user has access to + the related database's workspace. This endpoint is asynchronous and return + the created job to track the progress of the task. + parameters: + - name: tableId + schema: integer + required: true + description: Import data into the table related to the provided value. + example: 0 + - name: data + schema: array + required: true + description: '' + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tables/database/{database_id} + method: listByDatabaseId + httpMethod: get + tag: Database tables + typeScriptTag: databaseTables + description: >- + Lists all the tables that are in the database related to the `database_id` + parameter if the user has access to the database's workspace. A table is + exactly as the name suggests. It can hold multiple fields, each having + their own type and multiple rows. They can be added via the + **create_database_table_field** and **create_database_table_row** + endpoints. + parameters: + - name: databaseId + schema: integer + required: true + description: Returns only tables that are related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tables/database/{database_id} + method: createTable + httpMethod: post + tag: Database tables + typeScriptTag: databaseTables + description: >- + Creates synchronously a new table for the database related to the provided + `database_id` parameter if the authorized user has access to the + database's workspace. + + + As an alternative you can use the `create_async_database_table` for better + performances and importing bigger files. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: databaseId + schema: integer + required: true + description: Creates a table for the database related to the provided value. + example: 0 + - name: name + schema: string + required: true + description: '' + example: NAME + - name: data + schema: array + required: false + description: '' + - name: first_row_header + schema: boolean + required: false + description: '' + default: false + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tables/database/{database_id}/async + method: createTableJob + httpMethod: post + tag: Database tables + typeScriptTag: databaseTables + description: >- + Creates a job that creates a new table for the database related to the + provided `database_id` parameter if the authorized user has access to the + database's workspace. This endpoint is asynchronous and return the created + job to track the progress of the task. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: databaseId + schema: integer + required: true + description: Creates a table for the database related to the provided value. + example: 0 + - name: name + schema: string + required: true + description: '' + example: NAME + - name: data + schema: array + required: false + description: '' + - name: first_row_header + schema: boolean + required: false + description: '' + default: false + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tables/database/{database_id}/order + method: updateTableOrder + httpMethod: post + tag: Database tables + typeScriptTag: databaseTables + description: >- + Changes the order of the provided table ids to the matching position that + the id has in the list. If the authorized user does not belong to the + workspace it will be ignored. The order of the not provided tables will be + set to `0`. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: databaseId + schema: integer + required: true + description: >- + Updates the order of the tables in the database related to the + provided value. + example: 0 + - name: table_ids + schema: array + required: true + description: '' + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tokens + method: list + httpMethod: get + tag: Database tokens + typeScriptTag: databaseTokens + description: >- + Lists all the database tokens that belong to the authorized user. A token + can be used to create, read, update and delete rows in the tables of the + token's workspace. It only works on the tables if the token has the + correct permissions. The **Database table rows** endpoints can be used for + these operations. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/database/tokens + method: createNewToken + httpMethod: post + tag: Database tokens + typeScriptTag: databaseTokens + description: >- + Creates a new database token for a given workspace and for the authorized + user. + parameters: + - name: name + schema: string + required: true + description: '' + example: NAME + - name: group + schema: string + required: true + description: '' + example: GROUP + - name: workspace + schema: integer + required: true + description: '' + example: 0 + responses: + - statusCode: '200' + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + - statusCode: '400' + description: '' + - url: /api/database/tokens/{token_id} + method: deleteToken + httpMethod: delete + tag: Database tokens + typeScriptTag: databaseTokens + description: >- + Deletes the existing database token if it is owned by the authorized user + and ifthe user has access to the related workspace. + parameters: + - name: tokenId + schema: integer + required: true + description: Deletes the database token related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tokens/{token_id} + method: getToken + httpMethod: get + tag: Database tokens + typeScriptTag: databaseTokens + description: >- + Returns the requested database token if it is owned by the authorized user + andif the user has access to the related workspace. + parameters: + - name: tokenId + schema: integer + required: true + description: Returns the database token related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tokens/{token_id} + method: updateTokenOwnership + httpMethod: patch + tag: Database tokens + typeScriptTag: databaseTokens + description: >- + Updates the existing database token if it is owned by the authorized user + and ifthe user has access to the related workspace. + parameters: + - name: tokenId + schema: integer + required: true + description: Updates the database token related to the provided value. + example: 0 + - name: name + schema: string + description: '' + - name: permissions + schema: object + description: '' + - name: rotate_key + schema: boolean + description: '' + default: false + responses: + - statusCode: '200' + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/tokens/check + method: verifyTokenValidity + httpMethod: get + tag: Database tokens + typeScriptTag: databaseTokens + description: >- + This endpoint check be used to check if the provided personal API token is + valid. If returns a `200` response if so and a `403` is not. This can be + used by integrations like Zapier or n8n to test if a token is valid. + parameters: [] + responses: + - statusCode: '200' + description: No response body + - statusCode: '403' + description: '' + - url: /api/database/views/{slug}/link-row-field-lookup/{field_id} + method: getLinkRowFieldValue + httpMethod: get + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + If the view is publicly shared or if an authenticated user has access to + the related workspace, then this endpoint can be used to do a value lookup + of the link row fields that are included in the view. Normally it is not + possible for a not authenticated visitor to fetch the rows of a table. + This endpoint makes it possible to fetch the id and primary field value of + the related table of a link row included in the view. + parameters: + - name: fieldId + schema: integer + required: true + description: The field id of the link row field. + example: 0 + - name: search + schema: string + description: >- + If provided only rows with data that matches the search query are + going to be returned. + - name: searchMode + schema: string + description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` is + used, then Postgres full-text search is used. If `compat` is provided + then the search term will be exactly searched for including whitespace + on each cell. This is the Baserow legacy search behaviour. + - name: slug + schema: string + required: true + description: The slug related to the view. + example: SLUG + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{slug}/public/auth + method: generateToken + httpMethod: post + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Returns a valid never-expiring JWT token for this public shared view if + the password provided matches with the one saved by the view's owner. + parameters: + - name: slug + schema: string + required: true + description: The slug of the grid view to get public information about. + example: SLUG + - name: password + schema: string + required: true + description: '' + example: PASSWORD + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{slug}/public/info + method: getPublicInfo + httpMethod: get + tag: Database table views + typeScriptTag: databaseTableViews + description: Returns the required public information to display a single shared view. + parameters: + - name: slug + schema: string + required: true + description: The slug of the view to get public information about. + example: SLUG + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id} + method: deleteView + httpMethod: delete + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Deletes the existing view. Note that all the related settings of the view + are going to be deleted also. The data stays intact after deleting the + view because this is related to the table and not the view. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewId + schema: integer + required: true + description: Deletes the view related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id} + method: getViewById + httpMethod: get + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Returns the existing view. Depending on the type different propertiescould + be returned. + parameters: + - name: include + schema: string + description: >- + A comma separated list of extra attributes to include on the returned + view. The supported attributes are `filters`, `sortings` and + `decorations`. For example `include=filters,sortings` will add the + attributes `filters` and `sortings` to every returned view, containing + a list of the views filters and sortings respectively. + - name: viewId + schema: integer + required: true + description: Returns the view related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id} + method: updateView + httpMethod: patch + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Updates the existing view. The type cannot be changed. It depends on the + existing type which properties can be changed. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: include + schema: string + description: >- + A comma separated list of extra attributes to include on the returned + view. The supported attributes are `filters`, `sortings` and + `decorations`. For example `include=filters,sortings` will add the + attributes `filters` and `sortings` to every returned view, containing + a list of the views filters and sortings respectively. + - name: viewId + schema: integer + required: true + description: Updates the view related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/decorations + method: list + httpMethod: get + tag: Database table view decorations + typeScriptTag: databaseTableViewDecorations + description: >- + Lists all decorations of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple decorations. View decorators can be used to decorate rows. This + can, for example, be used to change the border or background color of a + row if it matches certain conditions. + parameters: + - name: viewId + schema: integer + required: true + description: Returns only decoration of the view given to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/decorations + method: createNew + httpMethod: post + tag: Database table view decorations + typeScriptTag: databaseTableViewDecorations + description: >- + Creates a new decoration for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewId + schema: integer + required: true + description: Creates a decoration for the view related to the given value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/duplicate + method: duplicateView + httpMethod: post + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Duplicates an existing view if the user has access to it. When a view is + duplicated everything is copied except: + + - The name is appended with the copy number. Ex: + `ViewName`->`ViewName(https://baserow.io/docs/index` and + `View(https://baserow.io/docs/index`->`View(https://baserow.io/docs/index` + + - If the original view is publicly shared, the new view will not be shared + anymore + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewId + schema: integer + required: true + description: Duplicates the view related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/field-options + method: getFieldOptions + httpMethod: get + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Responds with the fields options of the provided view if the authenticated + user has access to the related workspace. + parameters: + - name: viewId + schema: integer + required: true + description: Responds with field options related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/field-options + method: updateFieldOptions + httpMethod: patch + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Updates the field options of a view. The field options differ per field + type This could for example be used to update the field width of a `grid` + view if the user changes it. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewId + schema: integer + required: true + description: Updates the field options related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/filter-groups + method: createNewFilterGroup + httpMethod: post + tag: Database table view filters + typeScriptTag: databaseTableViewFilters + description: >- + Creates a new filter group for the view related to the provided `view_id` + parameter. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewId + schema: integer + required: true + description: The ID of the view where create the new filter group. + example: 0 + - name: filter_type + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/filters + method: getList + httpMethod: get + tag: Database table view filters + typeScriptTag: databaseTableViewFilters + description: >- + Lists all filters of the view related to the provided `view_id`. A view + can have multiple filters. When all the rows are requested for the view + only those that apply to the filters are returned. + parameters: + - name: viewId + schema: integer + required: true + description: Returns only filters of the view related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/filters + method: createNewFilter + httpMethod: post + tag: Database table view filters + typeScriptTag: databaseTableViewFilters + description: >- + Creates a new filter for the view related to the provided `view_id` + parameter. When the rows of a view are requested, for example via the + `list_database_table_grid_view_rows` endpoint, then only the rows that + apply to all the filters are going to be returned. A filter compares the + value of a field to the value of a filter. It depends on the type how + values are going to be compared. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewId + schema: integer + required: true + description: Creates a filter for the view related to the provided value. + example: 0 + - name: field + schema: integer + required: true + description: '' + example: 0 + - name: type + schema: string + required: true + description: '' + example: TYPE + - name: value + schema: string + required: false + description: '' + default: '' + - name: group + schema: integer + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/group_bys + method: list + httpMethod: get + tag: Database table view groupings + typeScriptTag: databaseTableViewGroupings + description: >- + Lists all groupings of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple groupings. + parameters: + - name: viewId + schema: integer + required: true + description: Returns only groupings of the view related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/group_bys + method: createNewGrouping + httpMethod: post + tag: Database table view groupings + typeScriptTag: databaseTableViewGroupings + description: >- + Creates a new group by for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewId + schema: integer + required: true + description: Creates a group by for the view related to the provided value. + example: 0 + - name: field + schema: integer + required: true + description: '' + example: 0 + - name: order + schema: string + required: false + description: '' + - name: width + schema: integer + required: false + description: '' + default: 200 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/rotate-slug + method: rotateSlug + httpMethod: post + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Rotates the unique slug of the view by replacing it with a new value. This + would mean that the publicly shared URL of the view will change. Anyone + with the old URL won't be able to access the viewanymore. Only view types + which are sharable can have their slugs rotated. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewId + schema: integer + required: true + description: Rotates the slug of the view related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/sortings + method: list + httpMethod: get + tag: Database table view sortings + typeScriptTag: databaseTableViewSortings + description: >- + Lists all sortings of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple sortings. When all the rows are requested they will be in the + desired order. + parameters: + - name: viewId + schema: integer + required: true + description: Returns only sortings of the view related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/{view_id}/sortings + method: createNewSort + httpMethod: post + tag: Database table view sortings + typeScriptTag: databaseTableViewSortings + description: >- + Creates a new sort for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. When the rows of a view are requested, for example via the + `list_database_table_grid_view_rows` endpoint, they will be returned in + the respected order defined by all the sortings. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewId + schema: integer + required: true + description: Creates a sort for the view related to the provided value. + example: 0 + - name: field + schema: integer + required: true + description: '' + example: 0 + - name: order + schema: string + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/calendar/{slug}/public/rows + method: getPublicRows + httpMethod: get + tag: Database table calendar view + typeScriptTag: databaseTableCalendarView + 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. + + + This is a **premium** feature. + parameters: + - name: fromTimestamp + schema: string + required: true + description: Restricts results based on the calendar date field. + example: FROM_TIMESTAMP + - name: limit + schema: integer + description: >- + Defines how many rows should be returned by default. This value can be + overwritten per select option. + - name: offset + schema: integer + description: >- + Defines from which offset the rows should be returned.This value can + be overwritten per select option. + - name: slug + schema: string + required: true + description: Returns only rows that belong to the related view. + example: SLUG + - name: toTimestamp + schema: string + required: true + description: Restricts results based on the calendar date field. + example: TO_TIMESTAMP + - name: userTimezone + schema: string + 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. + default: UTC + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/calendar/{view_id} + method: getGroupedRows + httpMethod: get + tag: Database table calendar view + typeScriptTag: databaseTableCalendarView + 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: + - name: fromTimestamp + schema: string + required: true + description: Restricts results based on the calendar date field. + example: FROM_TIMESTAMP + - name: include + schema: 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. + - name: limit + schema: integer + description: Defines how many rows should be returned by default. + - name: offset + schema: integer + description: Defines from which offset the rows should be returned. + default: 0 + - name: search + schema: string + description: >- + If provided only rows with data that matches the search query are + going to be returned. + - name: searchMode + schema: string + description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` is + used, then Postgres full-text search is used. If `compat` is provided + then the search term will be exactly searched for including whitespace + on each cell. This is the Baserow legacy search behaviour. + - name: toTimestamp + schema: string + required: true + description: Restricts results based on the calendar date field. + example: TO_TIMESTAMP + - name: userTimezone + schema: string + 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. + default: UTC + - name: viewId + schema: integer + required: true + description: Returns only rows that belong to the related view's table. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/decoration/{view_decoration_id} + method: deleteExistingDecoration + httpMethod: delete + tag: Database table view decorations + typeScriptTag: databaseTableViewDecorations + description: >- + Deletes the existing decoration if the authorized user has access to the + related database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewDecorationId + schema: integer + required: true + description: Deletes the decoration related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/decoration/{view_decoration_id} + method: getViewDecoration + httpMethod: get + tag: Database table view decorations + typeScriptTag: databaseTableViewDecorations + description: >- + Returns the existing view decoration if the current user has access to the + related database's workspace. + parameters: + - name: viewDecorationId + schema: integer + required: true + description: Returns the view decoration related to the provided id. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/decoration/{view_decoration_id} + method: updateDecoration + httpMethod: patch + tag: Database table view decorations + typeScriptTag: databaseTableViewDecorations + description: >- + Updates the existing decoration if the authorized user has access to the + related database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewDecorationId + schema: integer + required: true + description: Updates the view decoration related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/filter-group/{filter_group_id} + method: deleteFilterGroup + httpMethod: delete + tag: Database table view filters + typeScriptTag: databaseTableViewFilters + description: Deletes the existing filter group with the given `view_filter_group_id`. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: filterGroupId + schema: string + required: true + description: '' + example: FILTER_GROUP_ID + - name: viewFilterGroupId + schema: integer + required: true + description: The ID of the view filter group to delete. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/filter-group/{filter_group_id} + method: getFilterGroupById + httpMethod: get + tag: Database table view filters + typeScriptTag: databaseTableViewFilters + description: >- + Returns the existing view filter group with the given + `view_filter_group_id`. + parameters: + - name: filterGroupId + schema: string + required: true + description: '' + example: FILTER_GROUP_ID + - name: viewFilterGroupId + schema: integer + required: true + description: Teh ID of the view filter group to return. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/filter-group/{filter_group_id} + method: updateFilterGroup + httpMethod: patch + tag: Database table view filters + typeScriptTag: databaseTableViewFilters + description: Updates the existing filter group with the given `view_filter_group_id`. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: filterGroupId + schema: string + required: true + description: '' + example: FILTER_GROUP_ID + - name: viewFilterGroupId + schema: integer + required: true + description: The ID of the view filter group to update. + example: 0 + - name: filter_type + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/filter/{view_filter_id} + method: deleteFilter + httpMethod: delete + tag: Database table view filters + typeScriptTag: databaseTableViewFilters + description: >- + Deletes the existing filter if the authorized user has access to the + related database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewFilterId + schema: integer + required: true + description: The ID of the view filter to delete. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/filter/{view_filter_id} + method: getViewFilter + httpMethod: get + tag: Database table view filters + typeScriptTag: databaseTableViewFilters + description: Returns the existing view filter. + parameters: + - name: viewFilterId + schema: integer + required: true + description: The ID of the view filter to return. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/filter/{view_filter_id} + method: updateExistingFilter + httpMethod: patch + tag: Database table view filters + typeScriptTag: databaseTableViewFilters + description: Updates the existing filter. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewFilterId + schema: integer + required: true + description: The ID of the view filter to update. + example: 0 + - name: field + schema: integer + description: '' + - name: type + schema: string + description: '' + - name: value + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/form/{slug}/submit + method: getFormMetadataBySlug + httpMethod: get + tag: Database table form view + typeScriptTag: databaseTableFormView + description: >- + Returns the metadata related to the form view if the form is publicly + shared or if the user has access to the related workspace. This data can + be used to construct a form with the right fields. + parameters: + - name: slug + schema: string + required: true + description: The slug related to the form form. + example: SLUG + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/form/{slug}/submit + method: submitForm + httpMethod: post + tag: Database table form view + typeScriptTag: databaseTableFormView + description: >- + Submits the form if the form is publicly shared or if the user has access + to the related workspace. The provided data will be validated based on the + fields that are in the form and the rules per field. If valid, a new row + will be created in the table. + parameters: + - name: slug + schema: string + required: true + description: The slug related to the form. + example: SLUG + - name: field_1 + schema: string + description: '' + - name: field_2 + schema: string + description: '' + - name: field_3 + schema: string + description: '' + - name: field_4 + schema: string + description: '' + - name: field_5 + schema: string + description: '' + - name: field_6 + schema: integer + description: '' + default: 0 + - name: field_7 + schema: boolean + description: '' + default: false + - name: field_8 + schema: string + description: '' + - name: field_13 + schema: number + description: '' + - name: field_14 + schema: array + description: '' + - name: field_15 + schema: array + description: '' + - name: field_16 + schema: integer + description: '' + - name: field_17 + schema: array + description: '' + - name: field_18 + schema: string + description: '' + - name: field_23 + schema: array + description: '' + - name: field_26 + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/form/{slug}/upload-file + method: uploadFile + httpMethod: post + tag: Database table form view + typeScriptTag: databaseTableFormView + description: >- + Uploads a file anonymously to Baserow by uploading the file contents + directly. A `file` multipart is expected containing the file contents. + parameters: + - name: slug + schema: string + required: true + description: >- + Submits files only if the view with the provided slughas a public file + field. + example: SLUG + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/gallery/{slug}/public/rows + method: listPublicRows + httpMethod: get + tag: Database table gallery view + typeScriptTag: databaseTableGalleryView + description: >+ + Lists the requested rows of the view's table related to the provided + `slug` if the gallery view is public.The response is paginated either by a + limit/offset or page/size style. The style depends on the provided GET + parameters. The properties of the returned rows depends on which fields + the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. The value is what the user has provided + and the format of it depends on the fields type. + + parameters: + - name: count + schema: boolean + description: If provided only the count will be returned. + - name: excludeFields + schema: string + description: >- + All the fields are included in the response by default. You can select + a subset of fields by providing the exclude_fields query parameter. If + you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - name: filter_{field}_{filter} + schema: 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - name: filterType + schema: 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. + + - name: filters + schema: 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - name: include + schema: string + description: >- + A comma separated list allowing the values of `field_options` 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. + - name: includeFields + schema: string + description: >- + All the fields are included in the response by default. You can select + a subset of fields by providing the fields query parameter. If you for + example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` and + id `2` are going to be selected and included in the response. + - name: limit + schema: integer + description: Defines how many rows should be returned. + - name: offset + schema: integer + description: >- + Can only be used in combination with the `limit` parameter and defines + from which offset the rows should be returned. + - name: orderBy + schema: string + description: >- + Optionally the rows can be ordered by provided field ids separated by + comma. By default a field is ordered in ascending + (https://baserow.io/docs/index order, but by prepending the field with + a '-' it can be ordered descending (https://baserow.io/docs/index. + - name: page + schema: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - name: search + schema: string + description: >- + If provided only rows with data that matches the search query are + going to be returned. + - name: searchMode + schema: string + description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` is + used, then Postgres full-text search is used. If `compat` is provided + then the search term will be exactly searched for including whitespace + on each cell. This is the Baserow legacy search behaviour. + - name: size + schema: integer + description: >- + Can only be used in combination with the `page` parameter and defines + how many rows should be returned. + - name: slug + schema: string + required: true + description: Returns only rows that belong to the related view. + example: SLUG + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/gallery/{view_id} + method: listRowsByViewId + httpMethod: get + tag: Database table gallery view + typeScriptTag: databaseTableGalleryView + description: >- + Lists the requested rows of the view's table related to the provided + `view_id` if the authorized user has access to the database's workspace. + The response is paginated by a limit/offset style. + parameters: + - name: count + schema: boolean + description: If provided only the count will be returned. + - name: filter_{field}_{filter} + schema: 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the view + filters saved for the view itself will be ignored. + - name: filterType + schema: 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. + + - name: filters + schema: 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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the view + filters saved for the view itself will be ignored. + - name: include + schema: 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. + - name: limit + schema: integer + description: Defines how many rows should be returned. + - name: offset + schema: integer + description: >- + Can only be used in combination with the `limit` parameter and defines + from which offset the rows should be returned. + - name: orderBy + schema: string + description: >- + Optionally the rows can be ordered by provided field ids separated by + comma. By default a field is ordered in ascending + (https://baserow.io/docs/index order, but by prepending the field with + a '-' it can be ordered descending (https://baserow.io/docs/index. + - name: search + schema: string + description: >- + If provided only rows with data that matches the search query are + going to be returned. + - name: searchMode + schema: string + description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` is + used, then Postgres full-text search is used. If `compat` is provided + then the search term will be exactly searched for including whitespace + on each cell. This is the Baserow legacy search behaviour. + - name: viewId + schema: integer + required: true + description: Returns only rows that belong to the related view's table. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/grid/{slug}/public/rows + method: listPublicRows + httpMethod: get + tag: Database table grid view + typeScriptTag: databaseTableGridView + description: >+ + Lists the requested rows of the view's table related to the provided + `slug` if the grid view is public.The response is paginated either by a + limit/offset or page/size style. The style depends on the provided GET + parameters. The properties of the returned rows depends on which fields + the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. The value is what the user has provided + and the format of it depends on the fields type. + + parameters: + - name: count + schema: boolean + description: If provided only the count will be returned. + - name: excludeFields + schema: string + description: >- + All the fields are included in the response by default. You can select + a subset of fields by providing the exclude_fields query parameter. If + you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - name: filter_{field}_{filter} + schema: 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - name: filterType + schema: 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. + + - name: filters + schema: 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - name: groupBy + schema: string + description: >- + Optionally the rows can be grouped by provided field ids separated by + comma. By default no groups are applied. This doesn't actually + responds with the rows groups, this is just what's needed for the + Baserow group by feature. + - name: include + schema: string + description: >- + A comma separated list allowing the values of `field_options` 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. + - name: includeFields + schema: string + description: >- + All the fields are included in the response by default. You can select + a subset of fields by providing the fields query parameter. If you for + example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` and + id `2` are going to be selected and included in the response. + - name: limit + schema: integer + description: Defines how many rows should be returned. + - name: offset + schema: integer + description: >- + Can only be used in combination with the `limit` parameter and defines + from which offset the rows should be returned. + - name: orderBy + schema: string + description: >- + Optionally the rows can be ordered by provided field ids separated by + comma. By default a field is ordered in ascending + (https://baserow.io/docs/index order, but by prepending the field with + a '-' it can be ordered descending (https://baserow.io/docs/index. + - name: page + schema: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - name: search + schema: string + description: >- + If provided only rows with data that matches the search query are + going to be returned. + - name: searchMode + schema: string + description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` is + used, then Postgres full-text search is used. If `compat` is provided + then the search term will be exactly searched for including whitespace + on each cell. This is the Baserow legacy search behaviour. + - name: size + schema: integer + description: >- + Can only be used in combination with the `page` parameter and defines + how many rows should be returned. + - name: slug + schema: string + required: true + description: Returns only rows that belong to the related view. + example: SLUG + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/grid/{view_id} + method: getViewRows + httpMethod: get + tag: Database table grid view + typeScriptTag: databaseTableGridView + description: >- + Lists the requested rows of the view's table related to the provided + `view_id` if the authorized user has access to the database's workspace. + The response is paginated either by a limit/offset or page/size style. The + style depends on the provided GET parameters. The properties of the + returned rows depends on which fields the table has. For a complete + overview of fields use the **list_database_table_fields** endpoint to list + them all. In the example all field types are listed, but normally the + number in field_{id} key is going to be the id of the field. The value is + what the user has provided and the format of it depends on the fields + type. + + + The filters and sortings are automatically applied. To get a full overview + of the applied filters and sortings you can use the + `list_database_table_view_filters` and `list_database_table_view_sortings` + endpoints. + parameters: + - name: count + schema: boolean + description: If provided only the count will be returned. + - name: excludeFields + schema: string + description: >- + All the fields are included in the response by default. You can select + a subset of fields by providing the exclude_fields query parameter. If + you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - name: filter_{field}_{filter} + schema: 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the view + filters saved for the view itself will be ignored. + - name: filterType + schema: 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. + + - name: filters + schema: 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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the view + filters saved for the view itself will be ignored. + - name: include + schema: 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. + - name: includeFields + schema: string + description: >- + All the fields are included in the response by default. You can select + a subset of fields by providing the fields query parameter. If you for + example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` and + id `2` are going to be selected and included in the response. + - name: limit + schema: integer + description: Defines how many rows should be returned. + - name: offset + schema: integer + description: >- + Can only be used in combination with the `limit` parameter and defines + from which offset the rows should be returned. + - name: orderBy + schema: string + description: >- + Optionally the rows can be ordered by provided field ids separated by + comma. By default a field is ordered in ascending + (https://baserow.io/docs/index order, but by prepending the field with + a '-' it can be ordered descending (https://baserow.io/docs/index. + - name: page + schema: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - name: search + schema: string + description: >- + If provided only rows with data that matches the search query are + going to be returned. + - name: searchMode + schema: string + description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` is + used, then Postgres full-text search is used. If `compat` is provided + then the search term will be exactly searched for including whitespace + on each cell. This is the Baserow legacy search behaviour. + - name: size + schema: integer + description: >- + Can only be used in combination with the `page` parameter and defines + how many rows should be returned. + - name: viewId + schema: integer + required: true + description: Returns only rows that belong to the related view's table. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/grid/{view_id} + method: getFilteredData + httpMethod: post + tag: Database table grid view + typeScriptTag: databaseTableGridView + description: >- + Lists only the rows and fields that match the request. Only the rows with + the ids that are in the `row_ids` list are going to be returned. Same goes + for the fields, only the fields with the ids in the `field_ids` are going + to be returned. This endpoint could be used to refresh data after changes + something. For example in the web frontend after changing a field type, + the data of the related cells will be refreshed using this endpoint. In + the example all field types are listed, but normally the number in + field_{id} key is going to be the id of the field. The value is what the + user has provided and the format of it depends on the fields type. + parameters: + - name: viewId + schema: integer + required: true + description: Returns only rows that belong to the related view's table. + example: 0 + - name: field_ids + schema: array + required: false + description: '' + - name: row_ids + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/grid/{view_id}/aggregation/{field_id} + method: computeAggregation + httpMethod: get + tag: Database table grid view + typeScriptTag: databaseTableGridView + description: >- + Computes the aggregation of all the values for a specified field from the + selected grid view. You must select the aggregation type by setting the + `type` GET parameter. If filters are configured for the selected view, the + aggregation is calculated only on filtered rows. You need to have read + permissions on the view to request an aggregation. + parameters: + - name: fieldId + schema: integer + required: true + description: The field id you want to aggregate + example: 0 + - name: include + schema: string + description: >- + if `include` is set to `total`, the total row count will be returned + with the result. + - name: type + schema: string + description: >- + The aggregation type you want. Available aggregation types: + empty_count, not_empty_count, unique_count, min, max, sum, average, + median, decile, variance, std_dev + - name: viewId + schema: integer + required: true + description: Select the view you want the aggregation for. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/grid/{view_id}/aggregations + method: getFieldAggregations + httpMethod: get + tag: Database table grid view + typeScriptTag: databaseTableGridView + description: >- + Returns all field aggregations values previously defined for this grid + view. If filters exist for this view, the aggregations are computed only + on filtered rows.You need to have read permissions on the view to request + aggregations. + parameters: + - name: filter_{field}_{filter} + schema: string + description: >- + The aggregation 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the view + filters saved for the view itself will be ignored. + - name: filterType + schema: string + description: >+ + `AND`: Indicates that the aggregated rows must match all the provided + filters. + + `OR`: Indicates that the aggregated 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. + + - name: filters + schema: string + description: >- + A JSON serialized string containing the filter tree to apply for the + aggregation. The filter tree is a nested structure containing the + filters that need to be applied. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the view + filters saved for the view itself will be ignored. + - name: include + schema: string + description: >- + if `include` is set to `total`, the total row count will be returned + with the result. + - name: search + schema: string + description: If provided the aggregations are calculated only for matching rows. + - name: searchMode + schema: string + description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` is + used, then Postgres full-text search is used. If `compat` is provided + then the search term will be exactly searched for including whitespace + on each cell. This is the Baserow legacy search behaviour. + - name: viewId + schema: integer + required: true + description: Select the view you want the aggregations for. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/group_by/{view_group_by_id} + method: deleteGroupBy + httpMethod: delete + tag: Database table view groupings + typeScriptTag: databaseTableViewGroupings + description: >- + Deletes the existing group by if the authorized user has access to the + related database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewGroupById + schema: integer + required: true + description: Deletes the group by related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/group_by/{view_group_by_id} + method: getViewGroupBy + httpMethod: get + tag: Database table view groupings + typeScriptTag: databaseTableViewGroupings + description: >- + Returns the existing view group by if the authorized user has access to + the related database's workspace. + parameters: + - name: viewGroupById + schema: integer + required: true + description: Returns the view group by related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/group_by/{view_group_by_id} + method: updateGroupBy + httpMethod: patch + tag: Database table view groupings + typeScriptTag: databaseTableViewGroupings + description: >- + Updates the existing group by if the authorized user has access to the + related database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewGroupById + schema: integer + required: true + description: Updates the view group by related to the provided value. + example: 0 + - name: field + schema: integer + description: '' + - name: order + schema: string + description: '' + - name: width + schema: integer + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/kanban/{slug}/public/rows + method: getPublicRowsBySlug + httpMethod: get + tag: Database table kanban view + typeScriptTag: databaseTableKanbanView + description: >- + Responds with serialized rows grouped by the view's single select field + options related to the `slug` if the kanban view is publicly shared. + Additional query parameters can be provided to control the `limit` and + `offset` per select option. + + + This is a **premium** feature. + parameters: + - name: filter_{field}_{filter} + schema: 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - name: filterType + schema: 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. + + - name: filters + schema: 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - name: limit + schema: integer + description: >- + Defines how many rows should be returned by default. This value can be + overwritten per select option. + - name: offset + schema: integer + description: >- + Defines from which offset the rows should be returned.This value can + be overwritten per select option. + - name: selectOption + schema: string + description: >- + Accepts multiple `select_option` parameters. If not provided, the rows + of all select options will be returned. If one or more `select_option` + parameters are provided, then only the rows of those will be included + in the response. `?select_option=1&select_option=null` will only + include the rows for both select option with id `1` and `null`. + `?select_option=1,10,20` will only include the rows of select option + id `1` with a limit of `10` and and offset of `20`. + - name: slug + schema: string + required: true + description: Returns only rows that belong to the related view. + example: SLUG + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/kanban/{view_id} + method: getSerializedRowsByViewId + httpMethod: get + tag: Database table kanban view + typeScriptTag: databaseTableKanbanView + description: >- + Responds with serialized rows grouped by the view's single select field + options if the user is authenticated and has access to the related + workspace. Additional query parameters can be provided to control the + `limit` and `offset` per select option. + + + This is a **premium** feature. + parameters: + - name: filter_{field}_{filter} + schema: 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the view + filters saved for the view itself will be ignored. + - name: filterType + schema: 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. + + - name: filters + schema: 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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the view + filters saved for the view itself will be ignored. + - name: include + schema: 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. + - name: limit + schema: integer + description: >- + Defines how many rows should be returned by default. This value can be + overwritten per select option. + - name: offset + schema: integer + description: >- + Defines from which offset the rows should be returned.This value can + be overwritten per select option. + - name: selectOption + schema: string + description: >- + Accepts multiple `select_option` parameters. If not provided, the rows + of all select options will be returned. If one or more `select_option` + parameters are provided, then only the rows of those will be included + in the response. `?select_option=1&select_option=null` will only + include the rows for both select option with id `1` and `null`. + `?select_option=1,10,20` will only include the rows of select option + id `1` with a limit of `10` and and offset of `20`. + - name: viewId + schema: integer + required: true + description: Returns only rows that belong to the related view's table. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/sort/{view_sort_id} + method: deleteById + httpMethod: delete + tag: Database table view sortings + typeScriptTag: databaseTableViewSortings + description: >- + Deletes the existing sort if the authorized user has access to the related + database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewSortId + schema: integer + required: true + description: Deletes the sort related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/sort/{view_sort_id} + method: getSortById + httpMethod: get + tag: Database table view sortings + typeScriptTag: databaseTableViewSortings + description: >- + Returns the existing view sort if the authorized user has access to the + related database's workspace. + parameters: + - name: viewSortId + schema: integer + required: true + description: Returns the view sort related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/sort/{view_sort_id} + method: updateById + httpMethod: patch + tag: Database table view sortings + typeScriptTag: databaseTableViewSortings + description: >- + Updates the existing sort if the authorized user has access to the related + database's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: viewSortId + schema: integer + required: true + description: Updates the view sort related to the provided value. + example: 0 + - name: field + schema: integer + description: '' + - name: order + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/table/{table_id} + method: listTableViews + httpMethod: get + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Lists all views of the table related to the provided `table_id`. If the + workspace is related to a template, then this endpoint will be publicly + accessible. A table can have multiple views. Each view can display the + data in a different way. For example the `grid` view shows the in a + spreadsheet like way. That type has custom endpoints for data retrieval + and manipulation. In the future other views types like a calendar or + Kanban are going to be added. Each type can have different properties. + parameters: + - name: include + schema: string + description: >- + A comma separated list of extra attributes to include on each view in + the response. The supported attributes are `filters`, `sortings` and + `decorations`. For example `include=filters,sortings` will add the + attributes `filters` and `sortings` to every returned view, containing + a list of the views filters and sortings respectively. + - name: limit + schema: integer + description: >- + The maximum amount of views that must be returned. This endpoint + doesn't support pagination, but if you for example just need to fetch + the first view, you can do that by setting a limit. There isn't a + limit by default. + - name: tableId + schema: integer + required: true + description: Returns only views of the table related to the provided value. + example: 0 + - name: type + schema: string + description: >- + Optionally filter on the view type. If provided, only views of that + type will be returned. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/table/{table_id} + method: createNewView + httpMethod: post + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Creates a new view for the table related to the provided `table_id` + parameter. Depending on the type, different properties can optionally be + set. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: include + schema: string + description: >- + A comma separated list of extra attributes to include on each view in + the response. The supported attributes are `filters`, `sortings` and + `decorations`. For example `include=filters,sortings` will add the + attributes `filters` and `sortings` to every returned view, containing + a list of the views filters and sortings respectively. + - name: tableId + schema: integer + required: true + description: Creates a view for the table related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/views/table/{table_id}/order + method: reorderTableOrder + httpMethod: post + tag: Database table views + typeScriptTag: databaseTableViews + description: >- + Changes the order of the provided view ids to the matching position that + the id has in the list. The order of the not provided views will be set to + `0`. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: tableId + schema: integer + required: true + description: >- + Updates the order of the views in the table related to the provided + value. + example: 0 + - name: view_ids + schema: array + required: true + description: '' + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/webhooks/{webhook_id} + method: deleteWebhook + httpMethod: delete + tag: Database table webhooks + typeScriptTag: databaseTableWebhooks + description: >- + Deletes the existing webhook if the authorized user has access to the + related database's workspace. + parameters: + - name: webhookId + schema: integer + required: true + description: Deletes the webhook related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: OK + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/webhooks/{webhook_id} + method: getExistingWebhook + httpMethod: get + tag: Database table webhooks + typeScriptTag: databaseTableWebhooks + description: >- + Returns the existing webhook if the authorized user has access to the + related database workspace. + parameters: + - name: webhookId + schema: integer + required: true + description: Returns the webhook related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/webhooks/{webhook_id} + method: updateView + httpMethod: patch + tag: Database table webhooks + typeScriptTag: databaseTableWebhooks + description: >- + Updates the existing view if the authorized user has access to the related + database workspace. + parameters: + - name: webhookId + schema: integer + required: true + description: Updates the webhook related to the provided value. + example: 0 + - name: url + schema: string + description: '' + - name: include_all_events + schema: boolean + description: '' + - name: events + schema: array + description: '' + - name: request_method + schema: string + description: '' + - name: headers + schema: object + description: '' + - name: name + schema: string + description: '' + - name: active + schema: boolean + description: '' + - name: use_user_field_names + schema: boolean + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/webhooks/table/{table_id} + method: list + httpMethod: get + tag: Database table webhooks + typeScriptTag: databaseTableWebhooks + description: >- + Lists all webhooks of the table related to the provided `table_id` if the + user has access to the related database workspace. + parameters: + - name: tableId + schema: integer + required: true + description: Returns only webhooks of the table related to this value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/webhooks/table/{table_id} + method: createWebhook + httpMethod: post + tag: Database table webhooks + typeScriptTag: databaseTableWebhooks + description: >- + Creates a new webhook for the table related to the provided `table_id` + parameter if the authorized user has access to the related database + workspace. + parameters: + - name: tableId + schema: integer + required: true + description: Creates a webhook for the table related to the provided value. + example: 0 + - name: url + schema: string + required: true + description: '' + example: URL + - name: include_all_events + schema: boolean + required: false + description: '' + - name: events + schema: array + required: false + description: '' + - name: request_method + schema: string + required: false + description: '' + - name: headers + schema: object + required: false + description: '' + - name: name + schema: string + required: true + description: '' + example: NAME + - name: use_user_field_names + schema: boolean + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/database/webhooks/table/{table_id}/test-call + method: triggerTestCall + httpMethod: post + tag: Database table webhooks + typeScriptTag: databaseTableWebhooks + description: >- + This endpoint triggers a test call based on the provided data if the user + has access to the workspace related to the table. The test call will be + made immediately and a copy of the request, response and status will be + included in the response. + parameters: + - name: tableId + schema: integer + required: true + description: The id of the table that must be tested. + example: 0 + - name: url + schema: string + required: true + description: '' + example: URL + - name: event_type + schema: string + required: true + description: '' + example: EVENT_TYPE + - name: request_method + schema: string + required: false + description: '' + - name: headers + schema: object + required: false + description: '' + - name: use_user_field_names + schema: boolean + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups + method: groups + httpMethod: get + tag: Groups + typeScriptTag: groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the groups of the authorized user. A group can contain multiple applications like a database. Multiple users can have access to a group. For example each company could have their own group containing databases related to that company. The order of the groups are custom for each user. The order is configurable via the **order_groups** endpoint. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/groups + method: group + httpMethod: post + tag: Groups + typeScriptTag: groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [create_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new group where only the authorized user has access to. No initial data like database applications are added, they have to be created via other endpoints. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: id + schema: integer + required: true + description: '' + example: 0 + - name: name + schema: string + required: true + description: '' + example: NAME + responses: + - statusCode: '200' + description: >- + This serializers includes relevant fields of the Workspace model, but + also + + some WorkspaceUser specific fields related to the workspace user + relation. + + + Additionally, the list of users are included for each workspace. + - url: /api/groups/{group_id} + method: group + httpMethod: delete + tag: Groups + typeScriptTag: groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes an existing group if the authorized user belongs to the group. All the applications, databases, tables etc that were in the group are going to be deleted also. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: groupId + schema: integer + required: true + description: Deletes the group related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/{group_id} + method: group + httpMethod: patch + tag: Groups + typeScriptTag: groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Updates the existing group related to the provided `group_id` parameter if the authorized user belongs to the group. It is not yet possible to add additional users to a group. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: groupId + schema: integer + required: true + description: Updates the group related to the provided value. + example: 0 + - name: id + schema: integer + description: '' + - name: name + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/{group_id}/leave + method: group + httpMethod: post + tag: Groups + typeScriptTag: groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [leave_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Makes the authenticated user leave the group related to the provided `group_id` if the user is in that group. If the user is the last admin in the group, they will not be able to leave it. There must always be one admin in the group, otherwise it will be left without control. If that is the case, they must either delete the group or give another member admin permissions first. + parameters: + - name: groupId + schema: integer + required: true + description: Leaves the group related to the value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/{group_id}/permissions + method: permissions + httpMethod: get + tag: Groups + typeScriptTag: groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_permissions](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns a the permission data necessary to determine the permissions of a specific user over a specific group. + See `core.handler.CoreHandler.get_permissions()` for more details. + parameters: + - name: groupId + schema: integer + required: true + description: The group id we want the permission object for. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/invitations/{group_invitation_id} + method: deleteInvitation + httpMethod: delete + tag: Group invitations + typeScriptTag: groupInvitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes a group invitation if the authorized user has admin rights to the related group. + parameters: + - name: groupInvitationId + schema: integer + required: true + description: Deletes the group invitation related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/invitations/{group_invitation_id} + method: getById + httpMethod: get + tag: Group invitations + typeScriptTag: groupInvitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [get_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns the requested group invitation if the authorized user has admin right to the related group + parameters: + - name: groupInvitationId + schema: integer + required: true + description: Returns the group invitation related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/invitations/{group_invitation_id} + method: updateRelatedInvitation + httpMethod: patch + tag: Group invitations + typeScriptTag: groupInvitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Updates the existing group invitation related to the provided `group_invitation_id` param if the authorized user has admin rights to the related group. + parameters: + - name: groupInvitationId + schema: integer + required: true + description: Updates the group invitation related to the provided value. + example: 0 + - name: permissions + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/invitations/{group_invitation_id}/accept + method: acceptGroupInvitation + httpMethod: post + tag: Group invitations + typeScriptTag: groupInvitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [accept_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Accepts a group invitation with the given id if the email address of the user matches that of the invitation. + parameters: + - name: groupInvitationId + schema: integer + required: true + description: Accepts the group invitation related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: >- + This serializers includes relevant fields of the Workspace model, but + also + + some WorkspaceUser specific fields related to the workspace user + relation. + + + Additionally, the list of users are included for each workspace. + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/invitations/{group_invitation_id}/reject + method: rejectGroupInvitation + httpMethod: post + tag: Group invitations + typeScriptTag: groupInvitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [reject_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Rejects a group invitation with the given id if the email address of the user matches that of the invitation. + parameters: + - name: groupInvitationId + schema: integer + required: true + description: Rejects the group invitation related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/invitations/group/{group_id} + method: listForGroup + httpMethod: get + tag: Group invitations + typeScriptTag: groupInvitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspace_invitations](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the group invitations of the group related to the provided `group_id` parameter if the authorized user has admin rights to that group. + parameters: + - name: groupId + schema: integer + required: true + description: >- + Returns only invitations that are in the group related to the provided + value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/invitations/group/{group_id} + method: createNewInvitation + httpMethod: post + tag: Group invitations + typeScriptTag: groupInvitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [create_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new group invitations for an email address if the authorized user has admin rights to the related group. An email containing a sign up link will be send to the user. + parameters: + - name: groupId + schema: integer + required: true + description: Creates a group invitation to the group related to the provided value. + example: 0 + - name: email + schema: string + required: true + description: '' + example: EMAIL + - name: permissions + schema: string + required: false + description: '' + - name: message + schema: string + required: false + description: '' + - name: base_url + schema: string + required: true + description: '' + example: BASE_URL + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/invitations/token/{token} + method: findByToken + httpMethod: get + tag: Group invitations + typeScriptTag: groupInvitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [get_workspace_invitation_by_token](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Responds with the serialized group invitation if an invitation with the provided token is found. + parameters: + - name: token + schema: string + required: true + description: Returns the group invitation related to the provided token. + example: TOKEN + responses: + - statusCode: '200' + description: >- + This serializer is used for displaying the invitation to the user that + doesn't + + have access to the workspace yet, so not for invitation management + purposes. + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/order + method: groups + httpMethod: post + tag: Groups + typeScriptTag: groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [order_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Changes the order of the provided group ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order will be custom for each user. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: workspaces + schema: array + required: true + description: '' + responses: + - statusCode: '204' + description: No response body + - url: /api/groups/users/{group_user_id} + method: deleteGroupUser + httpMethod: delete + tag: Groups + typeScriptTag: groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace_user](https://api.baserow.io).** + + Deletes a group user if the authorized user has admin rights to the related group. + parameters: + - name: groupUserId + schema: integer + required: true + description: Deletes the group user related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/users/{group_user_id} + method: updateGroupUser + httpMethod: patch + tag: Groups + typeScriptTag: groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace_user](https://api.baserow.io).** + + Updates the existing group user related to the provided `group_user_id` param if the authorized user has admin rights to the related group. + parameters: + - name: groupUserId + schema: integer + required: true + description: Updates the group user related to the provided value. + example: 0 + - name: permissions + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/groups/users/group/{group_id} + method: listGroupUsers + httpMethod: get + tag: Groups + typeScriptTag: groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspace_users](https://api.baserow.io).** + + Lists all the users that are in a group if the authorized user has admin permissions to the related group. To add a user to a group an invitation must be sent first. + parameters: + - name: groupId + schema: integer + required: true + description: Lists group users related to the provided group value. + example: 0 + - name: search + schema: string + description: Search for group users by username, or email. + - name: sorts + schema: string + description: Sort group users by name, email or role. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/integration/{integration_id} + method: deleteById + httpMethod: delete + tag: Integrations + typeScriptTag: integrations + description: Deletes the integration related by the given id. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: integrationId + schema: integer + required: true + description: The id of the integration + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/integration/{integration_id} + method: updateExistingIntegration + httpMethod: patch + tag: Integrations + typeScriptTag: integrations + description: Updates an existing integration. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: integrationId + schema: integer + required: true + description: The id of the integration + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/integration/{integration_id}/move + method: moveIntegration + httpMethod: patch + tag: Integrations + typeScriptTag: integrations + description: >- + Moves the integration in the application before another integration or at + the end of the application if no before integration is given. The + integrations must belong to the same application. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: integrationId + schema: integer + required: true + description: The id of the integration to move + example: 0 + - name: before_id + schema: integer + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/jobs + method: job + httpMethod: get + tag: Jobs + typeScriptTag: jobs + description: >- + List all existing jobs. Jobs are task executed asynchronously in the + background. You can use the `get_job` endpoint to read the currentprogress + of a the job. + parameters: + - name: jobIds + schema: string + description: >- + A comma separated list of job ids in the desired order.The jobs will + be returned in the same order as the ids.If a job id is not found it + will be ignored. + - name: states + schema: string + description: >- + A comma separated list of jobs state to look for. The only possible + values are: `pending`, `finished` and `failed`. It's possible to + exclude a state by prefixing it with a `!`. + responses: + - statusCode: '200' + description: '' + - url: /api/jobs + method: job + httpMethod: post + tag: Jobs + typeScriptTag: jobs + description: >- + Creates a new job. This job runs asynchronously in the background and + execute the task specific to the provided typeparameters. The `get_job` + can be used to get the current state of the job. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/jobs/{job_id} + method: job + httpMethod: get + tag: Jobs + typeScriptTag: jobs + description: >- + Returns the information related to the provided job id. This endpoint can + for example be polled to get the state and progress of the job in real + time. + parameters: + - name: jobId + schema: integer + required: true + description: The job id to lookup information about. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/licenses + method: licenses + httpMethod: get + tag: Admin + typeScriptTag: admin + description: >- + Lists all the valid licenses that are registered to this instance. A + premium license can be used to unlock the premium features for a fixed + amount of users. An enterprise license can similarly be used to unlock + enterpise features. More information about self hosted licenses can be + found on our pricing page https://baserow.io/pricing. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/licenses + method: registerLicense + httpMethod: post + tag: Admin + typeScriptTag: admin + description: >- + Registers a new license. After registering you can assign users to the + license that will be able to use the license's features while the license + is active. If an existing license with the same `license_id` already + exists and the provided license has been issued later than that one, the + existing one will be upgraded. + parameters: + - name: license + schema: string + required: true + description: '' + example: LICENSE + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /api/licenses/{id} + method: removeLicense + httpMethod: delete + tag: Admin + typeScriptTag: admin + description: >- + Removes the existing license related to the provided parameter. If the + license is active, then all the users that are using the license will lose + access to the features granted by that license. + parameters: + - name: id + schema: integer + required: true + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '404' + description: '' + - url: /api/licenses/{id} + method: getLicenseDetails + httpMethod: get + tag: Admin + typeScriptTag: admin + description: >- + Responds with detailed information about the license related to the + provided parameter. + parameters: + - name: id + schema: integer + required: true + description: The internal identifier of the license. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/licenses/{id}/{user_id} + method: removeUserFromLicense + httpMethod: delete + tag: Admin + typeScriptTag: admin + description: >- + Removes the user related to the provided parameter and to the license + related to the parameter. This only happens if the user is on the license, + otherwise nothing will happen. + parameters: + - name: id + schema: integer + required: true + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + example: 0 + - name: userId + schema: integer + required: true + description: The ID of the user that must be removed from the license. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/licenses/{id}/{user_id} + method: addUserToLicense + httpMethod: post + tag: Admin + typeScriptTag: admin + description: >- + Adds the user related to the provided parameter and to the license related + to the parameter. This only happens if there are enough seats left on the + license and if the user is not already on the license. + parameters: + - name: id + schema: integer + required: true + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + example: 0 + - name: userId + schema: integer + required: true + description: The ID of the user that must be added to the license. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/licenses/{id}/check + method: checkLicenseStatus + httpMethod: get + tag: Admin + typeScriptTag: admin + description: >- + This endpoint checks with the authority if the license needs to be + updated. It also checks if the license is operating within its limits and + might take action on that. It could also happen that the license has been + deleted because there is an instance id mismatch or because it's invalid. + In that case a `204` status code is returned. + parameters: + - name: id + schema: integer + required: true + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/licenses/{id}/fill-seats + method: fillSeatsLicense + httpMethod: post + tag: Admin + typeScriptTag: admin + description: >- + Fills the remaining empty seats of the license with the first users that + are found. + parameters: + - name: id + schema: integer + required: true + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/licenses/{id}/lookup-users + method: lookupUsers + httpMethod: get + tag: Admin + typeScriptTag: admin + description: >- + This endpoint can be used to lookup users that can be added to a license. + Users that are already in the license are not returned here. Optionally a + `search` query parameter can be provided to filter the results. + parameters: + - name: id + schema: integer + required: true + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + example: 0 + - name: page + schema: integer + description: Defines which page of users should be returned. + - name: search + schema: string + description: >- + If provided, only users where the name or email contains the value are + returned. + - name: size + schema: integer + description: Defines how many users should be returned per page. + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/licenses/{id}/remove-all-users + method: removeAllUsers + httpMethod: post + tag: Admin + typeScriptTag: admin + description: >- + Removes all the users that are on the license. This will empty all the + seats. + parameters: + - name: id + schema: integer + required: true + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/notifications/{workspace_id} + method: clearWorkspaceNotifications + httpMethod: delete + tag: Notifications + typeScriptTag: notifications + description: Clear all the notifications for the given workspace and user. + parameters: + - name: workspaceId + schema: integer + required: true + description: The workspace the notifications are in. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/notifications/{workspace_id} + method: listForWorkspaceAndUser + httpMethod: get + tag: Notifications + typeScriptTag: notifications + description: >- + Lists the notifications for the given workspace and the current user. The + response is paginated and the limit and offset parameters can be + controlled using the query parameters. + parameters: + - name: limit + schema: integer + description: Defines how many notifications should be returned. + - name: offset + schema: integer + description: Defines the offset of the notifications that should be returned. + - name: workspaceId + schema: integer + required: true + description: The workspace id that the notifications belong to. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/notifications/{workspace_id}/{notification_id} + method: markAsRead + httpMethod: patch + tag: Notifications + typeScriptTag: notifications + description: Marks a notification as read. + parameters: + - name: notificationId + schema: integer + required: true + description: The notification id to update. + example: 0 + - name: workspaceId + schema: integer + required: true + description: The workspace the notification is in. + example: 0 + responses: + - statusCode: '200' + description: >- + Serialize notification data along with the recipient information about + the + + read status for the given user. + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/notifications/{workspace_id}/mark-all-as-read + method: markAllAsRead + httpMethod: post + tag: Notifications + typeScriptTag: notifications + description: Mark as read all the notifications for the given workspace and user. + parameters: + - name: workspaceId + schema: integer + required: true + description: The workspace the notifications are in. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/role/{group_id} + method: listWithinGroup + httpMethod: get + tag: Role assignments + typeScriptTag: roleAssignments + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can list the role assignments within a group, optionally filtered down to a specific scope inside of that group. If the scope isn't specified,the group will be considered the scope. + parameters: + - name: groupId + schema: integer + required: true + description: The group in which the role assignments are related to. + example: 0 + - name: scopeId + schema: integer + description: The id of the scope you are trying to get all roleassignments for. + - name: scopeType + schema: string + description: The type of scope you are trying to get all roleassignments for. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/role/{group_id} + method: assignRoleToGroup + httpMethod: post + tag: Role assignments + typeScriptTag: roleAssignments + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can assign a role to a subject into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property. + parameters: + - name: groupId + schema: integer + required: true + description: The group in which the role assignment takes place. + example: 0 + - name: subject_id + schema: integer + required: true + description: '' + example: 0 + - name: subject_type + schema: string + required: true + description: '' + example: SUBJECT_TYPE + - name: role + schema: string + required: true + description: '' + example: ROLE + - name: scope_id + schema: integer + required: true + description: '' + example: 0 + - name: scope_type + schema: string + required: true + description: '' + example: SCOPE_TYPE + responses: + - statusCode: '200' + description: Serializer for RoleAssignment used for the Open API spec + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/role/{group_id}/batch + method: assignMultipleSubjectsToGroup + httpMethod: post + tag: Role assignments + typeScriptTag: roleAssignments + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_batch_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can assign a role to a multiple subjects into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property. + parameters: + - name: groupId + schema: integer + required: true + description: The group in which the role assignment takes place. + example: 0 + - name: items + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/role/{workspace_id} + method: listWithinWorkspaceScope + httpMethod: get + tag: Role assignments + typeScriptTag: roleAssignments + description: >- + You can list the role assignments within a workspace, optionally filtered + downto a specific scope inside of that workspace. If the scope isn't + specified,the workspace will be considered the scope. + parameters: + - name: scopeId + schema: integer + description: The id of the scope you are trying to get all roleassignments for. + - name: scopeType + schema: string + description: The type of scope you are trying to get all roleassignments for. + - name: workspaceId + schema: integer + required: true + description: The workspace in which the role assignments are related to. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/role/{workspace_id} + method: role + httpMethod: post + tag: Role assignments + typeScriptTag: roleAssignments + description: >- + You can assign a role to a subject into the given workspace for the given + scope with this endpoint. If you want to remove the role you can omit the + role property. + parameters: + - name: workspaceId + schema: integer + required: true + description: The workspace in which the role assignment takes place. + example: 0 + - name: subject_id + schema: integer + required: true + description: '' + example: 0 + - name: subject_type + schema: string + required: true + description: '' + example: SUBJECT_TYPE + - name: role + schema: string + required: true + description: '' + example: ROLE + - name: scope_id + schema: integer + required: true + description: '' + example: 0 + - name: scope_type + schema: string + required: true + description: '' + example: SCOPE_TYPE + responses: + - statusCode: '200' + description: Serializer for RoleAssignment used for the Open API spec + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/role/{workspace_id}/batch + method: assignRoleToGroup + httpMethod: post + tag: Role assignments + typeScriptTag: roleAssignments + description: >- + You can assign a role to a multiple subjects into the given workspace for + the given scopes with this endpoint. If you want to remove the role you + can omit the role property. + parameters: + - name: workspaceId + schema: integer + required: true + description: The workspace in which the role assignment takes place. + example: 0 + - name: items + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/row_comments/{table_id}/{row_id} + method: getAllComments + httpMethod: get + tag: Database table rows + typeScriptTag: databaseTableRows + description: |- + Returns all row comments for the specified table and row. + + This is a **premium** feature. + parameters: + - name: limit + schema: integer + description: Defines how many rows should be returned. + - name: offset + schema: integer + description: >- + Can only be used in combination with the `limit` parameter and defines + from which offset the rows should be returned. + - name: page + schema: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - name: rowId + schema: integer + required: true + description: The row to get row comments for. + example: 0 + - name: size + schema: integer + description: >- + Can only be used in combination with the `page` parameter and defines + how many rows should be returned. + - name: tableId + schema: integer + required: true + description: The table the row is in. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/row_comments/{table_id}/{row_id} + method: createComment + httpMethod: post + tag: Database table rows + typeScriptTag: databaseTableRows + description: |- + Creates a comment on the specified row. + + This is a **premium** feature. + parameters: + - name: rowId + schema: integer + required: true + description: The row to create a comment for. + example: 0 + - name: tableId + schema: integer + required: true + description: The table to find the row to comment on in. + example: 0 + - name: message + schema: object + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/row_comments/{table_id}/{row_id}/notification-mode + method: updateNotificationMode + httpMethod: put + tag: Database table rows + typeScriptTag: databaseTableRows + description: >- + Updates the user's notification preferences for comments made on a + specified table row. + + + This is a **premium** feature. + parameters: + - name: rowId + schema: integer + required: true + description: The row on which to manage the comment subscription. + example: 0 + - name: tableId + schema: integer + required: true + description: The table id where the row is in. + example: 0 + - name: mode + schema: string + required: true + description: '' + example: MODE + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/row_comments/{table_id}/comment/{comment_id} + method: deleteComment + httpMethod: delete + tag: Database table rows + typeScriptTag: databaseTableRows + description: |- + Delete a row comment. + + This is a **premium** feature. + parameters: + - name: commentId + schema: integer + required: true + description: The row comment to delete. + example: 0 + - name: tableId + schema: integer + required: true + description: The table the row is in. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/row_comments/{table_id}/comment/{comment_id} + method: updateComment + httpMethod: patch + tag: Database table rows + typeScriptTag: databaseTableRows + description: |- + Update a row comment. + + This is a **premium** feature. + parameters: + - name: commentId + schema: integer + required: true + description: The row comment to update. + example: 0 + - name: tableId + schema: integer + required: true + description: The table the row is in. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /api/settings + method: settings + httpMethod: get + tag: Settings + typeScriptTag: settings + description: Responds with all the admin configured settings. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/settings/instance-id + method: getInstanceId + httpMethod: get + tag: Settings + typeScriptTag: settings + description: >- + Responds with the self hosted instance id. Only a user with staff + permissions can request it. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/settings/update + method: settings + httpMethod: patch + tag: Settings + typeScriptTag: settings + description: Updates the admin configured settings if the user has admin permissions. + parameters: + - name: allow_new_signups + schema: boolean + description: '' + - name: allow_signups_via_workspace_invitations + schema: boolean + description: '' + - name: allow_signups_via_group_invitations + schema: boolean + description: '' + - name: allow_reset_password + schema: boolean + description: '' + - name: allow_global_workspace_creation + schema: boolean + description: '' + - name: allow_global_group_creation + schema: boolean + description: '' + - name: account_deletion_grace_delay + schema: integer + description: '' + - name: show_admin_signup_page + schema: boolean + description: '' + - name: track_workspace_usage + schema: boolean + description: '' + - name: show_baserow_help_request + schema: boolean + description: '' + - name: co_branding_logo + schema: undefined + description: '' + responses: + - statusCode: '200' + description: '' + - url: /api/snapshots/{snapshot_id} + method: snapshot + httpMethod: delete + tag: Snapshots + typeScriptTag: snapshots + description: >- + Deletes a snapshot. Deleting a snapshot doesn't affect the application + that the snapshot is made from and doesn't affect any applications that + were created by restoring it. Snapshot deletion is permanent and can't be + undone. + parameters: + - name: snapshotId + schema: integer + required: true + description: Id of the snapshot to delete. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/snapshots/{snapshot_id}/restore + method: snapshot + httpMethod: post + tag: Snapshots + typeScriptTag: snapshots + description: >- + Restores a snapshot. When an application snapshot is restored, a new + application will be created in the same workspace that the original + application was placed in with the name of the snapshot and data that were + in the original application at the time the snapshot was taken. The + original application that the snapshot was taken from is unaffected. + Snapshots can be restored multiple times and a number suffix is added to + the new application name in the case of a collision. + parameters: + - name: snapshotId + schema: integer + required: true + description: Id of the snapshot to restore. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/snapshots/application/{application_id} + method: snapshots + httpMethod: get + tag: Snapshots + typeScriptTag: snapshots + description: Lists snapshots that were created for a given application. + parameters: + - name: applicationId + schema: integer + required: true + description: Application ID for which to list snapshots. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/snapshots/application/{application_id} + method: snapshot + httpMethod: post + tag: Snapshots + typeScriptTag: snapshots + description: >- + Creates a new application snapshot. Snapshots represent a state of an + application at a specific point in time and can be restored later, making + it easy to create backups of entire applications. + parameters: + - name: applicationId + schema: integer + required: true + description: Application ID for which to list snapshots. + example: 0 + - name: id + schema: integer + required: true + description: '' + example: 0 + - name: name + schema: string + required: true + description: '' + example: NAME + - name: snapshot_from_application + schema: integer + required: true + description: '' + example: 0 + - name: created_by + schema: object + required: true + description: '' + - name: created_at + schema: string + required: true + description: '' + example: CREATED_AT + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/sso/oauth2/callback/{provider_id} + method: completeProviderCallback + httpMethod: get + tag: Auth + typeScriptTag: auth + description: >- + Processes callback from OAuth2 provider and logs the user in if + successful. + parameters: + - name: code + schema: integer + description: The id of the provider for which to process the callback. + - name: providerId + schema: integer + required: true + description: The id of the provider for which to process the callback. + example: 0 + responses: + - statusCode: default + description: No response body + - url: /api/sso/oauth2/login/{provider_id} + method: redirectToProvider + httpMethod: get + tag: Auth + typeScriptTag: auth + description: >- + Redirects to the OAuth2 provider's authentication URL based on the + provided auth provider's id. + parameters: + - name: groupInvitationToken + schema: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future. + - name: original + schema: integer + description: The relative part of URL that the user wanted to access. + - name: providerId + schema: integer + required: true + description: The id of the provider for redirect. + example: 0 + - name: workspaceInvitationToken + schema: string + description: The invitation token sent to the user to join a specific workspace. + responses: + - statusCode: default + description: No response body + - url: /api/sso/saml/acs + method: completeSamlAuthenticationFlow + httpMethod: post + tag: Auth + typeScriptTag: auth + description: >- + Complete the SAML authentication flow by validating the SAML response. + Sign in the user if already exists in Baserow or create a new one + otherwise. Once authenticated, the user will be redirected to the original + URL they were trying to access. If the response is invalid, the user will + be redirected to an error page with a specific error message.It accepts + the language code and the workspace invitation token as query parameters + if provided. + parameters: + - name: SAMLResponse + schema: string + required: true + description: '' + example: SAMLRESPONSE + - name: RelayState + schema: string + required: true + description: '' + example: RELAYSTATE + responses: + - statusCode: default + description: No response body + - url: /api/sso/saml/login + method: initiateSsoSamlLogin + httpMethod: get + tag: Auth + typeScriptTag: auth + description: >- + This is the endpoint that is called when the user wants to initiate a SSO + SAML login from Baserow (the service provider). The user will be + redirected to the SAML identity provider (https://baserow.io/docs/index + where the user can authenticate. Once logged in in the IdP, the user will + be redirected back to the assertion consumer service endpoint + (https://baserow.io/docs/index where the SAML response will be validated + and a new JWT session token will be provided to work with Baserow APIs. + parameters: + - name: email + schema: string + description: The email address of the user that want to sign in using SAML. + - name: groupInvitationToken + schema: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future + - name: language + schema: string + description: >- + An ISO 639 language code (with optional variant) selected by the user. + Ex: en-GB. + - name: original + schema: string + description: >- + The url to which the user should be redirected after a successful + login or sign up. + - name: workspaceInvitationToken + schema: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after login or signing up. + responses: + - statusCode: default + description: No response body + - url: /api/sso/saml/login-url + method: getSamlLoginUrl + httpMethod: get + tag: Auth + typeScriptTag: auth + description: >- + Return the correct redirect_url to initiate the SSO SAML login. It needs + an email address if multiple SAML providers are configured otherwise the + only configured SAML provider signup URL will be returned. + parameters: + - name: email + schema: string + description: The email address of the user that want to sign in using SAML. + - name: groupInvitationToken + schema: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future. + - name: language + schema: string + description: >- + An ISO 639 language code (with optional variant) selected by the user. + Ex: en-GB. + - name: original + schema: string + description: >- + The url to which the user should be redirected after a successful + login. + - name: workspaceInvitationToken + schema: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after login or signing up. + responses: + - statusCode: '200' + description: Unspecified response body + - statusCode: '400' + description: '' + - url: /api/teams/{team_id} + method: team + httpMethod: delete + tag: Teams + typeScriptTag: teams + description: >- + Deletes a team if the authorized user is in the team's workspace. All the + related children (e.g. subjects) are also going to be deleted. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: teamId + schema: integer + required: true + description: Deletes the team related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/teams/{team_id} + method: team + httpMethod: get + tag: Teams + typeScriptTag: teams + description: Returns the information related to the provided team id. + parameters: + - name: teamId + schema: integer + required: true + description: Returns the team related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/teams/{team_id} + method: team + httpMethod: put + tag: Teams + typeScriptTag: teams + description: Updates an existing team with a new name. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: teamId + schema: string + required: true + description: '' + example: TEAM_ID + - name: name + schema: string + required: true + description: '' + example: NAME + - name: default_role + schema: string + required: false + description: '' + - name: subjects + schema: array + required: false + description: '' + default: &ref_0 [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/teams/{team_id}/subjects + method: listSubjects + httpMethod: get + tag: Teams + typeScriptTag: teams + description: Lists all team subjects in a given team. + parameters: + - name: teamId + schema: string + required: true + description: '' + example: TEAM_ID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /api/teams/{team_id}/subjects + method: subject + httpMethod: post + tag: Teams + typeScriptTag: teams + description: Creates a new team subject. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: teamId + schema: string + required: true + description: '' + example: TEAM_ID + - name: id + schema: integer + required: true + description: '' + example: 0 + - name: subject_id + schema: integer + required: false + description: '' + - name: subject_user_email + schema: string + required: false + description: '' + - name: subject_type + schema: string + required: true + description: '' + example: SUBJECT_TYPE + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/teams/{team_id}/subjects/{subject_id} + method: subject + httpMethod: delete + tag: Teams + typeScriptTag: teams + description: Deletes a subject if the authorized user is in the team's workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: subjectId + schema: integer + required: true + description: The subject id to remove from the team. + example: 0 + - name: teamId + schema: integer + required: true + description: The team id which the subject will be removed from. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/teams/{team_id}/subjects/{subject_id} + method: subject + httpMethod: get + tag: Teams + typeScriptTag: teams + description: Returns the information related to the provided subject id + parameters: + - name: subjectId + schema: integer + required: true + description: Returns the subject related to the provided value. + example: 0 + - name: teamId + schema: string + required: true + description: '' + example: TEAM_ID + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/teams/group/{group_id} + method: getAllInGroup + httpMethod: get + tag: Teams + typeScriptTag: teams + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_list_teams](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all teams in a given group. + parameters: + - name: groupId + schema: integer + required: true + description: Lists all teams in a given group. + example: 0 + - name: search + schema: string + description: Search for teams by their name. + - name: sorts + schema: string + description: Sort teams by name or subjects. + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/teams/group/{group_id} + method: createInGroup + httpMethod: post + tag: Teams + typeScriptTag: teams + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_create_team](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new team in a given group. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: groupId + schema: string + required: true + description: '' + example: GROUP_ID + - name: name + schema: string + required: true + description: '' + example: NAME + - name: default_role + schema: string + required: false + description: '' + - name: subjects + schema: array + required: false + description: '' + default: *ref_0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/teams/workspace/{workspace_id} + method: listInWorkspace + httpMethod: get + tag: Teams + typeScriptTag: teams + description: Lists all teams in a given workspace. + parameters: + - name: search + schema: string + description: Search for teams by their name. + - name: sorts + schema: string + description: Sort teams by name or subjects. + - name: workspaceId + schema: integer + required: true + description: Lists all teams in a given workspace. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/teams/workspace/{workspace_id} + method: createNewTeam + httpMethod: post + tag: Teams + typeScriptTag: teams + description: Creates a new team. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: workspaceId + schema: string + required: true + description: '' + example: WORKSPACE_ID + - name: name + schema: string + required: true + description: '' + example: NAME + - name: default_role + schema: string + required: false + description: '' + - name: subjects + schema: array + required: false + description: '' + default: *ref_0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/templates + method: templates + httpMethod: get + tag: Templates + typeScriptTag: templates + description: >- + Lists all the template categories and the related templates that are in + that category. The template's `workspace_id` can be used for previewing + purposes because that workspace contains the applications that are in the + template. All the `get` and `list` endpoints related to that workspace are + publicly accessible. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/templates/install/{group_id}/{template_id} + method: installApplications + httpMethod: post + tag: Templates + typeScriptTag: templates + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_install_template](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Installs the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: groupId + schema: integer + required: true + description: >- + The id related to the group where the template applications must be + installed into. + example: 0 + - name: templateId + schema: integer + required: true + description: The id related to the template that must be installed. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/templates/install/{group_id}/{template_id}/async + method: startAsyncJob + httpMethod: post + tag: Templates + typeScriptTag: templates + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_install_template_async](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Start an async job to install the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: groupId + schema: integer + required: true + description: >- + The id related to the group where the template applications must be + installed into. + example: 0 + - name: templateId + schema: integer + required: true + description: The id related to the template that must be installed. + example: 0 + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/templates/install/{workspace_id}/{template_id} + method: template + httpMethod: post + tag: Templates + typeScriptTag: templates + description: >- + (https://baserow.io/docs/index Installs the applications of the given + template into the given workspace if the user has access to that + workspace. The response contains those newly created applications. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: templateId + schema: integer + required: true + description: The id related to the template that must be installed. + example: 0 + - name: workspaceId + schema: integer + required: true + description: >- + The id related to the workspace where the template applications must + be installed into. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/templates/install/{workspace_id}/{template_id}/async + method: startAsyncJob + httpMethod: post + tag: Templates + typeScriptTag: templates + description: >- + Start an async job to install the applications of the given template into + the given workspace if the user has access to that workspace. The response + contains those newly created applications. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: templateId + schema: integer + required: true + description: The id related to the template that must be installed. + example: 0 + - name: workspaceId + schema: integer + required: true + description: >- + The id related to the workspace where the template applications must + be installed into. + example: 0 + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/trash + method: inspectTrashContents + httpMethod: get + tag: Trash + typeScriptTag: trash + description: >- + Responds with the workspaces and applications available for the requesting + user to inspect the trash contents of. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/trash/group/{group_id} + method: emptyGroupContents + httpMethod: delete + tag: Trash + typeScriptTag: trash + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_empty_contents](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Empties the specified group and/or application of trash, including the group and application themselves if they are trashed also. + parameters: + - name: applicationId + schema: integer + description: >- + Optionally filters down the trash to delete to only items for this + application in the group. + - name: groupId + schema: integer + required: true + description: >- + The group whose trash contents to empty, including the group itself if + it is also trashed. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - url: /api/trash/group/{group_id} + method: getGroupContents + httpMethod: get + tag: Trash + typeScriptTag: trash + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_get_contents](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Responds with trash contents for a group optionally filtered to a specific application. + parameters: + - name: applicationId + schema: integer + description: >- + Optionally filters down the trash to only items for this application + in the group. + - name: groupId + schema: integer + required: true + description: Returns the trash for the group with this id. + example: 0 + - name: page + schema: integer + description: Selects which page of trash contents should be returned. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /api/trash/restore + method: restoreItem + httpMethod: patch + tag: Trash + typeScriptTag: trash + description: Restores the specified trashed item back into baserow. + parameters: + - name: trash_item_id + schema: integer + description: '' + - name: parent_trash_item_id + schema: integer + description: '' + - name: trash_item_type + schema: string + description: '' + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - url: /api/trash/workspace/{workspace_id} + method: emptyWorkspace + httpMethod: delete + tag: Trash + typeScriptTag: trash + description: >- + Empties the specified workspace and/or application of trash, including the + workspace and application themselves if they are trashed also. + parameters: + - name: applicationId + schema: integer + description: >- + Optionally filters down the trash to delete to only items for this + application in the workspace. + - name: workspaceId + schema: integer + required: true + description: >- + The workspace whose trash contents to empty, including the workspace + itself if it is also trashed. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - url: /api/trash/workspace/{workspace_id} + method: getWorkspaceTrashContents + httpMethod: get + tag: Trash + typeScriptTag: trash + description: >- + Responds with trash contents for a workspace optionally filtered to a + specific application. + parameters: + - name: applicationId + schema: integer + description: >- + Optionally filters down the trash to only items for this application + in the workspace. + - name: page + schema: integer + description: Selects which page of trash contents should be returned. + - name: workspaceId + schema: integer + required: true + description: Returns the trash for the workspace with this id. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /api/user + method: user + httpMethod: post + tag: User + typeScriptTag: user + description: >- + Creates a new user based on the provided values. If desired an + authentication JWT can be generated right away. After creating an account + the initial workspace containing a database is created. + parameters: + - name: name + schema: string + required: true + description: '' + example: NAME + - name: email + schema: string + required: true + description: '' + example: EMAIL + - name: password + schema: string + required: true + description: '' + example: PASSWORD + - name: language + schema: string + required: false + description: '' + default: en + - name: authenticate + schema: boolean + required: false + description: '' + default: false + - name: group_invitation_token + schema: string + required: false + description: '' + - name: workspace_invitation_token + schema: string + required: false + description: '' + - name: template_id + schema: integer + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/user-files/upload-file + method: file + httpMethod: post + tag: User files + typeScriptTag: userFiles + description: >- + Uploads a file to Baserow by uploading the file contents directly. A + `file` multipart is expected containing the file contents. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /api/user-files/upload-via-url + method: uploadViaUrl + httpMethod: post + tag: User files + typeScriptTag: userFiles + description: Uploads a file to Baserow by downloading it from the provided URL. + parameters: + - name: url + schema: string + required: true + description: '' + example: URL + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - url: /api/user-source-auth-refresh + method: refreshAccessToken + httpMethod: post + tag: User sources + typeScriptTag: userSources + description: >- + Generate a new access_token that can be used to continue operating on + Baserow with a user source user starting from a valid refresh token. + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /api/user-source-token-blacklist + method: blacklistToken + httpMethod: post + tag: User sources + typeScriptTag: userSources + description: >- + Blacklists the provided user source token. This can be used the sign the + user off. + parameters: + - name: refresh + schema: string + required: true + description: '' + example: REFRESH + responses: + - statusCode: '204' + description: No response body + - statusCode: '401' + description: '' + - url: /api/user-source/{user_source_id} + method: removeById + httpMethod: delete + tag: User sources + typeScriptTag: userSources + description: Deletes the user_source related by the given id. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: userSourceId + schema: integer + required: true + description: The id of the user_source + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/user-source/{user_source_id} + method: updateExistingUserSource + httpMethod: patch + tag: User sources + typeScriptTag: userSources + description: Updates an existing user_source. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: userSourceId + schema: integer + required: true + description: The id of the user_source + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/user-source/{user_source_id}/move + method: rearrangeUserSource + httpMethod: patch + tag: User sources + typeScriptTag: userSources + description: >- + Moves the user_source in the application before another user_source or at + the end of the application if no before user_source is given. The + user_sources must belong to the same application. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: userSourceId + schema: integer + required: true + description: The id of the user_source to move + example: 0 + - name: before_id + schema: integer + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/user/account + method: account + httpMethod: patch + tag: User + typeScriptTag: user + description: Updates the account information of the authenticated user. + parameters: + - name: first_name + schema: string + description: '' + - name: language + schema: string + description: '' + - name: email_notification_frequency + schema: string + description: '' + responses: + - statusCode: '200' + description: This serializer must be kept in sync with `UserSerializer`. + - statusCode: '400' + description: '' + - url: /api/user/change-password + method: password + httpMethod: post + tag: User + typeScriptTag: user + description: >- + Changes the password of an authenticated user, but only if the old + password matches. + parameters: + - name: old_password + schema: string + required: true + description: '' + example: OLD_PASSWORD + - name: new_password + schema: string + required: true + description: '' + example: NEW_PASSWORD + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - url: /api/user/dashboard + method: viewPendingWorkspaceInvitations + httpMethod: get + tag: User + typeScriptTag: user + description: >- + Lists all the relevant user information that for example could be shown on + a dashboard. It will contain all the pending workspace invitations for + that user. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/user/redo + method: redoAction + httpMethod: patch + tag: User + typeScriptTag: user + description: >- + Redoes the latest redoable action performed by the user making the + request. a ClientSessionId header must be provided and only actions which + were performed the same user with the same ClientSessionId value set on + the api request that performed the action will be redone.Additionally the + ClientSessionId header must be between 1 and 256 characters long and must + only contain alphanumeric or the - characters. + parameters: + - name: clientSessionId + schema: string + required: true + description: >- + The particular client session to redo actions for. The actions must + have been performed with this same header set with the same value for + them to be redoable by this endpoint. + example: CLIENTSESSIONID + - name: scopes + schema: object + description: '' + responses: + - statusCode: '200' + description: '' + - url: /api/user/reset-password + method: password + httpMethod: post + tag: User + typeScriptTag: user + description: >- + Changes the password of a user if the reset token is valid. The + **send_password_reset_email** endpoint sends an email to the user + containing the token. That token can be used to change the password here + without providing the old password. + parameters: + - name: token + schema: string + required: true + description: '' + example: TOKEN + - name: password + schema: string + required: true + description: '' + example: PASSWORD + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - url: /api/user/schedule-account-deletion + method: scheduleAccountDeletion + httpMethod: post + tag: User + typeScriptTag: user + description: >- + Schedules the account deletion of the authenticated user. The user will be + permanently deleted after the grace delay defined by the instance + administrator. + parameters: [] + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - url: /api/user/send-reset-password-email + method: sendResetPasswordEmail + httpMethod: post + tag: User + typeScriptTag: user + description: >- + Sends an email containing the password reset link to the email address of + the user. This will only be done if a user is found with the given email + address. The endpoint will not fail if the email address is not found. The + link is going to the valid for 48 hours. + parameters: + - name: email + schema: string + required: true + description: '' + example: EMAIL + - name: base_url + schema: string + required: true + description: '' + example: BASE_URL + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - url: /api/user/token-auth + method: auth + httpMethod: post + tag: User + typeScriptTag: user + description: >- + Authenticates an existing user based on their email and their password. If + successful, an access token and a refresh token will be returned. + parameters: + - name: email + schema: string + required: false + description: '' + - name: username + schema: string + required: false + description: '' + - name: password + schema: string + required: true + description: '' + example: PASSWORD + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /api/user/token-blacklist + method: blacklist + httpMethod: post + tag: User + typeScriptTag: user + description: Blacklists the provided token. This can be used the sign the user off. + parameters: + - name: refresh + schema: string + required: true + description: '' + example: REFRESH + responses: + - statusCode: '204' + description: No response body + - statusCode: '401' + description: '' + - url: /api/user/token-refresh + method: refresh + httpMethod: post + tag: User + typeScriptTag: user + description: >- + Generate a new access_token that can be used to continue operating on + Baserow starting from a valid refresh token. + parameters: + - name: access + schema: string + required: true + description: '' + example: ACCESS + - name: refresh_token + schema: string + required: false + description: '' + - name: token + schema: string + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /api/user/token-verify + method: verify + httpMethod: post + tag: User + typeScriptTag: user + description: >- + Verifies if the refresh token is valid and can be used to generate a new + access_token. + parameters: + - name: token + schema: string + required: false + description: '' + - name: refresh_token + schema: string + required: true + description: '' + example: REFRESH_TOKEN + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /api/user/undo + method: undoLatestUndoableAction + httpMethod: patch + tag: User + typeScriptTag: user + description: >- + undoes the latest undoable action performed by the user making the + request. a ClientSessionId header must be provided and only actions which + were performed the same user with the same ClientSessionId value set on + the api request that performed the action will be undone.Additionally the + ClientSessionId header must be between 1 and 256 characters long and must + only contain alphanumeric or the - characters. + parameters: + - name: clientSessionId + schema: string + required: true + description: >- + The particular client session to undo actions for. The actions must + have been performed with this same header set with the same value for + them to be undoable by this endpoint. + example: CLIENTSESSIONID + - name: scopes + schema: object + description: '' + responses: + - statusCode: '200' + description: '' + - url: /api/workspaces + method: workspaces + httpMethod: get + tag: Workspaces + typeScriptTag: workspaces + description: >- + Lists all the workspaces of the authorized user. A workspace can contain + multiple applications like a database. Multiple users can have access to a + workspace. For example each company could have their own workspace + containing databases related to that company. The order of the workspaces + are custom for each user. The order is configurable via the + **order_workspaces** endpoint. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /api/workspaces + method: workspace + httpMethod: post + tag: Workspaces + typeScriptTag: workspaces + description: >- + Creates a new workspace where only the authorized user has access to. No + initial data like database applications are added, they have to be created + via other endpoints. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: id + schema: integer + required: true + description: '' + example: 0 + - name: name + schema: string + required: true + description: '' + example: NAME + responses: + - statusCode: '200' + description: >- + This serializers includes relevant fields of the Workspace model, but + also + + some WorkspaceUser specific fields related to the workspace user + relation. + + + Additionally, the list of users are included for each workspace. + - url: /api/workspaces/{workspace_id} + method: workspace + httpMethod: delete + tag: Workspaces + typeScriptTag: workspaces + description: >- + Deletes an existing workspace if the authorized user belongs to the + workspace. All the applications, databases, tables etc that were in the + workspace are going to be deleted also. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: workspaceId + schema: integer + required: true + description: Deletes the workspace related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/{workspace_id} + method: workspace + httpMethod: patch + tag: Workspaces + typeScriptTag: workspaces + description: >- + Updates the existing workspace related to the provided `workspace_id` + parameter if the authorized user belongs to the workspace. It is not yet + possible to add additional users to a workspace. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: workspaceId + schema: integer + required: true + description: Updates the workspace related to the provided value. + example: 0 + - name: id + schema: integer + description: '' + - name: name + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/{workspace_id}/leave + method: workspace + httpMethod: post + tag: Workspaces + typeScriptTag: workspaces + description: >- + Makes the authenticated user leave the workspace related to the provided + `workspace_id` if the user is in that workspace. If the user is the last + admin in the workspace, they will not be able to leave it. There must + always be one admin in the workspace, otherwise it will be left without + control. If that is the case, they must either delete the workspace or + give another member admin permissions first. + parameters: + - name: workspaceId + schema: integer + required: true + description: Leaves the workspace related to the value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/{workspace_id}/permissions + method: permissions + httpMethod: get + tag: Workspaces + typeScriptTag: workspaces + description: >- + Returns a the permission data necessary to determine the permissions of a + specific user over a specific workspace. + + See `core.handler.CoreHandler.get_permissions()` for more details. + parameters: + - name: workspaceId + schema: integer + required: true + description: The workspace id we want the permission object for. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/invitations/{workspace_invitation_id} + method: deleteInvitation + httpMethod: delete + tag: Workspace invitations + typeScriptTag: workspaceInvitations + description: >- + Deletes a workspace invitation if the authorized user has admin rights to + the related workspace. + parameters: + - name: workspaceInvitationId + schema: integer + required: true + description: Deletes the workspace invitation related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/invitations/{workspace_invitation_id} + method: getById + httpMethod: get + tag: Workspace invitations + typeScriptTag: workspaceInvitations + description: >- + Returns the requested workspace invitation if the authorized user has + admin right to the related workspace + parameters: + - name: workspaceInvitationId + schema: integer + required: true + description: Returns the workspace invitation related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/invitations/{workspace_invitation_id} + method: updateExistingInvitation + httpMethod: patch + tag: Workspace invitations + typeScriptTag: workspaceInvitations + description: >- + Updates the existing workspace invitation related to the provided + `workspace_invitation_id` param if the authorized user has admin rights to + the related workspace. + parameters: + - name: workspaceInvitationId + schema: integer + required: true + description: Updates the workspace invitation related to the provided value. + example: 0 + - name: permissions + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/invitations/{workspace_invitation_id}/accept + method: acceptInvitation + httpMethod: post + tag: Workspace invitations + typeScriptTag: workspaceInvitations + description: >- + Accepts a workspace invitation with the given id if the email address of + the user matches that of the invitation. + parameters: + - name: workspaceInvitationId + schema: integer + required: true + description: Accepts the workspace invitation related to the provided value. + example: 0 + responses: + - statusCode: '200' + description: >- + This serializers includes relevant fields of the Workspace model, but + also + + some WorkspaceUser specific fields related to the workspace user + relation. + + + Additionally, the list of users are included for each workspace. + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/invitations/{workspace_invitation_id}/reject + method: rejectInvitation + httpMethod: post + tag: Workspace invitations + typeScriptTag: workspaceInvitations + description: >- + Rejects a workspace invitation with the given id if the email address of + the user matches that of the invitation. + parameters: + - name: workspaceInvitationId + schema: integer + required: true + description: Rejects the workspace invitation related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/invitations/token/{token} + method: getByToken + httpMethod: get + tag: Workspace invitations + typeScriptTag: workspaceInvitations + description: >- + Responds with the serialized workspace invitation if an invitation with + the provided token is found. + parameters: + - name: token + schema: string + required: true + description: Returns the workspace invitation related to the provided token. + example: TOKEN + responses: + - statusCode: '200' + description: >- + This serializer is used for displaying the invitation to the user that + doesn't + + have access to the workspace yet, so not for invitation management + purposes. + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/invitations/workspace/{workspace_id} + method: list + httpMethod: get + tag: Workspace invitations + typeScriptTag: workspaceInvitations + description: >- + Lists all the workspace invitations of the workspace related to the + provided `workspace_id` parameter if the authorized user has admin rights + to that workspace. + parameters: + - name: workspaceId + schema: integer + required: true + description: >- + Returns only invitations that are in the workspace related to the + provided value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/invitations/workspace/{workspace_id} + method: createInvite + httpMethod: post + tag: Workspace invitations + typeScriptTag: workspaceInvitations + description: >- + Creates a new workspace invitations for an email address if the authorized + user has admin rights to the related workspace. An email containing a sign + up link will be send to the user. + parameters: + - name: workspaceId + schema: integer + required: true + description: >- + Creates a workspace invitation to the workspace related to the + provided value. + example: 0 + - name: email + schema: string + required: true + description: '' + example: EMAIL + - name: permissions + schema: string + required: false + description: '' + - name: message + schema: string + required: false + description: '' + - name: base_url + schema: string + required: true + description: '' + example: BASE_URL + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/order + method: workspaces + httpMethod: post + tag: Workspaces + typeScriptTag: workspaces + description: >- + Changes the order of the provided workspace ids to the matching position + that the id has in the list. If the authorized user does not belong to the + workspace it will be ignored. The order will be custom for each user. + parameters: + - name: clientSessionId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - name: clientUndoRedoActionGroupId + schema: string + description: >- + An optional header that marks the action performed by this request as + having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - name: workspaces + schema: array + required: true + description: '' + responses: + - statusCode: '204' + description: No response body + - url: /api/workspaces/users/{workspace_user_id} + method: deleteUser + httpMethod: delete + tag: Workspaces + typeScriptTag: workspaces + description: >- + Deletes a workspace user if the authorized user has admin rights to the + related workspace. + parameters: + - name: workspaceUserId + schema: integer + required: true + description: Deletes the workspace user related to the provided value. + example: 0 + responses: + - statusCode: '204' + description: No response body + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/users/{workspace_user_id} + method: updateWorkspaceUser + httpMethod: patch + tag: Workspaces + typeScriptTag: workspaces + description: >- + Updates the existing workspace user related to the provided + `workspace_user_id` param if the authorized user has admin rights to the + related workspace. + parameters: + - name: workspaceUserId + schema: integer + required: true + description: Updates the workspace user related to the provided value. + example: 0 + - name: permissions + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' + - url: /api/workspaces/users/workspace/{workspace_id} + method: listUsersInWorkspace + httpMethod: get + tag: Workspaces + typeScriptTag: workspaces + description: >- + Lists all the users that are in a workspace if the authorized user has + admin permissions to the related workspace. To add a user to a workspace + an invitation must be sent first. + parameters: + - name: search + schema: string + description: Search for workspace users by username, or email. + - name: sorts + schema: string + description: Sort workspace users by name, email or role. + - name: workspaceId + schema: integer + required: true + description: Lists workspace users related to the provided workspace value. + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '404' + description: '' +numberOfSchemas: 1137 +apiDescription: >- + 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). diff --git a/sdks/db/cached-method-objects/from-custom-request_beamlend.com.yaml b/sdks/db/cached-method-objects/from-custom-request_beamlend.com.yaml index 5a1d0ff98f..5b1130f5bf 100644 --- a/sdks/db/cached-method-objects/from-custom-request_beamlend.com.yaml +++ b/sdks/db/cached-method-objects/from-custom-request_beamlend.com.yaml @@ -1,4 +1,4 @@ -hash: e81329638eef979f00d4238f77759c8b03bbd959a51322c9efb8d86140096efe +hash: d2c7aad764c9627d1f6386272afebc28c9d00fecc869a28b914231df4ea69b0a methodObjects: - url: /v1/applications/applications/{application_id} method: getById @@ -590,7 +590,7 @@ apiDescription: >- statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated - credit decisions. + credit decisions. Our completely digital customer onboarding process allows for near-instant diff --git a/sdks/db/cached-method-objects/from-custom-request_browse.ai.yaml b/sdks/db/cached-method-objects/from-custom-request_browse.ai.yaml new file mode 100644 index 0000000000..b1dd6b0700 --- /dev/null +++ b/sdks/db/cached-method-objects/from-custom-request_browse.ai.yaml @@ -0,0 +1,820 @@ +hash: 24f8c2aeefdf7b7fc9a228c30505cec5cf72e3547e0213ccb1a4482403c71540 +methodObjects: + - url: /status + method: checkInfrastructureStatus + httpMethod: get + tag: system + typeScriptTag: system + description: Endpoint for checking the status of Browse AI infrastructure + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /teams + method: getTeamsByAuth0AccessToken + httpMethod: get + tag: internal + typeScriptTag: internal + description: Retrieve list of teams under user account + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /robots + method: listRetrieval + httpMethod: get + tag: robots + typeScriptTag: robots + description: Retrieve list of robots under your account + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - url: /robots/{robotId} + method: getById + httpMethod: get + tag: robots + typeScriptTag: robots + description: Retrieve single robot by ID + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID You can find a robot's ID by opening it on the + dashboard and copying its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /robots/{robotId}/cookies + method: updateCookies + httpMethod: patch + tag: robots + typeScriptTag: robots + description: Update a robot's cookies + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /robots/{robotId}/tasks + method: getAllByRobot + httpMethod: get + tag: tasks + typeScriptTag: tasks + description: Get all tasks by a robot + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: page + schema: integer + required: false + description: Page number + example: 1 + - name: pageSize + schema: integer + required: false + description: Page size + example: 10 + default: 10 + - name: status + schema: string + required: false + description: Task status + example: successful + - name: robotBulkRunId + schema: string + required: false + description: filter the result based on robot bulk run ID + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + - name: sort + schema: string + required: false + description: >- + A comma separated list of fields to sort by. Default sorting is + ascending and prefixing field names with a hyphen '-' yields a + descending order. + example: '-createdAt,finishedAt' + - name: includeRetried + schema: boolean + required: false + description: by passing false you can exclude the retried tasks + example: false + - name: fromDate + schema: integer + required: false + description: From task creation date and time in the form of a Unix timestamp + example: 1678795867879 + - name: toDate + schema: integer + required: false + description: To task creation date and time in the form of a Unix timestamp + example: 1678795867879 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - url: /robots/{robotId}/tasks + method: runRobotTask + httpMethod: post + tag: tasks + typeScriptTag: tasks + description: Run a robot + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: recordVideo + schema: boolean + description: '' + example: false + - name: inputParameters + schema: object + description: '' + example: &ref_0 + originUrl: https://www.ycombinator.com/companies/airbnb + companies_skip: 0 + companies_limit: 10 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - statusCode: '503' + description: '' + - url: /robots/{robotId}/tasks/{taskId} + method: getTaskDetails + httpMethod: get + tag: tasks + typeScriptTag: tasks + description: Retrieve a task + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: taskId + schema: string + required: true + description: Unique task ID + example: f3672790-4561-424b-8a7b-7b7df182b236 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /robots/{robotId}/monitors + method: getList + httpMethod: get + tag: monitors + typeScriptTag: monitors + description: Retrieve a robot's monitors + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /robots/{robotId}/monitors + method: createNew + httpMethod: post + tag: monitors + typeScriptTag: monitors + description: Create a new monitor on a robot + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: name + schema: string + required: true + description: '' + example: Monitor Products + - name: inputParameters + schema: object + required: true + description: '' + example: *ref_0 + - name: schedules + schema: array + required: false + description: '' + example: &ref_1 + - type: FIXED_INTERVAL + everyMinutes: 60 + - name: schedule + schema: string + required: false + description: '' + example: FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR + - name: notifyOnCapturedScreenshotChange + schema: boolean + required: true + description: '' + example: true + - name: notifyOnCapturedTextChange + schema: boolean + required: true + description: '' + example: true + - name: capturedScreenshotNotificationThreshold + schema: number + required: true + description: '' + example: 15 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /robots/{robotId}/monitors/{monitorId} + method: deleteRobotMonitor + httpMethod: delete + tag: monitors + typeScriptTag: monitors + description: Delete a robot's monitor + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: monitorId + schema: string + required: true + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /robots/{robotId}/monitors/{monitorId} + method: getRobotMonitor + httpMethod: get + tag: monitors + typeScriptTag: monitors + description: Retrieve a robot's monitor + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: monitorId + schema: string + required: true + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /robots/{robotId}/monitors/{monitorId} + method: updateRobotMonitor + httpMethod: patch + tag: monitors + typeScriptTag: monitors + description: Update a robot's monitor + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: monitorId + schema: string + required: true + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + - name: name + schema: string + description: '' + example: Monitor Products + - name: status + schema: string + description: '' + example: active + - name: inputParameters + schema: object + description: '' + example: *ref_0 + - name: schedules + schema: array + description: '' + example: *ref_1 + - name: schedule + schema: string + description: '' + example: FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR + - name: notifyOnCapturedScreenshotChange + schema: boolean + description: '' + example: true + - name: notifyOnCapturedTextChange + schema: boolean + description: '' + example: true + - name: capturedScreenshotNotificationThreshold + schema: number + description: '' + example: 15 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /robots/{robotId}/bulk-runs + method: getList + httpMethod: get + tag: bulk runs + typeScriptTag: bulkRuns + description: Retrieve a robot's bulk runs list + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: page + schema: integer + required: false + description: Page number + example: 1 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /robots/{robotId}/bulk-runs + method: executeTasks + httpMethod: post + tag: bulk runs + typeScriptTag: bulkRuns + description: Bulk run tasks + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: title + schema: string + required: false + description: '' + example: Bulk Run Title + - name: inputParameters + schema: array + required: true + description: '' + example: + - originUrl: https://www.ycombinator.com/companies/airbnb + companies_skip: 0 + companies_limit: 10 + - originUrl: https://www.ycombinator.com/companies/coinbase + companies_skip: 0 + companies_limit: 20 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - statusCode: '503' + description: '' + - url: /robots/{robotId}/bulk-runs/{bulkRunId} + method: getRobotBulkRun + httpMethod: get + tag: bulk runs + typeScriptTag: bulkRuns + description: Retrieve a robot's bulk run + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: bulkRunId + schema: string + required: true + description: | + Unique bulk run ID + example: 5aa4df52-25bb-48da-bf38-ce4f2bd98dd5 + - name: page + schema: integer + required: false + description: Page number + example: 1 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /robots/{robotId}/webhooks + method: getList + httpMethod: get + tag: webhooks + typeScriptTag: webhooks + description: Retrieve a robot's webhooks + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /robots/{robotId}/webhooks + method: createNewOnRobot + httpMethod: post + tag: webhooks + typeScriptTag: webhooks + description: Create a new webhook on a robot + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: hookUrl + schema: string + required: true + description: '' + example: https://example.com/v2/webhooks/callback/events + - name: eventType + schema: string + required: true + description: '' + example: taskFinished + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /robots/{robotId}/webhooks/{webhookId} + method: deleteRobotWebhook + httpMethod: delete + tag: webhooks + typeScriptTag: webhooks + description: Delete a robot's webhook + parameters: + - name: authorization + schema: string + required: true + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + example: Bearer YOUR_SECRET_API_KEY + - name: robotId + schema: string + required: true + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - name: webhookId + schema: string + required: true + description: | + Unique webhookId ID + example: 6d7f1218-43fb-4735-ac71-21e81b1ab23e + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' +numberOfSchemas: 72 +apiDescription: >- + If you are still using the deprecated API v1 version, you can see its + documentation [here](https://www.browse.ai/docs/api/v1). diff --git a/sdks/db/cached-method-objects/from-custom-request_chatkitty.com.yaml b/sdks/db/cached-method-objects/from-custom-request_chatkitty.com.yaml new file mode 100644 index 0000000000..973a04b5af --- /dev/null +++ b/sdks/db/cached-method-objects/from-custom-request_chatkitty.com.yaml @@ -0,0 +1,2105 @@ +hash: 8af5484d1b3b7acbcb012ffc4a77fb153e6067d089cea1df669283674eaacab9 +methodObjects: + - url: /v1/analytics/messages + method: exportMessageAnalyticsData + httpMethod: post + tag: analytics + typeScriptTag: analytics + description: Export message analytics + parameters: [] + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/analytics/users + method: exportUserAnalyticsData + httpMethod: post + tag: analytics + typeScriptTag: analytics + description: Export user analytics + parameters: [] + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/application + method: getAuthenticated + httpMethod: get + tag: application + typeScriptTag: application + description: Retrieve the authenticated application + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/application/settings + method: getSettings + httpMethod: get + tag: application + typeScriptTag: application + description: Retrieve the authenticated application settings + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/application/settings + method: updateSettings + httpMethod: put + tag: application + typeScriptTag: application + description: Update the authenticated application settings + parameters: + - name: guest_users + schema: string + required: true + description: '' + example: GUEST_USERS + - name: user_created_channels + schema: string + required: true + description: '' + example: USER_CREATED_CHANNELS + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels + method: list + httpMethod: get + tag: channels + typeScriptTag: channels + description: List channels + parameters: + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + - name: type + schema: string + required: false + description: Filters by channel type + - name: members + schema: array + required: false + description: Filters by channel members using their usernames + - name: startTime + schema: string + required: false + description: 'Filters for channels created within a time range: start time' + - name: endTime + schema: string + required: false + description: 'Filters for channels created within a time range: end time' + - name: properties + schema: string + required: false + description: Filters by channel custom properties + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels + method: createChannel + httpMethod: post + tag: channels + typeScriptTag: channels + description: Create a channel + parameters: + - name: type + schema: string + required: true + description: '' + example: TYPE + - name: creator + schema: object + required: false + description: '' + example: &ref_0 + username: jane@chatkitty.com + - name: members + schema: array + required: false + description: '' + - name: properties + schema: object + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id} + method: deleteById + httpMethod: delete + tag: channels + typeScriptTag: channels + description: Delete a channel + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id} + method: getById + httpMethod: get + tag: channels + typeScriptTag: channels + description: Retrieve a channel + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id} + method: updateProperties + httpMethod: patch + tag: channels + typeScriptTag: channels + description: Update a channel + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/events + method: sendEvent + httpMethod: post + tag: channels + typeScriptTag: channels + description: Send a channel event + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: type + schema: string + required: true + description: '' + example: TYPE + - name: properties + schema: object + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/invites + method: listInvites + httpMethod: get + tag: channels + typeScriptTag: channels + description: List channel invites + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/invites + method: sendInvite + httpMethod: post + tag: channels + typeScriptTag: channels + description: Send a channel invite + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: user + schema: object + required: true + description: '' + example: *ref_0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/keystrokes + method: sendKeystrokes + httpMethod: post + tag: channels + typeScriptTag: channels + description: Send channel keystrokes + parameters: + - name: id + schema: integer + required: true + description: '' + example: 0 + - name: keys + schema: string + required: true + description: '' + example: KEYS + - name: user + schema: object + required: true + description: '' + example: *ref_0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/members + method: listMembersPage + httpMethod: get + tag: channels + typeScriptTag: channels + description: List a channel's members + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/members + method: addMember + httpMethod: post + tag: channels + typeScriptTag: channels + description: Add a channel member + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: username + schema: string + description: '' + example: jane@chatkitty.com + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/members/{user_id} + method: removeMember + httpMethod: delete + tag: channels + typeScriptTag: channels + description: Remove a channel member + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: userId + schema: integer + required: true + description: User ID of member to be removed + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/memberships + method: listMembershipsPage + httpMethod: get + tag: channels + typeScriptTag: channels + description: List channel memberships + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/messages + method: listMessagesPage + httpMethod: get + tag: channels + typeScriptTag: channels + description: List channel messages + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + - name: start + schema: integer + required: false + description: >- + Start cursor value. Do not set manually. Provided by the Platform API + pagination engine to fetch previous or next pages + - name: next + schema: integer + required: false + description: >- + Next page cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch subsequent pages + - name: relation + schema: string + required: false + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + - name: username + schema: string + required: false + description: '' + - name: query + schema: string + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/messages + method: sendChannelMessage + httpMethod: post + tag: channels + typeScriptTag: channels + description: Send a channel message + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: type + schema: string + required: true + description: '' + example: TYPE + - name: group_tag + schema: string + required: false + description: '' + - name: properties + schema: object + required: false + description: '' + - name: user + schema: object + required: false + description: '' + example: *ref_0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/moderators + method: listModeratorsPage + httpMethod: get + tag: channels + typeScriptTag: channels + description: Lists a channel's moderators + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/moderators + method: addModerator + httpMethod: post + tag: channels + typeScriptTag: channels + description: Add a channel moderator + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: username + schema: string + description: '' + example: jane@chatkitty.com + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/moderators/{user_id} + method: removeModerator + httpMethod: delete + tag: channels + typeScriptTag: channels + description: Remove a channel moderator + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: userId + schema: integer + required: true + description: User ID of moderator to be removed + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/participants + method: listParticipantsPage + httpMethod: get + tag: channels + typeScriptTag: channels + description: List channel participants + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/channels/{id}/reported-messages + method: listReportedMessagesPage + httpMethod: get + tag: channels + typeScriptTag: channels + description: List channel reported messages + parameters: + - name: id + schema: integer + required: true + description: Channel ID + example: 0 + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/chat-sessions + method: listPage + httpMethod: get + tag: chat-sessions + typeScriptTag: chatSessions + description: List chat sessions + parameters: + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + - name: state + schema: string + required: false + description: Filters by state + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/function-versions/{id} + method: getById + httpMethod: get + tag: function-versions + typeScriptTag: functionVersions + description: Retrieve a chat function version + parameters: + - name: id + schema: integer + required: true + description: Chat function version ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/functions/{id} + method: getById + httpMethod: get + tag: functions + typeScriptTag: functions + description: Retrieve a chat function + parameters: + - name: id + schema: integer + required: true + description: Chat function ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/functions/{id}/current-version + method: getCurrentVersion + httpMethod: get + tag: functions + typeScriptTag: functions + description: Retrieve chat function current version + parameters: + - name: id + schema: integer + required: true + description: Chat function ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/functions/{id}/invocations + method: listInvocationsPage + httpMethod: get + tag: functions + typeScriptTag: functions + description: List chat function invocations + parameters: + - name: id + schema: integer + required: true + description: Chat function ID + example: 0 + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/functions/{id}/versions + method: listVersionsPage + httpMethod: get + tag: functions + typeScriptTag: functions + description: List chat function versions + parameters: + - name: id + schema: integer + required: true + description: Chat function ID + example: 0 + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/functions/{id}/versions + method: createFunctionVersion + httpMethod: post + tag: functions + typeScriptTag: functions + description: Create a chat function version + parameters: + - name: id + schema: integer + required: true + description: Chat function ID + example: 0 + - name: handler_script + schema: string + required: true + description: '' + example: HANDLER_SCRIPT + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/imports/channels + method: batchChannels + httpMethod: post + tag: imports + typeScriptTag: imports + description: Import channels + parameters: + - name: file + schema: string + required: true + description: '' + example: FILE + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/imports/channels/{id}/members + method: channelMembersBatch + httpMethod: post + tag: imports + typeScriptTag: imports + description: Import channel members + parameters: + - name: id + schema: integer + required: true + description: '' + example: 0 + - name: file + schema: string + required: true + description: '' + example: FILE + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/imports/messages + method: batchMessagesFromJson + httpMethod: post + tag: imports + typeScriptTag: imports + description: Import messages + parameters: + - name: file + schema: string + required: true + description: '' + example: FILE + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/imports/users + method: jsonUsersBatch + httpMethod: post + tag: imports + typeScriptTag: imports + description: Import users + parameters: + - name: file + schema: string + required: true + description: '' + example: FILE + responses: + - statusCode: '202' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/jobs + method: listJobsPage + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: List jobs + parameters: + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + - name: running + schema: boolean + required: false + description: Filters for jobs currently running + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/jobs/{id} + method: getJobById + httpMethod: get + tag: jobs + typeScriptTag: jobs + description: Retrieve a job + parameters: + - name: id + schema: integer + required: true + description: Job ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/messages + method: deleteAll + httpMethod: delete + tag: messages + typeScriptTag: messages + description: Delete messages + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/messages + method: listPage + httpMethod: get + tag: messages + typeScriptTag: messages + description: List messages + parameters: + - name: size + schema: integer + required: false + description: The size of the page to be returned + - name: start + schema: integer + required: false + description: >- + Start cursor value. Do not set manually. Provided by the Platform API + pagination engine to fetch previous or next pages + - name: next + schema: integer + required: false + description: >- + Next page cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch subsequent pages + - name: relation + schema: string + required: false + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + - name: username + schema: string + required: false + description: Filters messages by a sender's username + - name: query + schema: string + required: false + description: Filters text messages by text contained in the message body + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/messages/{id} + method: removeById + httpMethod: delete + tag: messages + typeScriptTag: messages + description: Delete a message + parameters: + - name: id + schema: integer + required: true + description: Message ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/messages/{id} + method: getById + httpMethod: get + tag: messages + typeScriptTag: messages + description: Retrieve a message + parameters: + - name: id + schema: integer + required: true + description: Message ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/messages/{id} + method: updateProperties + httpMethod: patch + tag: messages + typeScriptTag: messages + description: Update a message + parameters: + - name: id + schema: integer + required: true + description: Message ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/messages/{id}/read-receipts + method: listReadReceipts + httpMethod: get + tag: messages + typeScriptTag: messages + description: List message read receipts + parameters: + - name: id + schema: integer + required: true + description: '' + example: 0 + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/runtimes/nodejs + method: getNodejsChatRuntime + httpMethod: get + tag: runtime + typeScriptTag: runtime + description: Retrieve NodeJS chat runtime + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/runtimes/nodejs/dependencies + method: updateNodejsChatDependencies + httpMethod: put + tag: runtime + typeScriptTag: runtime + description: Update NodeJS chat runtime NPM dependencies + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/runtimes/nodejs/environment-variables + method: updateNodejsChatEnvironmentVariables + httpMethod: put + tag: runtime + typeScriptTag: runtime + description: Update NodeJS chat runtime environment variables + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/runtimes/nodejs/functions + method: listNodejsChatFunctions + httpMethod: get + tag: runtime + typeScriptTag: runtime + description: List NodeJS chat runtime functions + parameters: + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/runtimes/nodejs/functions + method: createNodejsChatFunction + httpMethod: post + tag: runtime + typeScriptTag: runtime + description: Create a NodeJS chat runtime function + parameters: + - name: description + schema: string + required: false + description: '' + - name: type + schema: string + required: true + description: '' + example: TYPE + - name: initialize_asynchronously + schema: boolean + required: true + description: '' + example: true + - name: name + schema: string + required: true + description: '' + example: NAME + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/runtimes/nodejs/initialization-script + method: updateNodejsChatInitializationScript + httpMethod: put + tag: runtime + typeScriptTag: runtime + description: Update NodeJS chat runtime initialization script + parameters: + - name: script + schema: string + required: true + description: '' + example: SCRIPT + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/threads/{id} + method: getById + httpMethod: get + tag: threads + typeScriptTag: threads + description: Retrieve a thread + parameters: + - name: id + schema: integer + required: true + description: Reply thread ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/threads/{id}/keystrokes + method: sendKeystrokes + httpMethod: post + tag: threads + typeScriptTag: threads + description: Send thread keystrokes + parameters: + - name: id + schema: integer + required: true + description: '' + example: 0 + - name: keys + schema: string + required: true + description: '' + example: KEYS + - name: user + schema: object + required: true + description: '' + example: *ref_0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/threads/{id}/messages + method: listThreadMessages + httpMethod: get + tag: threads + typeScriptTag: threads + description: List reply thread messages + parameters: + - name: id + schema: integer + required: true + description: '' + example: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + - name: start + schema: integer + required: false + description: >- + Start cursor value. Do not set manually. Provided by the Platform API + pagination engine to fetch previous or next pages + - name: next + schema: integer + required: false + description: >- + Next page cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch subsequent pages + - name: relation + schema: string + required: false + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/threads/{id}/messages + method: sendReplyMessage + httpMethod: post + tag: threads + typeScriptTag: threads + description: Send a reply thread message + parameters: + - name: id + schema: integer + required: true + description: '' + example: 0 + - name: type + schema: string + required: true + description: '' + example: TYPE + - name: group_tag + schema: string + required: false + description: '' + - name: properties + schema: object + required: false + description: '' + - name: user + schema: object + required: false + description: '' + example: *ref_0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/user-sessions + method: listUserSessions + httpMethod: get + tag: user-sessions + typeScriptTag: userSessions + description: List user sessions + parameters: + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + - name: state + schema: string + required: false + description: Filters by state + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users + method: getPage + httpMethod: get + tag: users + typeScriptTag: users + description: List users + parameters: + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + - name: name + schema: string + required: false + description: Filters by username + - name: properties + schema: string + required: false + description: Filters by user custom properties + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users + method: checkExists + httpMethod: head + tag: users + typeScriptTag: users + description: Check a user exists + parameters: + - name: name + schema: string + required: true + description: Username of the user + example: NAME + responses: + - statusCode: '200' + description: Empty object + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users + method: createUser + httpMethod: post + tag: users + typeScriptTag: users + description: Create a user + parameters: + - name: display_name + schema: string + required: true + description: '' + example: DISPLAY_NAME + - name: is_guest + schema: boolean + required: true + description: '' + example: true + - name: name + schema: string + required: true + description: '' + example: NAME + - name: properties + schema: object + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users/{id} + method: removeUser + httpMethod: delete + tag: users + typeScriptTag: users + description: Delete a user + parameters: + - name: id + schema: integer + required: true + description: User ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users/{id} + method: getById + httpMethod: get + tag: users + typeScriptTag: users + description: Retrieve a user + parameters: + - name: id + schema: integer + required: true + description: User ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users/{id} + method: updateUserById + httpMethod: patch + tag: users + typeScriptTag: users + description: Update a user + parameters: + - name: id + schema: integer + required: true + description: User ID + example: 0 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users/{id}/channels + method: listChannelsPage + httpMethod: get + tag: users + typeScriptTag: users + description: List a user's channels + parameters: + - name: id + schema: integer + required: true + description: User ID + example: 0 + - name: page + schema: integer + required: false + description: Zero-based page index (0..N) + default: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + default: 25 + - name: sort + schema: array + required: false + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users/{id}/display-picture + method: updateDisplayPicture + httpMethod: post + tag: users + typeScriptTag: users + description: Update a user's display picture + parameters: + - name: id + schema: integer + required: true + description: User ID + example: 0 + - name: content_type + schema: string + required: true + description: '' + example: CONTENT_TYPE + - name: name + schema: string + required: true + description: '' + example: NAME + - name: size + schema: integer + required: true + description: '' + example: 0 + - name: url + schema: string + required: true + description: '' + example: URL + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users/{id}/messages + method: listMessagesPage + httpMethod: get + tag: users + typeScriptTag: users + description: List a user's messages + parameters: + - name: id + schema: integer + required: true + description: User ID + example: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + - name: start + schema: integer + required: false + description: >- + Start cursor value. Do not set manually. Provided by the Platform API + pagination engine to fetch previous or next pages + - name: next + schema: integer + required: false + description: >- + Next page cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch subsequent pages + - name: relation + schema: string + required: false + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + - name: unread + schema: boolean + required: false + description: Filters by returning unread messages + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users/{id}/notifications + method: listNotificationsPage + httpMethod: get + tag: users + typeScriptTag: users + description: List a user's notifications + parameters: + - name: id + schema: integer + required: true + description: User ID + example: 0 + - name: size + schema: integer + required: false + description: The size of the page to be returned + - name: start + schema: integer + required: false + description: >- + Start cursor value. Do not set manually. Provided by the Platform API + pagination engine to fetch previous or next pages + - name: next + schema: integer + required: false + description: >- + Next page cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch subsequent pages + - name: relation + schema: string + required: false + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users/{id}/secrets/{name} + method: removeSecretValue + httpMethod: delete + tag: users + typeScriptTag: users + description: Remove a user secret + parameters: + - name: id + schema: integer + required: true + description: User ID + example: 0 + - name: name + schema: string + required: true + description: The secret's name + example: NAME + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users/{id}/secrets/{name} + method: getSecret + httpMethod: get + tag: users + typeScriptTag: users + description: Retrieve a user secret + parameters: + - name: id + schema: integer + required: true + description: User ID + example: 0 + - name: name + schema: string + required: true + description: The secret's name + example: NAME + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - url: /v1/users/{id}/secrets/{name} + method: setUserSecret + httpMethod: put + tag: users + typeScriptTag: users + description: Set a user secret + parameters: + - name: id + schema: integer + required: true + description: User ID + example: 0 + - name: name + schema: string + required: true + description: The secret's name + example: NAME + - name: secret + schema: object + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' +numberOfSchemas: 125 +apiDescription: |- + OpenAPI specification (OAS) for the ChatKitty Platform API. + See the Interactive Docs to try ChatKitty API methods without writing code, + and get the complete schema of resources exposed by the API. diff --git a/sdks/db/cached-method-objects/from-custom-request_telintel.com_SmsGateway.yaml b/sdks/db/cached-method-objects/from-custom-request_telintel.com_SmsGateway.yaml index 721e94df73..46df456a33 100644 --- a/sdks/db/cached-method-objects/from-custom-request_telintel.com_SmsGateway.yaml +++ b/sdks/db/cached-method-objects/from-custom-request_telintel.com_SmsGateway.yaml @@ -1,4 +1,4 @@ -hash: 4e0ecf6535a30cce00a22dda7791bcc20f26966a9e8d15fd0aa9fbe3fb045b0c +hash: e466953e587b5a06e60723c64d157abc503dda476475e428d3cbc011804badc9 methodObjects: - url: /HttpSmppServiceTypeV2/HttpServiceType method: messageDelivery diff --git a/sdks/db/cached-method-objects/from-custom-request_uploadthing.com.yaml b/sdks/db/cached-method-objects/from-custom-request_uploadthing.com.yaml index 006485a2f5..f78216824c 100644 --- a/sdks/db/cached-method-objects/from-custom-request_uploadthing.com.yaml +++ b/sdks/db/cached-method-objects/from-custom-request_uploadthing.com.yaml @@ -1,4 +1,4 @@ -hash: 0df984c5980bfb8f1ae326ed27a8856a2f75261ef4a1e765f7c06d484f5f261b +hash: fe45a08c22418ff9bfee49310e31928c221522b4d98f2337d42f16e607e172f4 methodObjects: - url: /serverCallback method: getData diff --git a/sdks/db/category-cache.yaml b/sdks/db/category-cache.yaml index 02adac28b9..9aa9a42856 100644 --- a/sdks/db/category-cache.yaml +++ b/sdks/db/category-cache.yaml @@ -300,3 +300,7 @@ apis: Wallester-undefined: Payment Processing Apaleo-undefined: Accounting BANKSapi-undefined: Finance + Miso-undefined: AI Tools + Baserow-undefined: Developer Tools + Browse AI-undefined: AI Tools + ChatKitty-undefined: Team Chat diff --git a/sdks/db/custom-request-last-fetched.yaml b/sdks/db/custom-request-last-fetched.yaml index d3e4e67d43..a4995bbcc9 100644 --- a/sdks/db/custom-request-last-fetched.yaml +++ b/sdks/db/custom-request-last-fetched.yaml @@ -280,3 +280,7 @@ lastUpdated: wallester.com: 2024-03-29T20:30:42.400Z apaleo.com: 2024-03-29T20:33:15.968Z banksapi.de: 2024-03-29T20:34:32.956Z + askmiso.com: 2024-03-29T20:38:52.885Z + baserow.io: 2024-03-29T20:48:11.181Z + browse.ai: 2024-03-29T20:51:22.370Z + chatkitty.com: 2024-03-29T20:54:22.535Z diff --git a/sdks/db/custom-request-specs/askmiso.com.yaml b/sdks/db/custom-request-specs/askmiso.com.yaml new file mode 100644 index 0000000000..5dd85c4428 --- /dev/null +++ b/sdks/db/custom-request-specs/askmiso.com.yaml @@ -0,0 +1,20828 @@ +openapi: 3.0.2 +info: + title: Miso API + description: > + + # Overview + + Miso’s approach to personalization is to train machine learning Engines on + three core data sets: + + + 1. Your site’s log of historical and real-time interactions, + + 2. Your catalog of products and content, and + + 3. Your users. Miso provides the output of its Engines to you, so you can + build search and recommendation + + experiences that are personalized down to the individual level (n=1 + personalization). + + + To see how Miso works and explore the power of its Engines, we recommend + following + + [this tutorial](https://docs.askmiso.com/) to get + + started with our Playground data. Integrating your site or application with + Miso happens in three basic steps: + + + 1. Upload your data + + 2. Train your Engines + + 3. Build search and recommendation experiences with the output of your + Engines. + + + + Miso provides two main integration points. The first is your [Dojo + Dashboard](https://dojo.askmiso.com/), + + which is used to set up your Engines with the conversions you want to + optimize and your training schedule. + + Dojo is also a great way to get familiar with Miso by manually uploading + data and exploring the output of + + Miso’s Engines. In Dojo’s Sandboxes, you can tweak your Engine settings and + see visual examples of Miso’s search + + and recommendations running on your live data. + + + The second integration point is Miso’s API, which lets you automatically + manage your data in Miso and build + + experiences that leverage the output of Miso’s personalization Engines. + + + + Miso’s API is composed of two major groups of REST API endpoints: Data APIs + and Engine APIs. + + + ### Data APIs + + Data APIs collect input to Miso's personalization Engines. These APIs all + support high-throughput + + data ingestion through bulk insert, and satisfy GDPR and CCPA compliance by + letting users delete their data + + from Miso. Subcategories of Data APIs are: + + + * [Interaction APIs](https://api.askmiso.com), for managing your Interaction + records. By uploading historical and real-time Interaction + + records, you tell Miso how users are engaging with the products and content + on your site, and in turn, Miso’s + + Engines learn how to optimize your conversion funnels. + + * [Product / Content APIs](https://api.askmiso.com), for managing your + Product / Content records. These records provide a deep semantic + + understanding of your catalog and keep Miso up to date about your offerings + so it can make smart and timely + + suggestions. The `product_id` is how Miso links Product / Content records to + your Interaction records. + + * [User APIs](https://api.askmiso.com), for managing your User records. + These records tell Miso about your site’s users and visitors, + + so Miso can build an understanding of user segmentation and behavior in + relation to products and content. + + The `user_id` is how Miso links User records to your Interaction records. + + + As a rule of thumb, we recommend batching up data to avoid timeout risks. + For the Product / Content and User + + Upload APIs, we recommend limiting each API upload call to about 100 records + at a time. For the Interaction + + Upload API, we recommend limiting your calls to around 10,000 records at a + time. + + + ### Engine APIs + + Engine APIs provide the output of Miso's personalization Engines. We + designed these APIs with a focus on low + + latency and high availability. Most of these APIs' 95th percentile response + time is under 75ms, + + and the services are replicated to at least three separate instances for + high availability. + + The types of Engine APIs are: + + + * [Search APIs](https://api.askmiso.com), for getting Miso’s personalized + search results for a user, with search-as-you-type and + + autocompletion. + + * [Recommendation APIs](https://api.askmiso.com), for retrieving Miso’s + recommendations that match users with + + the products, categories, and product attributes that are likely to drive + conversions. + + + # Authentication + + [View your API Keys in your Dojo + Dashboard.](https://dojo.askmiso.com/docs/api-browser) + + + There are three environments in Miso: + + * **Playground**, a read-only tutorial environment with sample data. + + * **Development**, for staging, QA, and experimentation. + + * **Production**, where you run your live integration with Miso. + + + Access a Miso environment by passing in the corresponding API key in your + API calls. There is one publishable + + key and one secret key per environment. + + + API Key can passed with query parameter `api_key`, or using the `X-API-KEY` + header. + version: 1.1.4 +paths: + /v1/experiments/{experiment_id_or_slug}/events: + post: + tags: + - Experiment APIs + summary: Send Experiment Event + operationId: send_experiment_event_v1_experiments__experiment_id_or_slug__events_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExperimentRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/SendExperimentResponse' + '401': + description: Unauthorized + content: + application/json: + example: + message: api_key is invalid. Please check your api_key in Dojo. + '404': + description: Not Found + content: + application/json: + example: + message: Variant is not found. Please check your variant_name. + '422': + description: Unprocessable Entity + content: + application/json: + example: + message: Request schema error. See "data.errors" for details + data: + errors: + - loc: + - body + - 35 + msg: 'Expecting '','' delimiter: line 3 column 5 (char 35)' + type: value_error.jsondecode + security: + - Secret API Key: [] + /v1/interactions: + post: + tags: + - Interaction APIs + summary: Interaction Upload API + description: >- + Bulk API to insert Interaction records. This endpoint accepts POST + requests with JSON data containing an array of + + Interaction records wrapped in a dictionary: + + + ``` + + POST /v1/interactions + + + {"data": [interaction_1, interaction_2, interaction_3]} + + ``` + + + For real-time tracking, we recommend sending the interaction records to + this API as soon as the interactions take + + place. This API is also ideal for bulk-inserting historical records that + your site collected before using Miso. + Miso can analyze the historical records and provide personalization for your users from the get-go. We recommend + limiting your calls to around 10,000 records at a time to avoid memory issues or timeout risks. + + ### Anonymous users + + For users who did not sign in, we can still make recommendations for + them by tracking their `anonymous_id`, which is a pseudo-unique + substitute for the `user_id`. The personalization and search APIs all + accept `anonymous_id` in the place of `user_id` to return tailored + results for anonymous users. + + + When an anonymous user later signs in and the `user_id` and + `anonymous_id` are both present, the `anonymous_id` will be linked to + the `user_id` along with the past interactions associated with it. + + + The typical mechanism to generate an `anonymous_id` is to use cookies or + the browser localStorage. However, if you don't collect such information + in your historical records, a hash of the IP address, optionally + combined with the User-Agent string, is also a reasonable substitute for + `anonymous_id`, and is most likely collected by your web server logs + already. + + + ### Schema validation + + The Interaction Upload API will validate the inserted records against + the API schema. + + Any schema errors will cause the whole request to fail, and none of the + records will be inserted (`status_code=422`). + + You should check the `response.errors` field to see if there are any + errors. + + + For example, the response below means there are no errors + (`status_code=200`): + + ```javascript + + { + "message": "success" + } + + ``` + + + Any schema error will cause the whole request to fail: the API will + return `status_code=422`, and none of the + + records will be inserted. You should check `data` field in the response + to see where the errors are located. For + + example, the response below means there are schema errors in the + interaction record at index 0: + + ```javascript + + { + "errors": true, // there are errors. please check! + "message": "None of the records were inserted because at least one of them contained schema errors. Please see the `data` field for details.", + "data": [ + "data.0.product_ids is invalid. The attribute was expected to be of type ''array', 'null'' but type 'string' was given.", + "data.0.timestamp is invalid. The attribute should match the 'date-time' format." + ] + } + + ``` + operationId: interaction_upload_api_v1_interactions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionCreateOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Unprocessable Entity + content: + application/json: + example: + errors: true + message: >- + None of the records were inserted because at least one of them + contained schema errors. Please see the `data` field for + details. + data: + - >- + data.0.product_ids is invalid. The attribute was expected to + be of type ''array', 'null'' but type 'string' was given. + - >- + data.0.timestamp is invalid. The attribute should match the + 'date-time' format. + security: + - Secret API Key: [] + - Publishable API Key: [] + delete: + tags: + - Interaction APIs + summary: Interaction Delete API + description: >- + The endpoint will delete users' interaction data entirely from the log + of interactions you have uploaded to Miso. + + This API enables you to comply with users' data removal requests (i.e. + right to be forgotten). Once a user's + + interactions are deleted, we will not be able to recover them, and they + will no longer contribute to model + + training. + operationId: interaction_delete_api_v1_interactions_delete + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionDeleteOut' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/products: + post: + tags: + - Product / Content APIs + summary: Product / Content Upload API + description: >- + Bulk API to insert Product records. This API endpoint accepts POST + requests with JSON data + + containing a list of Product / Content records wrapped in a dictionary: + + ``` + + POST /v1/products + + + {"data": [product_1, product_2, product_3]} + + ``` + + + Each product is uniquely identified by its `product_id`. If a record + with the same `product_id` + + already exists in the dataset, the existing one will be **replaced** by + the insertion (no + + partial update is allowed at this time). We recommend limiting your + calls to around 100 + + records at a time to avoid memory issues or timeout risks. + + + ### Schema validation + + This API validates the inserted records against the API schema; any + schema error will cause + + the whole request to fail (`status_code=422`), and none of the records + will be inserted. You + + should check the `response.errors` field to see if there are any errors. + For example, + + the response below means there are no errors (`status_code=200`): + + + ```json + + { + "message": "success", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + A common source of errors when uploading Product records is that the + custom attributes' data + + types are not consistent with the data types of the existing records. In + such cases, + + you can check the individual error message in the `data` array. For + example, if there is an + + error regarding the second record you tried to insert, the response + might look like: + + + ```json + + { + "errors": true, // there are errors. please check! + "data": [ + "data.0.custom_attributes.designer is invalid. Its data type is not consistent with other records", + "data.0.product_id is invalid. The attribute expected to be of type 'string', but 'array' is given.", + "data.0.created_at is invalid. The attribute should match 'date-time' format." + ] + } + + ``` + + + ### Internationalization (I18N) + + Miso has the built-in support for majority of Western European + languages, including `English`, `French`, `German`, + + `Spanish`, `Italian`, `Dutch`, `Russian`, and `Ukrainian`, as well as, + major Asian languages, including `Mandarin` + (both Simplified and Traditional), `Japanese`, and `Korean`. + + In Dojo, you can choose the *Primary Language* for your product catalog + (default is English). + + However, you can also have more than one language in your product + catalog that is + + beyond your primary languages using the `i18n_$LN` fields (replace `$LN` + with the [two-letter language + code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) of your + choice), + + and let Miso apply the language-specific preprocessing for you, such as + tokenization, stemming, elision + + removal, folding, decompounding, and traditional to simplified Chinese + conversion. + + + For example, you may have a product called "Arizona, Green Tea with + Ginseng & Honey" in your catalog, and you also + + sell it in your Spanish, French, and Chinese sites, and want your + customers to be able to search for this product + + in their native languages. + + + In this case, your product records will like the following sample + record, where English is the primary language of + + the record, and `i18n_es`, `i18n_fr`, `i18n_zh` fields contain product + details in their corresponding languages. + + ```javascript + + { + "product_id": "arizona-ginseng-honey", + // the primary language is English + "title": "Arizona, Green Tea with Ginseng & Honey", + // ... other product details in English + "i18n_es": { + "title": "AriZona, Té verde con ginseng y miel" + // ... other product details in Spanish + }, + "i18n_fr": { + "title": "AriZona - Thé Vert Aromatisé au Miel" + // ... other product details in French + }, + "i18n_zh": { + "title": "美國ARIZONA亞歷桑納 - 蜂蜜人蔘綠茶" + // ... other product details in Chinese + } + } + ``` + + In this way, your customer can find this product with any of the + following search queries + + without additional configuration: + + * `arizona green tea` + + * `arizona te verde` + + * `arizona the vert` + + * `arizona 綠茶` + + + The similar concept applies to Autocomplete as well. You can specify a + `language` parameter + + in the requests to Autocomplete API, and the autocomplete results for + the specific language + + will be returned. + operationId: content_write_api_v1_products_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProductBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CreateResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Unprocessable Entity + content: + application/json: + example: + errors: true + message: >- + None of the records are inserted, because at least one of them + contain schema errors. Please see `data` field for details. + data: + - >- + data.0.product_id is invalid. The attribute expected to be + of type 'string', but 'array' is given. + - >- + data.0.created_at is invalid. The attribute should match + 'date-time' format. + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/products/{product_id}: + get: + tags: + - Product / Content APIs + summary: Product / Content Read API + description: >- + This API endpoint retrieves the details of a specific product / content + using its `product_id`. + + To fetch the product / content information, make a GET request to the + following URL: + + + **Notice**: Make sure the product_id is an urlencode string. + + + ``` + + GET /v1/products/{product_id} + + ``` + + + Replace `{product_id}` with the unique identifier of the product / + content you wish to fetch. + + + ## Response Format + + + The API will return the product / content details in a JSON object if + the given `product_id` + + is valid and exists in the system. The JSON object will include fields + like `title`, + + `description`, `price`, `images`, and any internationalization fields + (`i18n_$LN`). + + + ### Example Response + + + Here's an example of a successful API response for a product / content + with the `product_id` + + "arizona-ginseng-honey": + + + ```json + + { + "product_id": "arizona-ginseng-honey", + "title": "Arizona, Green Tea with Ginseng & Honey", + "description": "A refreshing and delicious blend of green tea with ginseng and honey.", + "price": 1.99, + "i18n_es": { + "title": "AriZona, Té verde con ginseng y miel" + // ... other product details in Spanish + }, + "i18n_fr": { + "title": "AriZona - Thé Vert Aromatisé au Miel" + // ... other product details in French + }, + "i18n_zh": { + "title": "美國ARIZONA亞歷桑納 - 蜂蜜人蔘綠茶" + // ... other product details in Chinese + } + } + + ``` + + + If the provided `product_id` is invalid or does not exist in the system, + the API will return + + an error response with a `status_code=404`. + + + ### Example Error Response + + ```json + + { + "message": "not found" + } + + ``` + operationId: content_read_api_v1_products__product_id__get + parameters: + - required: true + schema: + title: Product Id + maxLength: 512 + type: string + name: product_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductReadOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '404': + description: Product not Found + content: + application/json: + example: + message: not found + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + delete: + tags: + - Product / Content APIs + summary: Product / Content Delete API + description: >- + This API endpoint allows you to delete a specific product / content from + the system using its + + `product_id`. To remove a product, make a DELETE request to: + + + **Notice**: Make sure the product_id is an urlencode string. + + + ``` + + DELETE /v1/products/{product_id} + + ``` + + + Replace `{product_id}` with the unique identifier of the product / + content you wish to delete. + + + ## Response Format + + + The API will return a JSON object indicating the success or failure of + the deletion request. + + If the deletion is successful, the `status_code` will be `200`, and the + `message` field will + + confirm the successful deletion. + + + ### Example Successful Deletion Response + + + ```json + + { + "message": "deleted", + "data": [ + { + "task_id": "{task_id}" + } + ] + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/products/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: content_delete_api_v1_products__product_id__delete + parameters: + - required: true + schema: + title: Product Id + maxLength: 512 + type: string + name: product_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/products/_ids: + get: + tags: + - Product / Content APIs + summary: Product / Content ID List API + description: >- + This API endpoint allows you to fetch the unique identifiers + (product_ids) of all products + + stored in the app. To get a list of product_ids, make a GET request to + the following URL: + + + ``` + + GET /v1/products/_ids + + ``` + + + ## Response Format + + + The API will return an array of product_ids in a JSON object. The + `status_code` will be `200` + + if the request is successful. If any error occurs during the request, + the `status_code` will + + not be `200` and the `message` field will indicate the error. + + + ### Example Successful Response + + + ```json + + { + "message": "success", + "data": { + "ids": [ + "product_1", + "product_2", + "product_3", + // ... more product_ids + ] + } + } + + ``` + + + ### Example Error Response + + + If the dataset cannot be found, the API will return a `404` error: + + + ```json + + { + "status_code": 404, + "message": "not found" + } + + ``` + + + If another error occurs during the request, the API will return a `500` + error + + + ```json + + { + "message": "Something went wrong. Please contact miso product team." + } + + ``` + operationId: content_read_ids_api_v1_products__ids_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductListOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/products/_delete: + post: + tags: + - Product / Content APIs + summary: Product / Content Bulk Delete API + description: >- + This API endpoint allows you to delete multiple products by providing + their product_ids. + + + To delete multiple products, make a POST request to the following URL: + + + ``` + + POST /v1/products/_delete + + ``` + + + The request body should contain a JSON object with an array of + product_ids: + + + ```json + + { + "data": { + "product_ids": [ + "product-1", + "product-2", + // ... more product_ids to delete + ] + } + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `message` and an array of + `data` + + containing a `task_id` that can be used to get the status of the bulk + deletion process. + + + #### Example Successful Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/products/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: content_bulk_delete_api_v1_products__delete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProductBulkDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/users: + post: + tags: + - User APIs + summary: User Upload API + description: >- + Bulk API to insert User records. This API endpoint accepts POST requests + with JSON data + + containing a list of User records wrapped in a dictionary. + + + ``` + + POST /v1/users + + ``` + + + ```json + + { + "data": [user_1, user_2, user_3] + } + + ``` + + + If a record with the same `user_id` already exists in the dataset, the + existing record will + + be replaced (no partial update is allowed at this time). We recommend + limiting your calls to + + around 100 records at a time to avoid memory issues or timeout risks. + + + ### Schema validation + + + This API validates the inserted records against the API schema. Any + schema error will cause + + the whole request to fail (`status_code=422`), and none of the records + will be inserted. As + + long as the request passes the schema validation, the API will return + `status_code=200`, but + + you should still check if there is any error occurring with individual + records. + + + ```json + + { + "errors": true, + "data": [ + "data.0.user_id is invalid. The attribute was expected to be a `string`" + ] + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `task_id` that can be used to + retrieve. + + + #### Example Successful Response + + + ```json + + { + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: user_write_api_v1_users_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CreateResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Unprocessable Entity + content: + application/json: + example: + errors: true + message: >- + None of the records are inserted, because at least one of them + contain schema errors. Please see `data` field for details. + data: + - >- + data.0.user_id is invalid. The attribute expected to be of + type 'string', but 'array' is given. + - >- + data.0.created_at is invalid. The attribute should match + 'date-time' format. + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/users/{user_id}: + get: + tags: + - User APIs + summary: User Read API + description: >- + This API endpoint retrieves the details of a specific user using their + `user_id`. + + To fetch the user information, make a GET request to the following URL: + + + **Notice**: Make sure the user_id is an urlencode string. + + + ``` + + GET /v1/users/{user_id} + + ``` + + + Replace `{user_id}` with the unique identifier of the user you wish to + fetch. + + + ## Response Format + + + The API will return the user details in a JSON object if the given + `user_id` is valid and + + exists in the system. The JSON object will include fields like `name`, + `age`, `city`, `gender` + + , and other user information. + + + ### Example Response + + + Here's an example of a successful API response for a user with the + `user_id` "user123": + + + ```json + + { + "message": "success", + "data": { + "user_id": "user123", + "name": "johndoe", + // ... other user details + } + } + + ``` + + + If the provided `user_id` is invalid or does not exist in the system, + the API will return an + + error response with a `status_code=404`. + + + ### Example Error Response + + + ```json + + { + "message": "not found" + } + + ``` + operationId: user_read_api_v1_users__user_id__get + parameters: + - required: true + schema: + title: Userid + maxLength: 512 + type: string + name: userId + in: query + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/UserReadOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '404': + description: User not Found + content: + application/json: + example: + message: not found + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + delete: + tags: + - User APIs + summary: User Delete API + description: >- + This API endpoint allows you to delete a specific user from the system + using their `user_id`. + + + **Notice**: Make sure the user_id is an urlencode string. + + + To remove a user, make a DELETE request to: + + + ``` + + DELETE /v1/users/{user_id} + + ``` + + + Replace `{user_id}` with the unique identifier of the user you wish to + delete. + + + ## Response Format + + + The API will return a JSON object with a `task_id` that can be used to + retrieve. + + + #### Example Error Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: user_delete_api_v1_users__user_id__delete + parameters: + - required: true + schema: + title: User Id + maxLength: 512 + type: string + name: user_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/users/_delete: + post: + tags: + - User APIs + summary: User Bulk Delete API + description: >- + This API endpoint allows you to delete multiple users by providing their + user_ids. + + + To delete multiple users, make a POST request to the following URL: + + + ``` + + POST /v1/users/_delete + + ``` + + + The request body should contain a JSON object with an array of user_ids: + + + ```json + + { + "data": { + "user_ids": [ + "product-1", + "product-2", + // ... more product_ids to delete + ] + } + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `message` and an array of + `data` + + containing a `task_id` that can be used to get the status of the bulk + deletion process. + + + #### Example Successful Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: user_bulk_delete_api_v1_users__delete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserBulkDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/search/search: + post: + tags: + - Search APIs + summary: Search API + description: >- + The Search API provides personalized, typo-correcting, semantic search + for your site. + + You send this API the search queries users entered, and the API returns + the relevant search results tailored to your + + users' interests. + + + ### Personalized search + + Personalized search is a key factor in driving search conversion on many + major sites. + + It is particularly powerful for short search queries (<= 3 keywords), + which account for [up to 80% of search traffic in the + U.S.](https://www.statista.com/statistics/269740/number-of-search-terms-in-internet-research-in-the-us/), + + but are usually the hardest to get right with traditional search + engines. This is because shorter search queries tend + + to match a larger number of results, but there + + is not enough information in the query strings alone to determine which + results the users + + are actually looking for. + + + For example, when users search for *jeans* on Levi's.com, it is + + impossible to know which *jeans* the user is looking for, among + thousands of options. + + Even if the user adds: *jeans for men*, it is still unclear to a + traditional search engine what style, material, + + or size the user wants. + + + In the contrary, with Miso's personalized search, we not only analyze + the search query itself, but also take into + + account the *context* in which the searches are made, including who are + the users, where are they from, what are their + + past interactions on the site, what other searches the user made, etc. + These signals together + + allow Miso to generate more than 15% to 20% higher search conversion + rate than the traditional non-personalized search + + engines. + + + ### Balancing relevancy and personalization + + Although personalization is a powerful technique, over-using it can be + harmful to the user experiences. In the + + context of search optimization, the relevancy of the search results are + still the most important criteria, and we + + don't want personalization to overwhelm the search relevancy. + + For example, when users search for a very specific term, or directly + search for the product names, + + Miso's algorithm will respond with the most relevant search results + first, and then only apply personalization to + + rerank more ambiguous search results. + + + + ### Basic usage + + For every search query, you let Miso know the user's `user_id` and the + search keywords in the API request body, + + for example: + + ``` + + POST /v1/search/search + + { + "q": "jeans", + "user_id": "user-123" + } + + ``` + + + For site visitors who do not sign in, you can let Miso know the + `anonymous_id` of this visitor: + + ``` + + POST /v1/search/search + + { + "q": "jeans", + "anonymous_id": "visitor-123" + } + + ``` + + + ### Search response + + With the query above, Miso responds with the search results like the + following: + + ```javascript + + { + "message":"success", + "data":{ + "took":50, + "total":30, + "start":0, + "miso_id":"f34b90de-086b-11eb-b498-1ee8abb1818b", + "products":[ + { + "product_id":"505-regular-fit-mens-jeans", + "title":"The 505 Regular Fit Men's Jeans", + "url":"https://levi.com/jeans/505-regular-fit-mens-jeans/", + "size":"29", + "material":"Cotton", + "color":"Rinse - Dark Wash", + "_search_score": 78.12, + "_personalization_score": 0.98 + } + ], + "spellcheck":{ + "spelling_errors":false + } + + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **total**: the total number of matched products. You can paginate + through all the products by using the combination + + of *start* and *rows* parameters (see *Request Body Schema* below) + + * **miso_id**: a UUID of the search request. You should include + **miso_id** in the Interaction records for every + + interactions that result from this search request, e.g. user + click-through a product in the search results. + + Miso use miso_id to track the search performance and fine-tune the + algorithm accordingly. + + * **products**: an array of [Product records](https://api.askmiso.com) + that match the search + + query, ranked in the order of relevancy and + + probability that the user will be interested in this product. By + default, only the `product_id` of the Product is + + returned. You can ask Miso to return additional fields by using the *fl* + parameter (see *Request Body Schema* below) + + * **products[ ]._search_score**: the search relevancy score of the + products based on keyword matching and Miso's + + semantic matching. This score is similar to traditional Lucene search + score. + + * **products[ ]._personalization_score**: the score assigned by Miso's + personalization algorithm based on users' + + profile and their interactions on the site. This score quantifies the + probability of whether users will be + + interested in this product or not. + + * **spellcheck**: an dictionary contains spell checking information. + + + ### Spellcheck and auto-correction + + According to a [Microsoft Research + study](https://www.aclweb.org/anthology/W04-3238.pdf), roughly 10-15% of + the + + queries sent to search engines contain errors. A misspelled search + keyword often results in poor search + + quality, and users have been accustomed to Google's automatic spelling + correction functionality and expect the same + + on your site. + + + However, correcting spelling and typos at scale is a non-trivial machine + learning problem. + + Miso's spellcheck is based on a sequence-to-sequence + + deep learning model, trained and updated regularly on a corpus of + billion tokens. It detects hard-to-spot errors, + + auto-correct keywords according to its context, and recognize terms that + are newer or lesser known. + + + Spellcheck is always on for every search request so you don't need to + turn it on. + + What you need to decide is whether to turn on *auto spelling + correction*. + + For example, the following search request turns on the + auto-spelling-correction, and Miso will automatically + + replace any misspelled queries with their correct spelling: + + ``` + + POST /v1/search/search + + { + "q":"whte denem jeans", + "user_id":"user-123", + "spellcheck":{ + "enable_auto_spelling_correction":true + } + } + + ``` + + The API will respond: + + ```javascript + + { + "message":"success", + "data":{ + "took":50, + "total":30, + "start":0, + "miso_id":"f34b90de-086b-11eb-b498-1ee8abb1818b", + "spellcheck":{ + "spelling_errors":true, + "auto_spelling_correction":true, + "original_query":"whte denem jeans", + "original_query_with_markups":"whte denem jeans", + "corrected_query":"white denim jeans", + "corrected_query_with_markups":"white denim jeans" + }, + "products":[ + ...... + ] + } + } + + ``` + + The *spellcheck* object contains the following fields: + + * **spelling_errors** indicates whether there is a spelling error in the + query + + * **auto_spelling_correction** indicates whether the search query has + been replaced with the *corrected_query* + + * **original_query** the original search query + + * **original_query_with_markups** the original search query with the + misspelled words highlighted by \ html tags + + * **corrected_query** the search query with misspelling and typos + corrected + + * **corrected_query_with_markups** the search query with misspelling and + typos corrected, and the corrected parts are highlighted by \ + html tags + + + You can opt-out the auto-spelling-correction by setting + `enable_auto_spelling_correction=false`. For example: + + ``` + + POST /v1/search/search + + { + "q":"whte denem jeans", + "user_id":"user-123", + "spellcheck":{ + "enable_auto_spelling_correction":false + } + } + + ``` + + In this case, Miso will still run spellcheck against the query. However, + users' queries will be used as it is, + + and **auto_spelling_correction** field will be *false*. + + + ### Boosting and Diversification + + While Miso's personalized search can drive conversion by showing search + results that are tailored + + to users' interests, ultimately, it is important to make sure that the + search results meet your business goals. + + To that end, Miso provides a great set of tools that enable you to + fine-tune the search ranking and make it aligned + with your goals. + + One great example is **boosting**. Boosting allows you to define a query + that can be used to boost a + + subset of products to the top of the ranking, or to specific *boost + positions*. You can use boosting to run + + different kinds of promotion campaigns, or to promote certain set of + products for individual users that you know + + they will be interested in. + + + For example, consider a scenario where you need to promote the sales of + Nike's products. Then, you might want to + + use the query below, that will promote the sneakers whose brand are + `Nike` to the top of the search result: + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote the + Nike products which have also been tagged + + as `ON SALE`: + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + + You can have as complex boosting logic as you want in the boosting + query, + + but it is worth mentioning that Miso will only boost + + products that are relevant and have high likelihood to convert. In other + words, Miso will not boost low + + performance products even if they match the boosting query. + + + Depending on your boosting rules, in certain cases, you would like to + prevent search results from becoming + + too "plain" due to boosting. For example, you don't want the first page + of the search result to contain only Nike + + products. + + + With Miso, you have two tools to avoid so. First, you can specify + `boost_positions` to place boosted products at + + specific positions in the ranking. For example, the query below will + place boosted products only at the first, + + fourth, seventh places in the ranking (positions are 0-based), and place + the remaining products in their original + + ranking, skipping these three positions. + + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3, 6] + } + + ``` + + + The second tool is `diversification`. Miso's `diversification` algorithm + will maintain a desired minimum distance + + between any two products that have the same attributes. For example, the + + following query will make sure products made by the same *brand* are at + least two slots apart from each + + other in the search results. + + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 2} + } + } + + ``` + + + It is also very often to use both "boost_positions" and + "diversification" at the same time to make sure that + + (1) the search results are not overwhelmed by the boosted products, and + (2) there is a good mix of products from + + different brands showing side-by-side to increase product discovery + rate. + + + ### Result ordering + + + You can override Miso's default ranking order by specifing a list of + fields for Miso to rank the search results. + + These fields can be any numeric or boolean fields in your Product + catalog, or one of the following special + + fields: + + * **_personalization_score**: the score that estimates the probability + that a user will interact with a product + + determined by Miso's personalization algorithm. The range of this score + is between [0, 1]. The scores are + + non-uniformly distributed. The Products that are relevant to users' + interests will have scores much closer to 1, + + than products that are not. + + * **_search_score**: the score that rates the degree of "match" between + search keywords and a product's catalog + + with a focus on Product's titles. + + This score is mostly based on a variant of + [BM25](https://en.wikipedia.org/wiki/Okapi_BM25), but additionally + + consider the term proximity, typos, term semantic similarity. + + Its value is always larger than 0, but its range is unbounded. + + * **_boosting_score**: a binary score indicates whether a Product is + boosted by your boosting query. + + * **_geo_distance**: distance between any point on map, `geo` must be + specified when sorting with this field. + + + For example, the following query returns all the Products (because + `q=*`), ranked by the `_personalization_score` + + first, and then by the values in the `custom_attributes.promote_score` + field in the Product catalog, then the + + distance between the product and New York city. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.05" + }, + "order": "desc" + }, + { + "field": "custom_attributes.promote_score", + "order": "desc" + }, + { + "field": "_geo_distance", + "geo": { + "lat": 40.711967, + "lon": -74.006076, + } + "order": "asc" + } + ] + } + + ``` + + #### Mathematical Functions + + Miso supports mathematical functions that transform and combine + different sorting criteria into one. + + For example, a powerful strategy to improve gross merchandise volume + (GMV), but maintain user + + experience is + + to sort the products based on the multiplication of personalization + scores and product prices. You can achieve this with + + the following `order_by` query: + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score * pow(sale_price, 0.5)", + "order": "desc" + } + + ] + } + + ``` + + Function `pow(sale_price, 0.5)` takes the square root of the sale price + and avoids very expensive products from + + overwhelming the ranking. + + + Miso supports all the common mathematical operators including `+`, `-`, + `*`, `/`, `%`, `^`, `**`, and more + + advanced functions including: + * Power functions: `pow(X, y)`, `sqrt(X)` + * Exponents and logarithms: `exp(X)`, `log(X)`, `log2(X)`, `log10(X)` + * Element-wise maximum / minimum: `maximum(X, y)`, `minimum(X, y)` + * Absolute function: `abs(X)` + * Rounding functions: `round(X)`, `floor(X)`, `ceil(X)` + * Trigonometric functions: `sin(X)`, `cos(X)`, `tan(X)`, `asin(X)`, `acos(X)`, `atan(X)` + + + #### Soft Tie-Breaker + + For scores that have granular resolutions, for example + `_personalization_score`,`_search_scores`, or + + Products' `sale_price`, we usually don't want to rank Products by their + raw values. After all, + + a 0.001 difference in `_personalization_score` or $0.01 difference in + sale price typically will not make a + + difference in users' preferences. In such cases, *soft* tie-breakers + should be used to smooth out these minor + + differences in scores. + + + For example, in the query above, we apply a soft tie-breaker to + `_personalization_score` based on score values' + + relative difference. Specifically, we first sort the score's raw values + in the descending order, then + + for two consecutive values, if their relative difference is no more than + a pre-defined threshold + + (in this case `0.05` or `5%`), they are considered as a tie, and the + next field + + (i.e. `custom_attributes.promote_score`) + + will be used to determine their ranking. + + + It is also common to utilize tie-breakers to combine the effect of two + types of scores. For example, in the + + following query, we set `threshold=0.2` or `20%` for + `_personalization_score`, then only the + + Products that users are 20% more likely to interact with will be ranked + higher, the remaining Products will be + + ranked by their sale prices. In this way, we combine the effect of + personalization score and sale prices, where + + the Products are roughly ranked by personalization, but favor the + pricier products when they have comparable + + personalization scores. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "sale_price", + "order": "desc" + } + + ] + } + + ``` + + + Also note that, when search keywords are present, it is recommended to + always include `_search_score` + + as the first field (plus a tie-breaker) to maintain the relevance of the + search results. A tie-breaker is usually + + required as well to let the subsequent score have effect to the ranking. + + ``` + + { + "q": "toy story", + "order_by": [ + { + "field": "_search_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "sale_price", + "order": "desc" + } + + ] + } + + ``` + operationId: search_v1_search_search_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SearchRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/SearchResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/search/autocomplete: + post: + tags: + - Search APIs + summary: Autocomplete API + description: >- + The Autocompletion API provides real-time, personalized, typo resistant + typeahead for your search bar. + + You send this API what users are currently typing, and the API returns + the complete search query suggestions. + + + ### Personalized typeahead + + Personalized typeahead is an extreme example of personalized search. The + personalization starts immediately when + + users enter even just one character. The typeahead results are + personalized so that the entries most likely to drive + + conversion for the current user are ranked at the top. Miso will predict + what the user is looking for in real-time + + based on their interests and past behaviors. + + + ### Basic usage + + The request schema of Autocompletion API is similar to that of Search + API: you put the search query users typed so + + far, and the `user_id` or `anonymous_id` for Miso to identify the + current user. + + For example, when a user types the first character `r`, you send Miso + the following request: + + ``` + + POST /v1/search/autocomplete + + { + "q":"r", + "user_id":"user-123" + } + + ``` + + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 50, + "miso_id": "e93a6d02-0a7a-11eb-a896-d28586dc1386", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + { + "text": "Reservoir Dogs (1992)", + "text_with_markups": "Reservoir Dogs (1992)", + "product": { + "product_id": "tmdb-500" + } + }, + ... + ] + } + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **completions**: an dictionary of autocompletion candidates from + different sources. By default, we only run + + autocompletion against the titles of products, but you can choose to get + autocompletion candidates from other fields + + using the `completion_fields` parameters. + + * **completions.title[].text**: the text of completion candidates + + * **completions.title[].text_with_markups**: the completion candidates + with the part of text that users + + haven't typed yet surrounded by \ HTML tags. + + * **completions.title[].product**: the product record whose title + matches the autocompletion candidate. This object can be used to + implement direct-to-product links: when they click on the link they will + go + + directly to the product page instead of the search result page. By + default, only the `product_id` field is returned, + you use `fl` request parameter to get more fields returned in the product object. + + + ### Typo resistance + + Miso's autocompletion algorithm accepts up to 4 typos in the query + string. For example, users may try to find the + movie `Robin Hood`, but make two typos in the query, which becomes `robonhood` instead (`robin`->`robon`, and a space is missing). + + ``` + + POST /v1/search/autocomplete + + { + "q":"robanhood", + "user_id":"user-123" + } + + ``` + + + Miso can still find the movie "*Robin Hood: Prince of Thieves*" as a + autocompletion candidate. + + ```javascript + + { + "message": "success", + "data": { + "took": 50, + "miso_id": "e93a6d02-0a7a-11eb-a896-d28586dc1386", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + ... + ] + } + } + } + + ``` + + + ### Completion fields + + The auto-completions are made against your product attributes. By + default, Miso finds completion candidates from the + + `title` field. The `completion_fields` parameter + + lets you specify the attributes you want to perform auto-completion for. + + For example, the following query will return auto-completion candidates + from the `title` and a custom attribute + + field:`custom_attributes.director`. + + ``` + + POST /v1/search/autocomplete + + { + "q": "rob", + "user_id": "user-123", + "completion_fields": [ + "title", + "custom_attributes.director" + ] + } + + ``` + + The response will be like the following: + + ```javascript + + { + "message": "success", + "data": { + "took": 52, + "miso_id": "16d95080-0bb0-11eb-948d-66359cf29022", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + { + "text": "RoboCop (1987)", + "text_with_markups": "RoboCop (1987)", + "product": { + "product_id": "tmdb-5548" + } + }, + ... + ], + "custom_attributes.director": [ + { + "text": "Robert Z. Leonard", + "text_with_markups": "Robert Z. Leonard", + }, + ... + ] + } + } + } + + ``` + operationId: autocomplete_v1_search_autocomplete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AutocompleteRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/AutocompleteResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/search/mget: + post: + tags: + - Search APIs + summary: Multiple Get API + description: >- + The Multiple Get API provides a simple and fast interface to retrieve + Products by their product ids. + + For example, the following query will retrieve products whose + product_ids are `123ABC-S-Black` and `123ABC-S-Blue` + + ``` + + { + "product_ids": ["123ABC-S-Black", "123ABC-S-Blue"] + } + + ``` + + Miso will respond with the complete Products records in the same order + as the given `product_ids`: + + ``` + + { + "message": "success", + "data": { + "products": [ + { + "_found": true, + "product_id": "123ABC-S-Black", + "title": "Product ABC in Black", + ... + }, + { + "_found": true, + "product_id": "123ABC-S-Blue", + "title": "Product ABC in Blue", + ... + } + ] + } + } + + + ``` + + You can use the `_found` field to determine whether a product is found + in the Miso database or not. + + When the given product_id is not found, the `_found` field in the + corresponding Product record + + will become `false`. + + + For example, the following query requests a `product_id` that does not + exist in the Miso database: + + ``` + + { + "product_ids": ["Product_Not_Exists", "123ABC-S-Black"] + } + + ``` + + Miso will respond: + + ``` + + { + "message": "success", + "data": { + "products": [ + { + "_found": false, + "product_id": "Product_Not_Exists" + }, + { + "_found": true, + "product_id": "123ABC-S-Black", + "title": "Product ABC in Black", + ... + } + ] + } + } + + ``` + + Finally, like every Miso API, you can use `fl` to control what Product + fields to return. By default, all the Product + + fields will be returned, but the following query will return only + `title` field of the product (in addition + + to `product_id`) + + ``` + + { + "product_ids": ["123ABC-S-Black", "123ABC-S-Blue"], + "fl": ["title"] + } + + ``` + operationId: mget_v1_search_mget_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MultipleGetRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/MultipleGetResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/ask/questions: + post: + tags: + - Ask APIs + summary: Create a new qestion + description: |- + This API is used to submit questions to Miso. + + After a question is submitted, a `question_id` is returned. + Then you can use `question_id` to check the latest status of it's answer + as it is being compiled. + + operationId: questions_v1_ask_questions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/ask/questions/{question_id}/answer: + get: + tags: + - Ask APIs + summary: Get latest answer of asked question + description: >- + This API is used to fetch the latest answer of previous submitted + question from Miso + + + A submitted question is put into a job with following stage: + + + - Initialization + + - Parsing and fecthing related content + + - Relevance checking + + - Summarization + + + This API will tell you at what stage current question is in. + + If answer is fetched and being summerized, it will also return the + latest summarization result. + + + Besides human readable answer, the products used to generate answer are + also returned. + + operationId: questions_answer_v1_ask_questions__question_id__answer_get + parameters: + - required: true + schema: + title: Question Id + type: string + format: uuid + name: question_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PollAnswerResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_products: + post: + tags: + - Recommendation APIs + summary: User to Products API + description: >- + Returns the products that are most likely to drive conversion for the + given user. Depending on the conversion + + metrics you choose when training your Miso Engines in Dojo, this API + returns products that are most likely to + + optimize those metrics (such as `add_to_cart`, `checkout`, or `read`). + + + This API considers both user's interests and the conversion probability. + The user's interests are determined from + + their past interactions on the site and the context of their current + browsing session, including recent trending + + products, time of the day, recent search behaviors, etc. + + + ### Application scenarios + + The User to Products API is usually used in homepage recommendations, + such as "*Inspired by your shopping trends*" on + + Amazon, or "*Recommended videos*" on Youtube. It can also be used to run + an email marketing campaign such as a + + newsletter from Medium with recent articles you might like. These kind + of recommendations are particularly powerful + + in driving product discovery. + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the id of + the current user or visitor via `user_id` + + or `anonymous_id` field. For example, for a currently logged-in user, + your request may look like the following: + + ``` + + POST /v1/recommendation/user_to_products + + {"user_id": "user-123"} + + ``` + + For a un-signed visitor, your request may look like the following: + + ``` + + POST /v1/recommendation/user_to_products + + {"anonymous_id": "visitor-123"} + + ``` + + + This API will respond with the recommended products for the specified + user or visitor: + + ```javascript + + { + "message": "success", + "data": { + "took": 37, + "miso_id": "517452b0-0ccf-11eb-948d-66359cf29022", + "products": [ + { + "product_id": "tmdb-475557", + "_personalization_score": 0.91 + }, + { + "product_id": "tmdb-299534", + "_personalization_score": 0.89 + }, + ... + ] + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **miso_id**: a UUID of the search request. You should include + **miso_id** in the Interaction records for every + + interactions that result from this search request, e.g. user + click-through a product in the search results. + + Miso use miso_id to track the search performance and fine-tune the + algorithm accordingly. + + * **products**: an array of [Product records](https://api.askmiso.com) + recommended to this + + user ranked by the probability that the user will be interested in this + product. By default, only the `product_id` + + of the Product is returned. You can ask Miso to return additional fields + by using the *fl* request argument (see example below) + + * **products[ ]._personalization_score**: the score assigned by Miso's + personalization algorithm based on users' + + profile and their interactions on the site. This score quantifies the + probability of whether users will be + + interested in this product or not. + + + You can use the `fl` request argument to ask Miso to return more product + fields. For example, the following request + + asks Miso to additionally return the *title* and *category* fields of + every recommended product: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"] + } + + ``` + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 37, + "miso_id": "517452b0-0ccf-11eb-948d-66359cf29022", + "products": [ + { + "product_id": "tmdb-475557", + "categories": [ + [ + "Crime" + ], + [ + "Thriller" + ], + [ + "Drama" + ] + ], + "title": "Joker (2019)", + "_personalization_score": 0.91 + }, + { + "product_id": "tmdb-299534", + "categories": [ + [ + "Adventure" + ], + [ + "Science Fiction" + ], + [ + "Action" + ] + ], + "title": "Avengers: Endgame (2019)", + "_personalization_score": 0.89 + }, + ... + ] + } + } + + ``` + + ### Filtering and Boosting + + Like every other Miso API, `User To Products` API supports filter query + (`fq`) and boost query (`boost_fq`) to + + generate recommendations that meet your business needs. + + + #### Filter Query + + You can use filter query to filter recommendation results against + + arbitrary criteria, and Miso will *guarantee* to return sufficient + number of recommendation results that meet the + + criteria. For example, the following requests will limit the + recommendations to only `Drama` films: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "fq": "categories:Drama" + } + + ``` + + + For another example with `custom_attributes`, the following requests + will limit the recommendations to + only `Drama` films after `2010`: + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "fq": "categories:Drama AND custom_attributes.year:[2010 to *]" + } + + ``` + + + #### Latency Consideration + + Miso achieves **instant** recommendations by pre-computing a large pool + of candidates (N>1,000) + + for each user with the products they are mostly likely to be interested + in. However, when the given filter query do + + not match a sufficient number of + + candidates, Miso will fall back to Search API to find additional matches + to fill in the remaining + + slots. While falling back to Search API will increase the latency, the + latency increase is usually minimum if the + + same filter query is being used repeatedly due to Miso's caching + mechanism. + + + + #### Boost Query + + You can use `boost_fq` to boost Products with arbitrary criteria. The + relevant Products that match the `boost_fq` + + will be ranked at the top of the recommendations or at the positions + specified in the + + `boost_positions` parameter. Boosting is particularly useful for product + promotions (e.g. sponsored products) to + + highlight the Products you want more impression. + + + For example, the following request will boost the `Sci-Fi` films + directed by `Ridley Scott`: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "boost_fq": "categories:\"Sci-Fi\" AND custom_attributes.director:\"Ridley Scott\"" + } + + ``` + + The response will be like: + + + ```javascript + + { + "message": "success", + "data": { + "took": 83, + "miso_id": "54bf6d9a-dd32-11eb-99d6-a62d401473b5", + "products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)", + "_personalization_score": 0.5364759309088403, + "_boosted": true, + "categories": [ + [ + "Drama" + ], + [ + "Adventure" + ], + [ + "Science Fiction" + ] + ] + }, + ... + ] + } + } + + ``` + + The additional field **products[ ].boosted** is a boolean that indicates + whether the Product matches the `boost_fq`. + + + You can also use `boost_positions` to specify the positions in the + recommendation list you want the + + boosted Products to be placed. For example, the following request will + place the boosted Product at the second place, + + and the third place (the `boost_positions` are 0-based): + + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "boost_fq": "categories:\"Sci-Fi\" AND custom_attributes.director:\"Ridley Scott\"", + "boost_positions": [1, 2] + } + + ``` + + + ### Filtering "already seen" items + + Typically, the User to Products API is used to let users discover new + products they might be interested in. Therefore, + + it is important not to recommend products users have already interacted + with recently. By default, the User to Products + + API filters out the most recent 50 products users have had interactions + with (except for `impression` interactions) + operationId: user_to_products_v1_recommendation_user_to_products_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToItemsRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/RecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_categories: + post: + tags: + - Recommendation APIs + summary: User to Categories API + description: >- + The User to Categories API returns the product categories that will + drive the conversion for the current user, + + along with the recommended products for each returned category. + + + ### Application scenarios + + This API is usually used in homepage recommendations, or category + recommendations + + where recommendations are organized by categories, + + such as Netflix's "*Action / Sci-Fi / Drama movies for you*" + + or Amazon's "*Recommendations for you in Grocery & Gourmet Food*". The + goal of such recommendations is to help + + users discover attractive products under the categories they + + have a high chance to be interested in. + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the + `user_id` or + + `anonymous_id` of the current users. Miso will return a list of top + categories along with the recommended + + Products under each of the categories. + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "fl": ["title"] + } + + ``` + + * **rows**: the number of categories to return + + * **products_per_category**: the number of Products to return per each + category + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response of this request will be like: + + ``` + + { + "message": "success", + "data": { + "took": 85, + "miso_id": "7cd6059c-dd54-11eb-8050-a62d401473b5", + "categories": [ + { + "category": [ + "Drama" + ], + "total": 61510, + "recommended_products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)" + }, + { + "product_id": "tmdb-281957", + "title": "The Revenant (2015)" + }, + { + "product_id": "tmdb-68718", + "title": "Django Unchained (2012)" + } + ] + }, + { + "category": [ + "Thriller" + ], + "total": 21870, + "recommended_products": [ + { + "product_id": "tmdb-11324", + "title": "Shutter Island (2010)" + }, + { + "product_id": "tmdb-1949", + "title": "Zodiac (2007)" + }, + { + "product_id": "tmdb-1422", + "title": "The Departed (2006)" + } + ] + } + ] + } + } + + ``` + + * **categories**: a list of categories recommended to the users. + + * **categories[].category**: the recommended category in the format of + category hierarchy. `["Sci-Fi"]` is a top level category, + + `["Sci-Fi", "Space Travel"]` is a second-level category under `Sci-Fi` + (a.k.a subcategory). + + * **categories[].total**: the total number of Products belonging to the + category + + * **categories[].recommended_products**: a list of Products (in that + category) recommended to the users + + + ### Root Category + + By default, `User To Categories` API recommends top level categories, + but you can change this behavior + + via `root_category` parameter. Miso will recommend the immediate + sub-categories of the given `root_category` + + For example, the following request will recommend sub-categories under + + `Science Fiction`, for example `["Science Fiction", "Space Travel"]` or + `["Science Fiction", "Steampunk"]`: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "test", + "root_category": ["Science Fiction"] + } + + ``` + + + In some cases, you may want to get recommendations from *any* + subcategories (regardless their parent category). + + In such case, you can use wildcard `*` to achieve such results. For + example, the following request will recommend + + any sub-categories regardless their parent category: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "test", + "root_category": ["*"] + } + + ``` + + ### Filter and boost query + + Like every Miso API, `User To Categories` supports `fq` for filtering, + and `boost_fq` for boosting. You can use + + these parameters to make the recommendation results meet your exact + business needs. For example, the following + + request will recommend categories + + that contain sufficient number of Products that meet the `fq` criteria + (i.e. films after 2010), and each Product + + returned in the `recommended_products` list will also meet the `fq` + criteria: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "fq": "custom_attributes.year: [2010 TO *]" + } + + ``` + + Similarly, you can use `boost_fq` to promote Products that meet your + business criteria in each category. For example, + + the following request will prioritize Products that are promoted + (indicated by `custom_attributes.promoted`): + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "boost_fq": "custom_attributes.promoted: true" + } + + ``` + + ### Latency considerations + + `User To Categories` API is one of more complex API because it needs to + first identify categories the user will be + + interested in, and then find the top Products in that categories. We + make this process real-time by pre-computing a + + large number of top Products users may find interesting in for each + category, therefore the end-to-end latency is + + usually under 100ms. To further reduce the latency, you can: + + * Use a smaller `products_per_category` to reduce number of products to + return, or set it to zeros if you don't need any. + + * Request only the necessary fields using `fl` parameters + + * Use a smaller `rows` to reduce number of categories to return + operationId: user_to_categories_v1_recommendation_user_to_categories_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToCategories' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CategoryRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_attributes: + post: + tags: + - Recommendation APIs + summary: User to Attributes API + description: >- + The `User to Attributes` API is a generalized version of `User to + Categories` API --- it returns the product + + attributes that Miso expects to drive a conversion for the current + + user. You specify a field in your Product catalog you want + recommendations for, e.g. the `brand` or a custom field like + + `custom_attributes.director`, and this API will return a list of values + from that fields Miso expects users will be most + + interested in, as well as a list of personalized product suggestions. + + + ### Applicable scenarios + + This API is usually used in homepage recommendations, where users can + interact with recommended attributes. + + For example, this API could generate suggestions for "the brands you may + like" or "the creators you may like." + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the + `user_id` or `anonymous_id`, and the `field` you + + want to get recommendations for. For example, the following request will + return the recommended `director` for + + the given users: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_attributes + + { + "user_id": "test", + "field": "custom_attributes.director", + "rows": 3, + "products_per_attribute": 2, + "fl": ["title"] + } + + ``` + + * **field**: the name of the field you want to get recommendation for + + * **rows**: the number of categories to return + + * **products_per_attribute**: the number of Products to return per each + attribute + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response of this request will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 296, + "miso_id": "9d7c8d9c-dd73-11eb-b20d-9a566192e5c6", + "attributes": [ + { + "value": "Christopher Nolan", + "total": 12, + "recommended_products": [ + { + "product_id": "tmdb-272", + "title": "Batman Begins (2005)" + }, + { + "product_id": "tmdb-77", + "title": "Memento (2000)" + } + ] + }, + { + "value": "Ridley Scott", + "total": 26, + "recommended_products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)" + }, + { + "product_id": "tmdb-4982", + "title": "American Gangster (2007)" + } + ] + }, + { + "value": "Quentin Tarantino", + "total": 13, + "recommended_products": [ + { + "product_id": "tmdb-680", + "title": "Pulp Fiction (1994)" + }, + { + "product_id": "tmdb-68718", + "title": "Django Unchained (2012)" + } + ] + } + ] + } + } + + + ``` + + * **attributes**: a list of attributes recommended to the users. + + * **attributes[ ].value**: the recommended attribute value (in this + case, director name) + + * **attributes[ ].total**: the total number of Products that have this + attribute + + * **attributes[ ].recommended_products**: a list of Products (with the + attribute) recommended to the users + operationId: user_to_attributes_v1_recommendation_user_to_attributes_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToAttributes' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/AttributeRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_trending: + post: + tags: + - Recommendation APIs + summary: User to Trending API + description: >- + The User to Trending API returns the products that are currently + trending + + and are most likely to be of interest to this user. It's different from + the User to Products API because it will only + + recommend trending products. However, each user should still see unique + recommendations that are not only trending but + + also suit their interests. + + + ### Applicable scenarios + + This API is typically used to make homepage recommendations such as + "Trending products for users like you" or + + "Trending on Youtube". + + + ### Filtering "already seen" items + + The User to Trending API will not recommend products users have recently + interacted with. + operationId: trending_items_v1_recommendation_user_to_trending_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToItemsRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/TrendRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/product_to_products: + post: + tags: + - Recommendation APIs + summary: Product to Products API + description: >- + The Product to Products API returns the products that are related to an + anchor product (often the product the user + + is currently engaging with) and are also likely to drive conversions by + connecting with the user’s interests. It is + + different from the User to Products API as it not only considers the + user’s interests but also considers the + + recommended products' relevancy to the anchor product. + + + ### Applicable scenarios + + This API is frequently used in product detail page to show related + products that users can consume + + further, such as "Related products you may like" on Amazon or "Up next + video" on Youtube. It is one of Miso's best + + performing APIs. Our customers usually see more than 30% and some times + 110% relative lift in click-through rate after + + deploying this a feature using this API. + + + ### Basic usage + + To use this API, you just need to let Miso knows the `user_id` (or + `anonymous_id`) and the `product_id` you + + want to get related recommendations for. For example, the following + request will return the products that are + + related to the movie `Toy Story`. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"] + } + + ``` + + * **product_id**: the id of the anchor product + + * **rows**: the number of related products to return + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 56, + "miso_id": "f98b1904-ddce-11eb-be53-fa1729b23183", + "products": [ + { + "product_id": "toy-story-2-1999", + "title": "Toy Story 2 (1999)" + }, + { + "product_id": "toy-story-3-2010", + "title": "Toy Story 3 (2010)" + }, + { + "product_id": "the-lion-king-1994", + "title": "The Lion King (1994)" + } + ] + } + } + + ``` + + * **products**: a list of products related to the anchor product + + * **products[ ].product_id**: the id of the recommended product + + * **products[ ].title**: the title of the recommended product. You can + use `fl` parameter to make Miso return more fields + + + ### Boosting and filtering + + Like every Miso API, you can utilize `fq` and `boost_fq` to fine-tune + the recommendations returned by Miso, and + + Miso will guarantee to return the required number of recommendations + that meet the given criteria. + + + For example, the following request still recommends movies related to + "Toy Story" but limits the recommendations + + to only the movies released after year 2010. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"], + "fq": "custom_attributes.year: [2010 TO *]" + } + + ``` + + + For another example, the following request will *boost* the movies that + are acted by `Tom Hanks`. The boosting is + + different from filtering as it only prioritizes those products that + match the boosting criteria and are relevant to + + the anchor products, but it will not limit the results to only such + products. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"], + "boost_fq": "custom_attributes.actors:\"Tom Hanks\"" + } + + ``` + + + ### Multiple anchor products + + In the scenarios where you want to recommend products related to + **multiple** anchor products, for example, + + for shopping cart cross-sell or up-sell, you can utilize `product_ids` + + parameter and have multiple product ids in it. + + + For instance, the following request recommends products related to + movies "Toy Story" and "Monsters, Inc." + + that will be of interest to the the current user. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_ids": ["toy-story-1995", "monsters-inc-2001"], + "rows": 3, + "fl": ["title"] + } + + ``` + operationId: product_to_products_v1_recommendation_product_to_products_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/YMALRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductToProductsResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/qa/question_answering: + post: + tags: + - Q&A APIs + summary: Q&A API + description: >- + Question Answering API analyzes each Product's `html` field and extracts + paragraphs that can answer users' + + questions. + + + For example, Miso can take question likes `What is python?`, and extract + an answer like + + `Python is an interpreted, object-oriented, high-level programming + language.` from a product's `html` field. + + + Each answer is assigned a `probability` score that determines how likely + a paragraph can accurately answer the + + question. A probability at least 0.7 is recommended, but you usually + will need to fine-tune + + this threshold to find the precision-and-recall sweet-spot for your + application. + + + ### Limitations + + Miso will only extract answers from the `html` field and from products + that have `enable_question_answering` set to `true`. Also, + + since Q&A is a much more complex search problem, the response time of + this API is usually between 1 to 2 seconds + + for a new question. For an old question this API has answered before, + the response time will be less than 75ms. + operationId: question_and_answer_v1_qa_question_answering_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionAnsweringRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QAResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/qa/questions: + post: + tags: + - Q&A APIs + summary: Upload Question Bank API + description: >- + Question Bank API lets you upload your *question bank* to Miso. A + *question bank* is a list of questions that + + can be used for **Question Autocomplete** and **Similar Question + Search**. + + + This API follows a *replace-all* model, i.e. a successful upload request + will replace all the existing questions + + in the question bank. + + + For example, the following request will replace the existing question + bank with the given three questions: + + ``` + + POST /v1/qa/questions + + {"data": [ + {"question": "What is python?"}, + {"question": "What is list comprehension?"}, + {"question": "How to sort a list in Python?"} + ]} + + ``` + + + + + operationId: post_questions_v1_qa_questions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PostQuestionRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BaseResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/qa/question_autocomplete: + post: + tags: + - Q&A APIs + summary: Question Autocomplete API + description: >- + Question Autocomplete is an important feature for Q&A applications. It + not only saves your users from typing + + the complete questions, but also showcases what questions your app is + capable answering. This is important because + + Q&A is an advanced search feature that not every user is familar with. + + + Miso generates autocomplete candidates from the question bank you + uploaded (see [Question Bank Upload API](...)). + + Given a partial question string, Question Autocomplete API will suggest + question candidates that match the query + + the user is typing. + + + + For example, let's first upload three questions to the question bank: + + ``` + + POST /v1/qa/questions + + {"data": [ + {"question": "What is python?"}, + {"question": "What is pypy?"}, + {"question": "How to sort a list in Python?"} + ]} + + ``` + + + Then, immediately after the above request finished, you can send the + request below to get autocompletion + + candidates for any partial query string. For example, if the query + string the user types so far is *"what is p"*: + + + ``` + + POST /v1/qa/question_autocomplete + + { + "q": "what is p", + "rows": 5 + } + + ``` + + + The API will respond the completion candidates like the following: + + ``` + + { + "data": + "completions": [ + {"question": "What is python?"}, + {"question": "What is pypy?"} + ] + } + } + + ``` + + + The API supports adaptive fuzzy matching such that even if there are + typos in the query string, the API + + is still able to return the question candidates with the correct + spellings. For example, if the query string is + + "*How to sorta*". The API is still able to match the completion + candidate: + + "*How to sort a list in Python?*" + + + The API is optimized for instant experience and has an average response + time lower than 50ms. + operationId: post_autocomplete_v1_qa_question_autocomplete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionAutocompleteRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QAAutocompleteResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/bulk: + post: + tags: + - Bulk API + summary: Bulk Request API + operationId: bulk_v1_bulk_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BulkResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] +components: + schemas: + AddToCart: + title: add_to_cart + required: + - type + type: object + properties: + type: + title: Type + enum: + - add_to_cart + type: string + description: > + + Used when a user adds a product into their shopping cart. This is a + strong + + positive signal of the user's interest in the product, and may + eventually lead to a purchase. + quantities: + title: Quantities + anyOf: + - type: array + items: + type: number + - type: number + description: > + + The quantities of products the user adds to their cart or checks out + with. This field should be a list of positive values. + + Specifically, if `product_ids` is a list of N products, the + `quantities` needs to be a list with N numbers as well. + + If `quantities` are not specified, we will assume the quantity to be + 1 for every product. + + + Example: + + ``` + + {"quantities": [1, 2]} + + ``` + example: + - 1 + - 2 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + AddToCollection: + title: add_to_collection + required: + - type + type: object + properties: + type: + title: Type + enum: + - add_to_collection + type: string + description: > + + Used when a user adds a product to their personal collection. This + is a strong + + signal of their interest in the product. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + AnchoringEntry: + title: AnchoringEntry + required: + - product_id + - anchor_ids + type: object + properties: + product_id: + title: Product Id + type: string + description: Product to boost + anchor_ids: + title: Anchor Ids + minLength: 1 + type: array + items: + type: string + minLength: 1 + description: A list of anchor products + relative_position: + title: Relative Position + type: integer + description: Relative position to the top anchor product + default: -1 + start_time: + title: Start Time + type: string + description: When does the anchoring start. Leave it unset to start immediately + format: date-time + end_time: + title: End Time + type: string + description: When will the anchoring end. Leave it unset to not have an end time + format: date-time + Answer: + title: Answer + required: + - probability + - text + - css_selector + type: object + properties: + probability: + title: Probability + maximum: 1 + minimum: 0 + type: number + description: >- + The probability this paragraph can sufficiently answer the user's + question (from 0.0 to 1.0). + html: + title: Html + type: string + description: >- + The answer paragraph in its original html tag, i.e. or the + `outerHTML` of the + answer paragraph node. + + text: + title: Text + type: string + description: The plain text version of answer paragraph. + css_selector: + title: Css Selector + type: string + description: > + + The CSS selector that uniquely identifies the answer paragraph node + in the original HTML content. This css selector + + matches exactly one HTML node that contains the answer paragraph. In + order to be as unambiguous as possible, + + the returned CSS selector is in the form of a series of nth-child + selectors starting from `:root` node + + (which is usually the ``). For example, + + ``` + + :root > div:nth-child(1) > p:nth-child(2) + + ``` + + . This selector means the answer paragraph is a `

` tag that is + the second child of a `

` node, which is in turn, the + + first child of the `:root` node. + + + This CSS selector is useful when you want to make the answer + paragraph stand out from the + + rest of the document. For example, + + the following JQuery code turns the background color of the answer + paragraph to yellow: + + + ``` + + $(answer.css_selector).css("background-color", "yellow"); + + ``` + AnswerBlock: + title: AnswerBlock + required: + - html + - css_selector + - relevant_children_slice + - answer_css_selector + - title + type: object + properties: + html: + title: Html + type: string + description: The HTML content of the answer block + css_selector: + title: Css Selector + type: string + description: >- + The CSS selector that uniquely identifies the answer block from the + HTML root + relevant_children_slice: + title: Relevant Children Slice + type: array + items: + - type: integer + - type: integer + description: >- + The range of children nodes inside the *answer block* that is + relevant to the selected answer. + answer_css_selector: + title: Answer Css Selector + type: string + description: |2- + + The CSS selector to the selected answer paragraph inside the answer block. You can use this selector to select + the answer from the answer block (as supposed to selecting from the HTML root) + + title: + title: Title + type: string + description: >- + The relevant title to the answer paragraph. This title is extracted + from a header node close + to the answer paragraph. If there is no such node, the title will be an empty string + AnswerData: + title: AnswerData + required: + - question + - question_id + type: object + properties: + question: + title: Question + type: string + description: The question given by the user + question_id: + title: Question Id + type: string + description: The UUID of the question for which the latest answer is requested. + format: uuid + parent_question_id: + title: Parent Question Id + type: string + description: >- + The UUID of the parent question if the current question is a + follow-up to a previous question. + format: uuid + answer_stage: + title: Answer Stage + type: string + description: The status of the answer generating process. + default: '' + finished: + title: Finished + type: boolean + description: Whether the answer generating process is finished. + default: false + answer: + title: Answer + type: string + description: The latest answer for the given question. + default: '' + sources: + title: Sources + type: array + items: + type: object + description: A list of sources related to the answer. + default: [] + related_resources: + title: Related Resources + type: array + items: + type: object + description: A list of related resources relevant to the question and answer. + default: [] + followup_questions: + title: Followup Questions + type: array + items: + type: string + description: A list of suggested follow-up questions. + affiliation_products: + title: Affiliation Products + type: array + items: + type: object + description: A list of suggested affiliation products. + AttributeRecRecord: + title: AttributeRecRecord + required: + - value + - total + - recommended_products + type: object + properties: + value: + title: Value + type: string + description: The attribute we recommend to the user in their textual form. + example: Miso T-Shirt Shop + total: + title: Total + type: integer + description: The total number of products that have this attribute. + example: 1000 + recommended_products: + title: Recommended Products + type: array + items: + $ref: '#/components/schemas/Record' + description: Top personalized recommendations of products have this attribute. + example: 1000 + AttributeRecResponse: + title: AttributeRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/AttributeResponseBody' + AttributeResponseBody: + title: AttributeResponseBody + required: + - attributes + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + attributes: + title: Attributes + type: array + items: + $ref: '#/components/schemas/AttributeRecRecord' + description: The attribute recommendation results. + AutocompleteRequest: + title: AutocompleteRequest + required: + - q + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of search results to return. + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + q: + title: Q + minLength: 0 + type: string + description: > + + The search query users typed so far. Please keep the trailing spaces + (if any) intact so that we + + know whether the user has finished typing the last word or is still + typing it. For example, the following query + + means the user has finished typing the word *Fight*: + + ``` + + {"q": "Fight "} + + ``` + + On the other hand, the following query means the user has not + finished typing the last word *Clu*: + + ``` + + {"q": "Fight Clu"} + + ``` + language: + title: Language + type: string + description: > + + Two-letter (639-1) language code of the search query. If given, the + autocomplete results will be from + + that specific language. If not given, the autocomplete results will + be from the primary language + + of the environment. Example query: + + ``` + + {"language": "en"} + + ``` + min_query_users: + title: Min Query Users + type: integer + description: > + + Limits the query completion results to *historical queries* that + have been made by at + + least this number of unique users. This parameter has no effect when + `completion_fields` does not include + + `historical_queries`. We do not recommend setting `min_query_users` + lower than 5. When + + `min_query_users` is too small, we might risk showing queries that + contain typos or are too personal to the + + users who made the query. + default: 5 + completion_fields: + title: Completion Fields + type: array + items: + type: string + description: >+ + + + Controls the sources of autocompletion candidates. Miso performs + autocompletion by matching + + what the user has typed so far to either the *title* of products or + to other *attributes*. + + + By default, we only autocomplete against the value in the `title` + field. The `completion_fields` parameter lets you + + specify the attributes you want to perform autocompletion against. + For example, the following + + query will limit the autocompletion candidates to the `title` and + `tags` of products: + + + ``` + + {"completion_fields": ["title", "tags"]} + + ``` + + + Autocompletion also works on *custom attributes*. For example, if + you have a custom attribute for the + + `designer_name` of the product, the following query limits + autocompletion candidates to only the designer names: + + + ``` + + {"candidates": ["custom_attributes.designer_name"]} + + ``` + + default: + - title + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + additionalProperties: false + AutocompleteResponse: + title: AutocompleteResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/AutocompleteResponseBody' + AutocompleteResponseBody: + title: AutocompleteResponseBody + required: + - completions + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + completions: + title: Completions + type: object + additionalProperties: + type: array + items: + anyOf: + - $ref: '#/components/schemas/TitleCompletion' + - $ref: '#/components/schemas/Completion' + description: Autocompletion results. + example: + title: + - text: Miso Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + type: title + product: + product_id: 123ABC-S-Black + brand: + - text: Miso + type: brand + - text: Mitsui + type: brand + description: |- + autocomplete api response body: + { + "completions": [{"text": "", "source": ""}] + } + BaseBody: + title: BaseBody + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + BaseGeo: + title: BaseGeo + required: + - lat + - lon + type: object + properties: + lat: + title: Lat + maximum: 90 + minimum: -90 + type: number + description: Latitude of the center point, should between 90 and -90 + lon: + title: Lon + maximum: 180 + minimum: -180 + type: number + description: Longitude of the center point, should between 180 and -180 + BaseResponse: + title: BaseResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/BaseBody' + BaseResponseBody: + title: BaseResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/Record' + description: The recommendation results. + Bookmark: + title: bookmark + required: + - type + type: object + properties: + type: + title: Type + enum: + - bookmark + type: string + description: | + + Used when a user bookmarks a product. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + BoostItem: + title: BoostItem + required: + - field + - option + - query + type: object + properties: + field: + title: Field + type: string + description: The boosting field of the rule. + option: + title: Option + enum: + - contains + - not_contain + - is + - is_not + type: string + description: The boosting option of the field. + query: + title: Query + type: string + description: The boosting query of the field. + action: + title: Action + enum: + - pin + - bury + - remove + type: string + description: The boosting action of the field. + pin_position: + title: Pin Position + minimum: 1 + exclusiveMinimum: 0 + type: integer + description: >- + This field is a 1-based integer to describe the position. This field + is only used when action is "pin". + example: 1 + example: + field: title + option: contains + query: iphone + BoostingFilterBase: + title: BoostingFilterBase + type: object + properties: + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + BulkIndividualResponse: + title: BulkIndividualResponse + required: + - error + - status_code + - body + type: object + properties: + error: + title: Error + type: boolean + description: Whether there is an error + status_code: + title: Status Code + type: integer + description: Status code of the response + body: + title: Body + allOf: + - $ref: '#/components/schemas/GeneralBody' + description: The response body + description: 'Individual response in a bulk API request ' + BulkRequest: + title: BulkRequest + required: + - requests + type: object + properties: + requests: + title: Requests + maxItems: 100 + minItems: 1 + type: array + items: + $ref: '#/components/schemas/EngineAPIRequest' + description: An array of request objects + description: Bulk API request + BulkResponse: + title: BulkResponse + required: + - data + - errors + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/BulkIndividualResponse' + description: The bulk request results + errors: + title: Errors + type: boolean + description: Whether there is any errors in the responses + description: 'Bulk API response ' + Campaign: + title: Campaign + type: object + properties: + name: + title: Name + type: string + description: >- + Name of the campaign. Identifies a specific product promotion or + strategic campaign. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: spring_sale + source: + title: Source + type: string + description: >- + Source of the campaign. Identifies which site sent the traffic. (see + [UTM parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: Google + medium: + title: Medium + type: string + description: >- + Medium of the campaign that identifies what type of link was used, + such as cost per click or email. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: cpc + term: + title: Term + type: string + description: >- + Term of the campaign that identifies search terms. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: running+shoes + content: + title: Content + type: string + description: >- + Content of the campaign that identifies what specifically was + clicked to bring the user to the site, such as a banner ad or a text + link. It is often used for A/B testing and content-targeted ads. + Identifies search terms. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: textlink + CategoryPageView: + title: category_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - category_page_view + type: string + description: > + + Used when a user views a category page for a specific “family” or + “group” or products or content. + + This is a strong indicator of what types category of products or + content the user is interested in. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + category: + title: Category + type: array + items: + type: string + description: > + + Categories usually fall in a hierarchy, such as *Home & Garden > + Kitchen & Dining > Kitchen Tools & Utensils > + + Sushi Mats* Use this field to specify the full hierarchical list + describing the category the user is viewing. + + + The levels should be listed from broad to narrow: + + `["TOP_LEVEL_CATEGORY", "SUBCATEGORY_1", "SUBCATEGORY_2", ...]`. + + This field is only used by the category_page_view interaction type, + but this data is very useful for + + determining the user’s interests. + + Example: + + ``` + + [ + "Home & Garden", // TOP_LEVEL_CATEGORY + "Kitchen & Dining", // SUBCATEGORY_1 + "Kitchen Tools & Utensils", // SUBCATEGORY_2 + "Sushi Mats" // SUBCATEGORY_3 + ] + + ``` + additionalProperties: false + CategoryRecRecord: + title: CategoryRecRecord + required: + - category + - total + - recommended_products + type: object + properties: + category: + title: Category + type: array + items: + type: string + description: The attribute we recommend to the user in their textual form + example: + - Miso T-Shirt Shop + total: + title: Total + type: integer + description: The total number of products that are associated with this category. + example: 1000 + recommended_products: + title: Recommended Products + type: array + items: + $ref: '#/components/schemas/Record' + description: >- + Top personalized recommendations for the user of products that are + associated with this category. + example: 1000 + CategoryRecResponse: + title: CategoryRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/CategoryResponseBody' + CategoryResponseBody: + title: CategoryResponseBody + required: + - categories + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + categories: + title: Categories + type: array + items: + $ref: '#/components/schemas/CategoryRecRecord' + description: The category recommendation results. + CheckProductExistence: + title: CheckProductExistence + required: + - product_ids + type: object + properties: + product_ids: + title: Product Ids + minLength: 1 + type: array + items: + type: string + minLength: 1 + description: >- + A list of product ids to be checked if they will be returned in the + search results + Checkout: + title: checkout + required: + - type + type: object + properties: + type: + title: Type + enum: + - checkout + type: string + description: > + + Used when a user enters checks out with a set of products. For an + eCommerce site, this is the strongest signal of the user's + + interest and has a high probability of leading to an eventual + purchase. + revenue: + title: Revenue + type: number + description: > + + Total revenue associated with the checkout. The revenue should + include generally shipping, tax, etc. that you + + want to include as part of your revenue calculations. + example: 23.32 + quantities: + title: Quantities + anyOf: + - type: array + items: + type: number + - type: number + description: > + + The quantities of products the user adds to their cart or checks out + with. This field should be a list of positive values. + + Specifically, if `product_ids` is a list of N products, the + `quantities` needs to be a list with N numbers as well. + + If `quantities` are not specified, we will assume the quantity to be + 1 for every product. + + + Example: + + ``` + + {"quantities": [1, 2]} + + ``` + example: + - 1 + - 2 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + ChildrenObject: + title: ChildrenObject + required: + - id + type: object + properties: + id: + title: Id + type: string + url: + title: Url + type: string + title: + title: Title + type: string + description: + title: Description + type: string + html: + title: Html + type: string + headers: + title: Headers + type: array + items: + type: string + custom_attributes: + title: Custom Attributes + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + Click: + title: click + required: + - type + type: object + properties: + type: + title: Type + enum: + - click + type: string + description: > + + Used when user clicked on something, and does not belong to any + other interaction type. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Complete: + title: complete + required: + - type + type: object + properties: + type: + title: Type + enum: + - complete + type: string + description: > + + Used when a user "complete" a product (e.g. complete a course or a + video). + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Completion: + title: Completion + required: + - text + - text_with_markups + - text_with_inverted_markups + type: object + properties: + text: + title: Text + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_markups: + title: Text With Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_inverted_markups: + title: Text With Inverted Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + description: 'basic completion response only has `text` ' + CreateResponse: + title: CreateResponse + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + data: + $ref: '#/components/schemas/TaskId' + Custom: + title: custom + required: + - type + - custom_action_name + type: object + properties: + type: + title: Type + enum: + - custom + type: string + description: > + + Used when you want to record any other kinds of interactions between + users and products. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + custom_action_name: + title: Custom Action Name + type: string + description: | + + The name of the custom interaction that you have defined. + additionalProperties: false + DeleteResponse: + title: DeleteResponse + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + data: + $ref: '#/components/schemas/TaskId' + Dislike: + title: dislike + required: + - type + type: object + properties: + type: + title: Type + enum: + - dislike + type: string + description: > + + Used when a user indicates a `dislike` for a product or indicates + + they would like to not be recommended content or products like this + in the future. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + DiversifyField: + title: DiversifyField + type: object + properties: + minimum_distance: + title: Minimum Distance + type: integer + description: Minimum distance between two products that have the same value + default: 1 + always_together: + title: Always Together + type: boolean + description: >- + If always_together=true, all the products that have the same value + for this field, will be put side-by-side. + default: false + EngineAPIRequest: + title: EngineAPIRequest + required: + - api_name + - body + type: object + properties: + api_name: + title: Api Name + type: string + description: > + + The name of the API. An API name should contain one slash. For + example: `search/search` or `recommendation/user_to_products` + body: + title: Body + type: object + description: | + + The request body to the API. + description: Engine API request + ExperimentRequest: + title: ExperimentRequest + type: object + properties: + user_id: + title: User Id + type: string + description: Identifies the signed-in user who performed the interaction. + example: '2179873' + anonymous_id: + title: Anonymous Id + type: string + description: A pseudo-unique substitute for the User Id + example: 403fb18e-98ff-434d-8585-726fabf5ed37 + variant_name: + title: Variant Name + type: string + description: >- + Set the variant_name if you want to assign a user to a specific + variant. Most of the time, you don't need to pass this field. + Instead, the system will automatically assign a variant for this + user. + example: Treatment_Group + timestamp: + title: Timestamp + type: string + description: >- + The time the user is assigned to the variant group. If not set, + current time will be used. + format: date-time + example: '2022-01-23T12:34:56-08:00' + FacetCounts: + title: FacetCounts + type: object + properties: + facet_fields: + title: Facet Fields + type: object + additionalProperties: + type: array + items: + type: array + items: + - type: string + - type: integer + description: Facet counts of each facet field + default: {} + FacetDefinition: + title: FacetDefinition + required: + - field + type: object + properties: + field: + title: Field + type: string + description: >+ + + The field name to create a facet against. For example, the following + query will create a facet against + + the `custom_attributes.director` field, and return the ten most + common facet values of this field + + (for Products that match the search query): + + ``` + + { + "field": "custom_attributes.director", + "size": 10 + } + + ``` + + size: + title: Size + type: integer + description: > + + Number of facet values to return. The facet values are sort + descendingly by the number of Products + + that have these values (and match the search query). + default: 10 + include: + title: Include + type: string + description: > + + Filter facet values based on a regular expression. For example, the + following query will return only the facet + + values that start with `Steven` (case-sensitive): + + ``` + + { + "field": "custom_attributes.director", + "size": 10, + "include": "Steven.*" + } + + ``` + + You can escape a special character with a preceding backslash `\` or + surround it with double quotes. + + For example, the following query will only return the facet values + starting with `St.`: + + + ``` + + { + "field": "custom_attributes.place_name", + "size": 10, + "include": "\"St.\".*" + } + + ``` + + + Note that, the `include` parameter will only affect the facet + values, and will not affect the search result itself. + ranges: + title: Ranges + type: array + items: + $ref: '#/components/schemas/RangeRequireKey' + description: > + + Facet ranges for numeric fields or date-like string fields. For + example, the following query groups the products + + into fours buckets against on their `original_price` ranges, each of + which has a user-friendly "key": + + ``` + + { + "field": "original_price", + "ranges": [ + {"to": 10, "key": "Less than 10 dollars"}, + {"from": 10, "to": 100, "key": "10 to 100 dollars"}, + {"from": 100, "to": 1000, "key": "100 to 1,000 dollars"}, + {"from": 1000, "key": "More than 1,000 dollars"} + ] + } + + ``` + + + For each range object, you need to at least specify one of the `to` + or `from` values (or both). `from` + + is always **inclusive**, and `to` is always **exclusive**. In the + response, Miso refers to each bucket by their `key`. + + For example, the above request will have the following response: + + ``` + + { + "facet_counts": { + "facet_fields": { + "original_price": [ + [ + "Less than 10 dollars", 1987 + ], + [ + "10 to 100 dollars", 109 + ], + [ + "100 to 1,000 dollars", 123 + ], + [ + "More than 1,000 dollars", 5 + ] + ] + } + } + } + + ``` + queries: + title: Queries + type: array + items: + $ref: '#/components/schemas/QueryFilterRequireKey' + description: > + + Facet queries that support facet counts for any arbitrary Lucene + queries, + + each of which is labeled by a user-friendly "key": + + ``` + + { + "field": "my_custom_facet", + "queries": [ + { + "query": "price: [* TO 10] AND size:"Small"", + "key": "Less than 10 dollars / Small size" + }, + { + "query": "price: [10 TO 100] AND size:"Medium"", + "key": "10 to 100 dollars / Medium size" + }, + { + "query": "price: [100 TO *] AND size:"Large"", + "key": "More than 100 dollars / Large size" + } + ] + } + + ``` + + + In the response, Miso refers to the query result by their `key`. + + For example, the above request will have the following response: + + ``` + + { + "facet_counts": { + "facet_fields": { + "my_custom_facet": [ + [ + "Less than 10 dollars / Small size", 1987 + ], + [ + "10 to 100 dollars / Medium size", 109 + ], + [ + "More than 100 dollars / Large size", 123 + ] + ] + } + } + } + + ``` + Feedback: + title: feedback + required: + - type + type: object + properties: + type: + title: Type + enum: + - feedback + type: string + description: | + + Used when a user sends feedback on provided results. + question_id: + title: Question Id + maxLength: 512 + type: string + description: > + + A unique identifier representing the specific question for which + feedback is being provided. + example: question_123 + result_type: + title: Result Type + type: string + description: > + + Indicates the type of result the provided feedback is associated + with, e.g., an answer or a suggestion. + example: answer + value: + title: Value + type: string + description: > + + Specifies the user's perspective on the provided result, with + possible values being helpful, not helpful, + + or unselected if the user has not provided any feedback. + example: helpful + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Filter: + title: Filter + type: object + properties: + terms: + title: Terms + type: array + items: + type: string + ranges: + title: Ranges + type: array + items: + $ref: '#/components/schemas/Range' + queries: + title: Queries + type: array + items: + $ref: '#/components/schemas/QueryFilter' + FilterQueryItem: + title: FilterQueryItem + required: + - option + - query + type: object + properties: + option: + title: Option + enum: + - overlap_with + type: string + description: The filter query option of the boosting rule. + query: + title: Query + type: string + description: The filter query of the boosting rule. + GeneralBody: + title: GeneralBody + type: object + properties: {} + description: 'Allow any json body ' + GeoDistanceQuery: + title: GeoDistanceQuery + required: + - lat + - lon + - distance + type: object + properties: + lat: + title: Lat + maximum: 90 + minimum: -90 + type: number + description: Latitude of the center point, should between 90 and -90 + lon: + title: Lon + maximum: 180 + minimum: -180 + type: number + description: Longitude of the center point, should between 180 and -180 + field: + title: Field + type: string + description: >- + Name of the field in product data that holds geographic coordinate. + Defaults to `location` + default: location + distance: + title: Distance + type: number + description: >- + Distance to center point, in kilometer or mile (according to + `distance_unit`) + distance_unit: + title: Distance Unit + enum: + - km + - mile + description: Unit of distance(`km` or `mile`). Defaults to `mile` + default: mile + GeoDistanceQueryBoost: + title: GeoDistanceQueryBoost + required: + - lat + - lon + - distance + type: object + properties: + lat: + title: Lat + maximum: 90 + minimum: -90 + type: number + description: Latitude of the center point, should between 90 and -90 + lon: + title: Lon + maximum: 180 + minimum: -180 + type: number + description: Longitude of the center point, should between 180 and -180 + field: + title: Field + type: string + description: >- + Name of the field in product data that holds geographic coordinate. + Defaults to `location` + default: location + distance: + title: Distance + type: number + description: >- + Distance to center point, in kilometer or mile (according to + `distance_unit`) + distance_unit: + title: Distance Unit + enum: + - km + - mile + description: Unit of distance(`km` or `mile`). Defaults to `mile` + default: mile + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: |2- + + Defines a list of 0-based positions you want to place the boosted products at. + + If `boost_positions` is not specified (which is the default behavior), all the boosted products will be ranked + higher than the rest of the products. + + GeoQuery: + title: GeoQuery + type: object + properties: + filter: + title: Filter + type: array + items: + $ref: '#/components/schemas/GeoDistanceQuery' + description: >- + When set, filter result to include only products within certain + geographic range from given point. + default: [] + boost: + title: Boost + type: array + items: + $ref: '#/components/schemas/GeoDistanceQueryBoost' + description: >- + When set, boost products within certain geographic range from given + point. + default: [] + HTTPValidationError: + title: HTTPValidationError + type: object + properties: + detail: + title: Detail + type: array + items: + $ref: '#/components/schemas/ValidationError' + HomePageView: + title: home_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - home_page_view + type: string + description: | + + Used when a user views your home page. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Impression: + title: impression + required: + - type + type: object + properties: + type: + title: Type + enum: + - impression + type: string + description: >- + + Used to record when a user saw or was presented with a product or + content asset. + + An impression does not mean a user is interested: for example, if + there is an impression for a + + certain product, but no further interaction occurs with that + product, we assume the user is probably not + + interested in it. + + + For an impression that was generated by Miso's search results or + recommendations results, it is important to + + include the `miso_id` associated with the results so that we know + the impression is from Miso + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + InteractionBulkIn: + title: InteractionBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + InteractionCreateOut: + title: InteractionCreateOut + required: + - message + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + InteractionDeleteIn: + title: InteractionDeleteIn + required: + - user_ids + type: object + properties: + user_ids: + title: User Ids + type: array + items: + type: string + InteractionDeleteOut: + title: InteractionDeleteOut + required: + - message + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + Like: + title: like + required: + - type + type: object + properties: + type: + title: Type + enum: + - like + type: string + description: | + + Used to record when a user indicates a `like` for a product. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Listen: + title: listen + required: + - type + type: object + properties: + type: + title: Type + enum: + - listen + type: string + description: > + + Used to record when and for how long a user listens to content that + is of an audio format. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + LocationInformation: + title: LocationInformation + required: + - lat + - lon + type: object + properties: + lat: + title: Lat + type: number + example: 40.74844 + lon: + title: Lon + type: number + example: -73.985664 + MultipleGetRequest: + title: MultipleGetRequest + required: + - product_ids + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + product_ids: + title: Product Ids + type: array + items: + type: string + description: > + + List of product_ids to retrieve. Products will be returned in the + same order as they are given in this list. + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product + along with the `product_id`, which is always returned. + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields (which is the + default): + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field. + + ``` + + {"fl": []} + + ``` + default: + - '*' + MultipleGetResponse: + title: MultipleGetResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/MultipleGetResponseBody' + MultipleGetResponseBody: + title: MultipleGetResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/RecordWithFound' + description: >- + Return a list of Product records. Some or all of them are potentially + not found + OrderByDefinition: + title: OrderByDefinition + required: + - field + type: object + properties: + field: + title: Field + type: string + description: >+ + + Name of the field to order by. You can sort by any numeric and + boolean fields in your Product catalog, or use one of any special + fields: + * **_personalization_score**: the score that rates the degree of + affinity between + + a pair of user and product from Miso's personalization algorithm. + + * **_search_score**: the score that rates the degree of search + keyword matches to a product's catalog. + + * **_boosting_score**: the score that rates the degree a Product is + boosted by your boosting query. + + tie_breaker: + title: Tie Breaker + allOf: + - $ref: '#/components/schemas/TieBreakDefinition' + default: + type: relative_difference + threshold: 0 + default_value: + title: Default Value + type: number + description: The default value to use when the scores do not exist for a Product + default: 0 + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/BaseGeo' + description: >- + The geo point to compute the `_geo_distance` variable against. This + is only required if + `_geo_distance` is present in the formula. + order: + title: Order + enum: + - desc + - asc + default: desc + Page: + title: Page + required: + - url + type: object + properties: + url: + title: Url + type: string + description: Url of the page + example: https://example.com/miso-tshirt-123ABC + referrer: + title: Referrer + type: string + description: Url of the referrer page + example: https://example.com/ + title: + title: Title + type: string + description: Title of the page + example: My Product Page + PartialMatchedRecord: + title: PartialMatchedRecord + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: |2- + + The unique identifier for the product. + + example: 123ABC-S-Black + PollAnswerResponse: + title: PollAnswerResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + description: >- + The status of the API response ('success' or other human readable + api status). + default: success + data: + title: Data + allOf: + - $ref: '#/components/schemas/AnswerData' + description: >- + The answer data containing the latest answer, sources, and related + resources. + PostQuestionRequest: + title: PostQuestionRequest + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/app__schemas__engine_api__request__Question' + description: Post questions request + ProductBulkDeleteIn: + title: ProductBulkDeleteIn + required: + - data + type: object + properties: + data: + $ref: '#/components/schemas/ProductIdList' + ProductBulkIn: + title: ProductBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/ProductRecord' + ProductDetailPageView: + title: product_detail_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - product_detail_page_view + type: string + description: >- + Used when a user views the detail page of a product. Viewing a + product + detail page usually indicates a user is interested in the product to certain degree, especially, + when the `duration` of the page view is long. When `duration` of the page view is very short (< 5 seconds), + `product_detail_page_view` may indicate neural or negative interest in the product. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + ProductIdList: + title: ProductIdList + required: + - product_ids + type: object + properties: + product_ids: + title: Product Ids + type: array + items: + type: string + ProductIds: + title: ProductIds + required: + - ids + type: object + properties: + ids: + title: Ids + type: array + items: + type: string + ProductImageView: + title: product_image_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - product_image_view + type: string + description: > + + Used when a user views the image of a product (e.g. to enlarge a + product photo). + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + ProductListOut: + title: ProductListOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + data: + $ref: '#/components/schemas/ProductIds' + additionalProperties: false + ProductReadOut: + title: ProductReadOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + data: + $ref: '#/components/schemas/ProductRecord' + additionalProperties: false + ProductRecord: + title: ProductRecord + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + minLength: 1 + type: string + description: > + + The unique identifier for this product. The Id can be in any format + you use in your product + + database (e.g. the product's SKU, UPC, or UUID or serial number). We + will use this Id to track how users + + interact with products and content in the Interactions records you + upload to Miso. It is important to keep the Id + + consistent between two datasets. For products that have multiple + variants, you should have a unique + + `product_id` for each variant, and use `product_group_id` to group + them together. + + + For example, for a T-shirt with SKU `123ABC` that comes in 4 sizes: + `S`, `M`, `L`, `XL`, we should create four different + + products: + + + ``` + + { + "product_id": "123ABC-S", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-M", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-L", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-XL", + "product_group_id" "123ABC" + } + + ``` + + * Constraints + * Can't contain `,` + * Can't start with `_` + * Length <= 512 + example: 123ABC-S-Black + product_group_id: + title: Product Group Id + type: string + description: > + + The `product_group_id` is used to prevent the same product (but a + different variant) from showing multiple + + times in the search or recommendation results. When one product has + multiple variants (for example, different + + sizes, colors, or materials), you should assign a unique product_id + to each variant, but assign the same + + `product_group_id` to all of them. If `product_group_id` is not + given, we default to the value of `product_id`. + example: 123ABC + parent_id: + title: Parent Id + type: string + description: >+ + + The `parent_id` is used to declare a parent-child relationship + between two "Products". + + Such relationships are common in marketplaces and content media + sites with user generated contents. + + For example, an E-commerce marketplace (such as E-bay or Amazon) + + may have "Shops" (as parents) and "Merchandises" + + (as children), and a social streaming site, such as YouTube, may + have "Channel" (as parents) and "Video" (as children). In these + sites, both entities can be modeled as "Products", and can both be + returned in Search and Recommendation APIs. + + + Declaring the parent-child relationships allows Miso to + automatically propagate interactions from one product to the other. + + For example, when a user "watch" a + + Video, Miso will propagate this signal to the + + Channel which publishes this Video, even if users do not directly + interact with the Channel page. Such implicit + + interactions + + are particularly useful when making recommendations for Channel + because it gives Miso much more information + + about users' interests to different Channels than solely relying on + users' direct interactions with the + + them, which happens less often. + + + `parent_id` needs to be a non-empty string referring to the + `product_id` of the parent product. + + The parent product can be uploaded in a separate batch, and does not + need to exist before its children products. + + + The implicit interactions will only exist during Miso's training + process, and will not show up in the + + Interaction dataset. + + example: Nike_Shop_123 + related_ids: + title: Related Ids + type: array + items: + type: string + description: >- + The product_id or product_group_id of other products that are + related to this Product + type: + title: Type + type: string + description: > + + The `type` of product. This is for sites that have more than one + type of product or content that they want their users + + to interact with. If your site has only one type of product, you can + leave this field out. + + A classic example is travel sites, which have both *hotel* and + *flight* sales. It is also useful for sites that let + + users interact with products as well as *product bundles*. For + example, on YouTube, each video is a product that users + + can watch, while each channel, containing multiple videos, is also a + product that users can subscribe to. + + + For model quality, it is preferable to model all these distinct + product types in the same data set, so that a user's + + interests for one type of product can inform their interests in + another type of products. The `type` field helps Miso + + make these distinctions. + example: clothes + title: + title: Title + type: string + description: > + + The title of the product. During a search, Miso will put predictive + weight behind the title, + + because it is often the main way users identify a product. + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + description: + title: Description + type: string + description: > + + The `description` text of the product. Miso assumes `description` + contains longer textual content than other + + string-based fields. For example, term frequency matters more here + than in a field like the title. Miso’s + + semantic understanding can extract a lot of valuable information + from having a product description that is + + plain-spoken and detailed. + example: >- + This cute Shiba inu dog eating Miso soup is perfect for those who + love Japanese culture. + language: + title: Language + minLength: 2 + type: string + description: > + + The `language` of the product description and content in [two-letter + ISO 639-1 code]( + + https://en.wikipedia.org/wiki/ISO_639-1). For example, English = + `en`, Chinese = `zh`. + + Miso will use this field to determine the proper way to index the + product description. If this field is not specified, + + we will determine the language automatically. + + + We also use the language field to determine users’ interests in + content of different languages. This is particularly + + important for content media sites that have different languages of + content. + + + * Constraints: + * [Two-letter ISO 639-1 code](https://en.wikipedia.org/wiki/ISO_639-1). + For example, English = `en`, Chinese = `zh`. + example: en + created_at: + title: Created At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The time when the product was first created or became available on + your site as an ISO-8601 date or datetime string. + published_at: + title: Published At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The time when the product was published as an ISO-8601 date or + datetime string. + updated_at: + title: Updated At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The time when the product was updated as an ISO-8601 date or + datetime string. + categories: + title: Categories + type: array + items: + type: array + items: + type: string + description: > + + In Miso, you describe a product or content category as a + hierarchical list of strings from broad to narrow, + + called a `category`. (See the `category_page_view` interaction.) + + + Use the `categories` field of products to specify the hierarchical + category or categories that the product + + belongs to. A product may belong to only a single `category`, or + multiple. + + + For example, a product could be in both: + * *Toys & Games > Toys > Dolls, Playsets & Toy Figures > Stuffed Animals*, and + * *Arts & Entertainment > Hobbies & Creative Arts > Collectibles*. + + This field should be a list of a list of strings, where category levels go from broad to narrow, such as: + + ``` + + {"categories": + [ + // the first category the product belongs to + ["TOYS & GAMES", "TOYS", "DOLLS, PLAYSETS & TOY FIGURES", "STUFFED ANIMALS"], + // the second category the product belongs to + ["ARTS & ENTERTAINMENT", "HOBBIES & CREATIVE ARTS", "COLLECTIBLES"] + ] + } + + ``` + + + If your product taxonomy has only one single level, that is not an + issue: + + ``` + + {"categories": + [ + // the first category the product belongs to + ["Toys"], + // the second category the product belongs to + ["Collectibles"] + ] + } + + ``` + + + The categories are optional, but very important for profiling the + products and tracking users' preferences. + + (See also the `category_page_view` interaction) + example: + - - Clothing, Shoes & Jewelry + - Women + - T-Shirts + - - Novelty + - Tops & Tees + - T-Shirts + tags: + title: Tags + type: array + items: + type: string + description: | + + The tags that have been associated with the product. + + For example: + ``` + {"tags": ["TAG_1", "TAG_2", ...]} + ``` + example: + - cute + - anime + - dogs + - t-shirt + url: + title: Url + maxLength: 65536 + minLength: 1 + type: string + description: > + + Url to the product detail page. This is for displaying the product + in your Dojo Sandboxes and is not used for Engine training. + + It is optional, but strongly recommended for a better Sandbox + experience. + format: uri + example: https://example.com/miso-tshirt-123ABC + cover_image: + title: Cover Image + maxLength: 65536 + minLength: 1 + type: string + description: > + + The URL of the cover image of the product. This is for displaying + the product in your Dojo Sandboxes and + + is not used for Engine training. It is optional, but strongly + recommended for a better Sandbox experience. + format: uri + example: https://example.com/miso-tshirt-123ABC.jpg + original_price: + title: Original Price + type: number + description: > + + The (original) price of the product. We only use this number to + calculate the amount of discount, and use that + + to profile user behaviors. + + + * Constraints: + * Need to be a number, but no constraint on the range of the number + example: 20 + sale_price: + title: Sale Price + type: number + description: | + + The sale price of the product. + + * Constraints: + * Need to be a number, but no constraint on the range of the number + example: 15 + margin: + title: Margin + type: number + description: > + + The margin of the product. Note that for our margin optimization + algorithm to work, the margin you specify here + does not need to be the actual dollar amount, but it needs to be something in proportion to that. + + * Constraints: + * Need to be a number, but no constraint on the range of the number + example: 15 + size: + title: Size + type: string + description: > + + The size of the product. For example, for an eCommerce site that + sells T-shirts, each T-shirt might come in + + several different sizes. In this case, we recommend that you should + create one product entry for + + each size variant. When Miso generate search or recommendation + results, we use the `product_group_id` to remove + + different variants of the same product, and only show the variant + that the user is most likely to buy. + example: S + color: + title: Color + type: string + description: > + + The color of the products. Similarly to `size`, when `color` of the + products matters, it is recommended to create + + one product for each color variant of a product. When Miso generate + search or recommendation results, + + we use the `product_group_id` to remove variants of the same + product, and only show the + + variant that the user is most likely to buy. + example: Black + material: + title: Material + type: string + description: > + + The material of the products. Similarly to `size` and `color`, if + `material` of the product matters and there + + are multiple material variants, we should create one product for + each material variant. When Miso generates search or + + recommendation results, we use the `product_group_id` to remove + variants of the same product, and only show the + + variant that the user is most likely to buy. + example: Cotton + condition: + title: Condition + enum: + - NEW + - USED + - REFURBISHED + type: string + description: > + + The condition of the product. By default, we assume `condition`= + `NEW` + default: NEW + brand: + title: Brand + type: string + description: | + + The brand of the product. + example: Miso Corp. + authors: + title: Authors + type: array + items: + type: string + description: > + + The author(s) of the product or content asset. This field needs to + be an array of strings. + example: + - Andy Hsieh + publishers: + title: Publishers + type: array + items: + type: string + description: > + + The publisher(s) of the product or content asset. This field needs + to be an array of strings. + example: + - O'Reilly Media + collections: + title: Collections + type: array + items: + type: string + description: | + + The collection(s) the product belongs to. + example: + - Anime T-Shirt Collection + - Superhero T-Shirt Collection + availability: + title: Availability + enum: + - IN_STOCK + - OUT_OF_STOCK + - PRE_ORDER + type: string + description: > + + The availability of the product. Miso mainly uses `availability` to + filter `OUT_OF_STOCK` items out of its recommendations. + + As a default, we assume the product is `IN_STOCK`. + location: + title: Location + anyOf: + - type: array + items: + $ref: '#/components/schemas/LocationInformation' + - allOf: + - $ref: '#/components/schemas/LocationInformation' + description: > + + The location information of the product (e.g. for hotels or + restaurants). We support geolocation filtering + + and sorting when creating search and recommendation results if + location information is given. + rating: + title: Rating + type: number + description: > + + The overall rating of the product in the range of [0, 5]. If you use + a different rating scale, please convert it + + to the range of [0, 5]. + example: 5 + html: + title: Html + type: string + description: > + + The HTML content of the product. Miso will search against this field + and apply semantic understanding in a way that is + + similar to the `description` field, but with HTML tags removed. + subtitle: + title: Subtitle + type: string + description: | + + The subtitle of the product (usually for contents). + headers: + title: Headers + type: array + items: + type: string + description: > + + The headers in the content. This usually corresponds to `

`, + `

`, `

` ... tags in HTML. This field need to be an array of + strings + paragraphs: + title: Paragraphs + type: array + items: + type: string + description: > + + The text paragraphs in the content. This usually corresponds to + `

` tags in HTML. This field need to be an array of strings + anchors: + title: Anchors + type: array + items: + type: string + description: > + + The anchor texts paragraphs in the content. This usually corresponds + to `` tags in HTML. This field need to be an array of strings + children: + title: Children + type: array + items: + $ref: '#/components/schemas/ChildrenObject' + description: > + + Children objects of the product, such as chapters of a book, or + sections of a podcast. + + Children are only useful for long-form contents, and are only used + for snippet extraction purpose. + enable_question_answering: + title: Enable Question Answering + type: boolean + description: > + + Whether to enable question answering capability against the `html` + field. + default: false + custom_attributes: + title: Custom Attributes + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: string + - type: array + items: + type: number + description: > + + Dictionary of custom attributes for the product. You can specify + attributes specific to your business + + in a `{"KEY":VALUE}` format, where `KEY` must be a string, and + `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + + + For example, a video streaming site using Miso may have the movie + *Jumanji* with the following custom attributes: + + + ``` + + { + "custom_attributes": { + "cast": [ + "Robin Williams", "Jonathan Hyde", ... + ], + "director": "Joe Johnston", + "genres": [ + "Adventure", "Fantasy", "Family" + ], + "filming_locations": [ + {"country": "USA", "state": "New Hampshire", "city": "Keene"}, + {"country": "Canada", "state": "British Columbia", "city": "Vancouver"} + ], + "popularity": 7.439, + "adult": false + } + } + + ``` + + + **The custom attribute types need to be consistent across every + record in the dataset**. + + For instance, in the example above, the **cast** attribute needs to + be a `string` or `an array of string` or `null` + + for every record in the dataset that specify **cast** attribute. + + + + Similarly, the popularity attribute needs to be a `number`, `an + array of numbers`, or `null` for every record in the + + dataset that specifies the popularity attribute. If you try to + insert a record with an incompatible data type, the + + insertion for that record will fail. + example: + cast: + - Robin Williams + - Jonathan Hyde + director: Joe Johnston + genres: + - Adventure + - Fantasy + - Family + popularity: 7.439 + adult: false + additionalProperties: false + ProductToProductsResponse: + title: ProductToProductsResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/ProductToProductsResponseBody' + ProductToProductsResponseBody: + title: ProductToProductsResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/Record' + description: Product recommendation results. + PromoPageView: + title: promo_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - promo_page_view + type: string + description: > + + Used when a user views a specific promotional or curated marketing + page about certain products or content. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + QAAutocompleteResponse: + title: QAAutocompleteResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/QAAutocompleteResponseBody' + description: Autocomplete Response + QAAutocompleteResponseBody: + title: QAAutocompleteResponseBody + required: + - completions + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + completions: + title: Completions + type: array + items: + $ref: '#/components/schemas/app__schemas__engine_api__response__Question' + description: Autocomplete Response + QAResponse: + title: QAResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/QAResponseBody' + QAResponseBody: + title: QAResponseBody + required: + - total + - spellcheck + - answers + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + total: + title: Total + type: integer + description: Total number of Question-Answer hits. + example: 1000 + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckResponse' + description: >- + Spellcheck results. You can use the information in this object to + prompt users with the correct spelling. + answers: + title: Answers + type: array + items: + $ref: '#/components/schemas/RecordWithAnswer' + description: The Question-Answer results. + QueryFilter: + title: QueryFilter + required: + - query + type: object + properties: + query: + title: Query + type: string + description: Query in Lucene syntax + key: + title: Key + type: string + description: User friendly label of the query result + QueryFilterRequireKey: + title: QueryFilterRequireKey + required: + - query + - key + type: object + properties: + query: + title: Query + type: string + description: Query in Lucene syntax + key: + title: Key + type: string + description: User friendly label of the query result + QuestionAnsweringRequest: + title: QuestionAnsweringRequest + required: + - q + - min_probability + type: object + properties: + version: + title: Version + enum: + - v1.2 + - v1.3 + description: > + + The model version to use. + + * **v1.2**: First stable version + + * **v1.3**: Improve keyword extraction that make answers more + precise + default: v1.2 + example: v1.2 + q: + title: Q + minLength: 1 + type: string + description: The question user has entered. + example: what is gradient descent + min_probability: + title: Min Probability + maximum: 1 + minimum: 0 + type: number + description: > + + Minimum acceptable probability (between 0.0 and 1.0). The answers + whose probability is lower than this number will be excluded + + from the response. + example: 0.7 + rows: + title: Rows + type: integer + description: Number of search results to return. + default: 1 + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. Each Q&A response, by default, return + two fields `answer` and `product_id`, where + + `answer` is an object with the information about the answer + paragraph while + + `product_id` identifies the *Product* from which the answer is + extracted. + + + For example, the following is a sample response from the API: + + ``` + + { + "product_id": "ABC-123", + "answer": + { + "html": "

Python is an interpreted programming language

", + "text": "Python is an interpreted programming language", + "css_selector": ":root > div:nth-child(1) > p:nth-child(2)", + "probability": 0.99 + } + } + + ``` + + + You can use `fl` parameter to retrieve additional product fields. + For example, the following request + + additionally retrieves the `title` field for each product along + + with the `product_id` and `answer`, which are always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and all the `custom_attributes` fields. + + + ``` + + {"fl": ["title", "custom_attributes.*"]} + + ``` + + + The following request retrieves all the available product fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array (which is the default) to + retrieve just the `product_id` and `answer` fields. + + ``` + + {"fl": []} + + ``` + default: [] + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckRequest' + description: Spellcheck configuration + default: + enable_auto_spelling_correction: true + enable_answer_html: + title: Enable Answer Html + type: boolean + description: >- + Whether to return HTML of the answer paragraph. If you don't need + the HTML content of the + answer paragraph, setting this parameter to `false` will reduce the response size and lower the + response latency. + default: false + enable_answer_block: + title: Enable Answer Block + type: boolean + description: > + + Whether to return *answer block*. + + In addition to answer paragraph, Miso can additionally return + *answer block*. + + Answer block is an ancestor HTML node of the answer paragraph that + contains the relevant context. + + The answer block is particularly useful for applications that not + only want to show + + the answer itself but also the **context** surrounding the answer. + + + Answer block is the smallest HTML element that contains the relevant + context. However, not all the content + + inside this node is relevant. You can use the returned + `relevant_children_slice` field + + to identify a portion of this node that is relevant to the answer. + default: false + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + boost_probability_threshold: + title: Boost Probability Threshold + type: number + description: > + + Minimum probability required for an answer to be boosted. If not + specified, the `min_probability` will be used. + QuestionAutocompleteRequest: + title: QuestionAutocompleteRequest + required: + - q + type: object + properties: + q: + title: Q + minLength: 1 + type: string + description: The query user has entered so far + example: what is g + rows: + title: Rows + type: integer + description: Number of autocomplete results to return. + default: 5 + description: Post question autocomplete request + QuestionRequest: + title: QuestionRequest + required: + - question + type: object + properties: + user_id: + title: User Id + type: string + description: >- + The user who made the query. For an anonymous visitor, use + `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: The anonymous visitor who made this query. + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + question: + title: Question + type: string + description: The question for which an answer is requested. + parent_question_id: + title: Parent Question Id + type: string + description: >- + The UUID of the parent question if the current question is a + follow-up to a previous question. + format: uuid + yearly_decay: + title: Yearly Decay + type: number + description: The yearly decay rate for the answer score. + default: 0.93 + source_fl: + title: Source Fl + type: array + items: + type: string + description: >+ + + A list of fields to be returned for the `sources`. Any fields in + uploaded product can be assigned, including fields in + `custom_attributes`. + + + If specificed field does not exist, that field will not be included + in the result. + + If you use different schema for `custom_attributes` across different + products, it is possible that not all returned sources has the some + fields. + + + For example, if you include `published_at` and `custom_attributes` + in `source_fl`: + + + ```json + + { + "question":"Explain Python GIL", + "source_fl":["published_at", "custom_attributes.rating"] + } + + ``` + + + The answer will contain `published_at` field for each source: + + + ```json + + { + "message": "success", + "data": { + "question": "Explain Python GIL", + "question_id": "57aeb083-b943-43b1-86ab-b6108788dd50", + "parent_question_id": null, + "answer_stage": "Generating summary", + "finished": true, + "answer": "# Explain Python GIL\n\n## Why do we need the GIL? [1]\n\nThe GIL is currently an essential part of the CPython...[omitted for simplicity]", + "sources": [ + { + "published_at": "2022-05-20T00:00:00+00:00", + "custom_attributes": { + "rating": 4.7 + }, + "product_id": "9781800207721", + "title": "Multiprocessing – When a Single CPU Core Is Not Enough", + "child_title": "Multiprocessing – When a Single CPU Core Is Not Enough", + "child_id": "16", + "snippet": "Remember the segmentation faults we saw in Chapter 11, ...[omitted]" + }, + { + "published_at": "2015-02-26T00:00:00+00:00", + "custom_attributes": { + "rating": 4.3 + }, + "product_id": "9780134034416", + "title": "5. Concurrency and Parallelism", + "child_title": "5. Concurrency and Parallelism", + "child_id": "12", + "snippet": "Click here to view code image\n...[omitted]" + }, + { + "published_at": "2020-04-30T00:00:00+00:00", + "custom_attributes": { + "rating": 3.5 + }, + "product_id": "9781492055013", + "title": "1. Understanding Performant Python", + "child_title": "1. Understanding Performant Python", + "child_id": "2", + "snippet": "Although it still locks Python into running ...[omitted]" + }, + { + "published_at": "2019-11-15T00:00:00+00:00", + "custom_attributes": { + "rating": 4.2 + }, + "product_id": "9780134854717", + "title": "7. Concurrency and Parallelism", + "child_title": "7. Concurrency and Parallelism", + "child_id": "16", + "snippet": "Although Python supports multiple threads of execution...[omitted]" + } + ], + "related_resources": [] + } + } + + ``` + + default: + - title + related_resource_fl: + title: Related Resource Fl + type: array + items: + type: string + description: >- + A list of fields to be returned for the `related_resources`. + Example: `['title', 'url']`. + default: + - title + cite_start: + title: Cite Start + type: string + description: 'The citation start marker. Example: `[` or `{`' + cite_end: + title: Cite End + type: string + description: 'The citation end marker. Example: `]` or `}`' + QuestionResponse: + title: QuestionResponse + required: + - data + type: object + properties: + data: + title: Data + allOf: + - $ref: '#/components/schemas/QuestionResponseData' + description: Question response data. + message: + title: Message + type: string + description: Human-readable message. + default: success + QuestionResponseData: + title: QuestionResponseData + required: + - question_id + type: object + properties: + question_id: + title: Question Id + type: string + description: The UUID for the submitted question. + format: uuid + Range: + title: Range + type: object + properties: + to: + title: To + anyOf: + - type: string + - type: number + description: End of the range (exclusive). + from: + title: From + anyOf: + - type: string + - type: number + description: Start of the range (inclusive). + key: + title: Key + type: string + description: User friendly label of the range + RangeRequireKey: + title: RangeRequireKey + required: + - key + type: object + properties: + to: + title: To + anyOf: + - type: string + - type: number + description: End of the range (exclusive). + from: + title: From + anyOf: + - type: string + - type: number + description: Start of the range (inclusive). + key: + title: Key + type: string + description: User friendly label of the range + Rate: + title: rate + required: + - type + type: object + properties: + type: + title: Type + enum: + - rate + type: string + description: | + + Used when a user gives a rating to a product or piece of content. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + rating: + title: Rating + type: number + description: > + + The rating the user gave in the range of [0, 5]. This field is only + required by the `rate` interaction. As a + + convention in the RecSys community, a rating >= 3.5 is considered + positive, a rating <= 2 is negative, + + and otherwise a rating is neutral. If you use any other rating + scale, please normalize it to a [0, 5] scale. + example: 5 + additionalProperties: false + Read: + title: read + required: + - type + type: object + properties: + type: + title: Type + enum: + - read + type: string + description: > + + Used to record when and for how long a user reads a piece of written + content. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + RecResponse: + title: RecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/BaseResponseBody' + Record: + title: Record + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: |2- + + The unique identifier for the product. + + example: 123ABC-S-Black + RecordWithAnswer: + title: RecordWithAnswer + required: + - product_id + - answer + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: >- + The unique identifier of the product whose content contains the + answer. + answer: + title: Answer + allOf: + - $ref: '#/components/schemas/Answer' + description: >- + The answer paragraph (i.e. a `

` node) whose text content can + answer users' question. + answer_block: + title: Answer Block + allOf: + - $ref: '#/components/schemas/AnswerBlock' + description: |2- + + In addition to the answer paragraph, we also return the **answer block**. + Answer block is the ancestor node of the answer paragraph that cover not only the answer, but also the relevant + context. This is particularly useful for applications that want to show + the answer itself but also the relevant context surrounding the answer. + + Answer block is the smallest HTML element that contains the relevant context. However, not all the content + inside this node is relevant. You can use the `relevant_children_slice` to identify a portion inside this + block that is relevant to the answer. + + RecordWithFound: + title: RecordWithFound + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: |2- + + The unique identifier for the product. + + example: 123ABC-S-Black + description: >- + Product record but support `_found=true / false` field. When + _found=false, + + the product_id will not be available. + Refund: + title: refund + required: + - type + type: object + properties: + type: + title: Type + enum: + - refund + type: string + description: | + + Used when a user requests a refund of products they bought. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + RemoveFromCart: + title: remove_from_cart + required: + - type + type: object + properties: + type: + title: Type + enum: + - remove_from_cart + type: string + description: | + + Used when a user removes a product from their shopping cart. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + RemoveFromCollection: + title: remove_from_collection + required: + - type + type: object + properties: + type: + title: Type + enum: + - remove_from_collection + type: string + description: | + + Used when a user removes a product from their personal collection. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Search: + title: search + required: + - type + type: object + properties: + type: + title: Type + enum: + - search + type: string + description: > + + Used to record a search event with the keywords and filters the user + used. What a user searches for + + is a very powerful signal about their interests and what they will + eventually buy or consume, so it is important + + to capture this information with high fidelity. + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + search: + title: Search + allOf: + - $ref: '#/components/schemas/SearchInformation' + description: > + + The search keywords and filters the user uses. This is only required + by `search` interaction. + additionalProperties: false + SearchInformation: + title: SearchInformation + type: object + properties: + keywords: + title: Keywords + type: string + description: > + + The search keywords user use. Search keywords are strong signals to + users' interests. + default: '' + filters: + title: Filters + type: object + additionalProperties: + type: array + items: + type: string + description: > + + Dictionary of filters users apply to the search results in the + following format: + `{"FIELD": ["SELECTION_1", "SELECTION_2"]}`. + SearchRequest: + title: SearchRequest + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of search results to return. + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + q: + title: Q + minLength: 1 + type: string + description: > + + The search query the user has entered. Miso will perform full-text + search and find any Products + + that contain every word in this query. You can also set `q="*"` to + match all Products, which is commonly used along + + with Product filtering query `fq` to implement Category Pages. + + + *(to make a search request, You need to specify either `q` or + `advanced_q`)* + advanced_q: + title: Advanced Q + minLength: 1 + type: string + description: > + + Like Google's Advanced Search, the `advanced_q` parameter let you + define query beyond simple full-text + + search. For one, you can use double-quotes to indicate a phrase + search. + + + For example, the following query will + + only match Products that contain the *phrase* "Toy Story 4", and + will not match Products like "4 Toy Story" + + (because the word order is not the same as the given query). + + ``` + + {"advanced_q": "full_text:\"Toy Story 4\""} + + ``` + + + If you don't want phrase search, you can enclose the search terms + with parenthesis to indicate regular full-text query. + + For example: + + ``` + + {"advanced_q": "full_text:(Toy Story 4)"} + + ``` + + + You can also use AND/OR boolean operators to combine multiple + full-text queries. For example, the following query will match + + Products with phrases "Toy Story 4" and Products with phrases "Toy + Story 3", and will not match "Toy Story 2" or "Toy Story 1": + + ``` + + {"advanced_q": + + "full_text:\"Toy Story 4\" OR full_text:\"Toy Story 3\""} + + ``` + + + Finally, you can use AND/OR boolean operators to combine full-text + search with metadata filtering. + + For example, the following example will find Products with phrase + "Toy Story" OR Products which have Tom Hanks as an actor. + + ``` + + {"advanced_q": + + "full_text:\"Toy Story\" OR + custom_attributes.actors:\"Tom Hanks\""} + ``` + + + *(to make a search request, You need to specify either `q` or + `advanced_q`)* + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + enable_boosting_campaigns: + title: Enable Boosting Campaigns + type: boolean + description: > + + When set to true, enable user defined boosting campaigns. + + + By default boosting campaigns are enabled. But you can explicitly + set this to false to disable + + boosting campaigns. + default: true + custom_context: + title: Custom Context + type: object + description: > + + Dictionary of custom context variables for the current browsing + session. You can specify context variables + + specific to your websites or apps in a `{"KEY":VALUE}` format, where + `KEY` must be a string, and `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + Miso will take these variables into account when generating + recommendations. + example: + session_variable_1: + - value_1 + - value_2 + language: + title: Language + type: string + description: > + + Two-letter (639-1) language code of the search query. This parameter + is useful when you have a multilingual + product catalog that contains product metadata in different languages. + If given, the search results will prioritize the products that have that specific language and match the search + query. Example query: + ``` + + {"language": "fr"} + + ``` + + + If not given, Miso will search against all the languages in the + catalog. + like: + title: Like + type: string + description: >- + The text snippet that we want to find products that are similar to + it + category: + title: Category + type: array + items: + type: string + description: > + + `category` parameter limits the search results to a particular + category or sub-category. + + This is particularly suitable for implementing Category Pages where + + you want to show personalized ranking of Products under a specific + category. Other filters, such as `q`, + + `fq`, `boost_fq` will be applied on top of the category filter. + + + A category is represented by a list of strings that correspond to + its category hierarchy. + + For example, the following query returns Products under `Snacks` + category: + + ``` + + { + "q": "*", + "category": ["Snacks"] + } + + ``` + + And the following request returns Products under `Snacks -> Chips` + subcategory: + + ``` + + { + "q": "*", + "category": ["Snacks", "Chips"] + } + + ``` + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckRequest' + description: Spellcheck configuration + default: + enable_auto_spelling_correction: true + start: + title: Start + type: integer + description: > + + Specifies an offset from which Miso will begin returning results. + + + The default value is `0`. Setting the start parameter to some other + number, such as 3, causes Miso to skip over the + + preceding products and start from the product identified by the + offset. + default: 0 + order_by: + title: Order By + type: array + items: + $ref: '#/components/schemas/OrderByDefinition' + description: > + + A list of fields that Miso should use to sort the result, instead of + Miso's default ranking order. + + + For example, the following query returns all the Products (because + `q=*`), ranked by the `_personalization_score` + + first, and then by the values in the + `custom_attributes.promote_score` field in the Product catalog, then + the + + distance between the product and New York city. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.05" + }, + "order": "desc" + }, + { + "field": "custom_attributes.promote_score", + "order": "desc" + }, + { + "field": "_geo_distance", + "geo": { + "lat": 40.711967, + "lon": -74.006076, + } + "order": "asc" + } + ] + } + + ``` + default: [] + facets: + title: Facets + type: array + items: + anyOf: + - $ref: '#/components/schemas/FacetDefinition' + - type: string + description: > + + Specifies a list of fields to create facet search against. You can + specify `facets` in a string array. + + For example, the following query return the facet counts for + `categories`, `tags`, and `custom_attributes.director`: + + ``` + + { + "facets": [ + "categories", + "tags", + "custom_attributes.director" + ] + } + + ``` + + + The response will be like: + + ``` + + { + "facet_counts": { + "facet_fields": { + "categories": [ + [ + "Drama", 20 + ], + [ + "Action", 10 + ], ... + ], + "tags": [ + [ + "based on novel or book", 5 + ], + [ + "android", 4 + ], ... + ], + "custom_attributes.director": [ + [ + "Ridley Scott", 26 + ], + [ + "Andrew Abbott", 1 + ], ... + } + } + ``` + + + You can also specify `facets` with an object array to configure each + facet individually. + + For example, the following query will return 20 most common facet + values for `tags` + + and `custom_attributes.director` fields, + + and only the directors whose names start with `Ridley` will be + included in the director facet results. + + ``` + + { + "facets": [ + { + "field": "tags", + "size": 20 + }, + { + "field": "custom_attributes.director", + "size": 20, + "include": "Ridley.*" + } + ] + } + + ``` + default: [] + facet_filters: + title: Facet Filters + type: object + additionalProperties: + $ref: '#/components/schemas/Filter' + description: >+ + + Specifies filters to the search results based on users' selections + in a faceted search UI. + + + For example, assume you have two facets in your faceted search UI: + `genres` and `custom_attributes.director`. + + When the user selects two options in the + `custom_attributes.director` facet, you should send the following + query to + + filter the search results for those two options (i.e. `Ridley Scott` + or `Denis Villeneuve`). + + + ``` + + { + "facets": [ + { + "field": "genres", + "size": 5 + }, + { + "field": "custom_attributes.director", + "size": 20 + } + ], + "facet_filters": { + "custom_attributes.director": { + "terms": [ + "Ridley Scott", + "Denis Villeneuve" + ] + } + }, + } + + ``` + + + While you can use `fq` parameter to achieve the same filtering + capability, + + you should use `facet_filters` to get the correct facet counts. + + + In a typical faceted search UI, the facet counts reflect the search + result after applying + + filters from **all but the current facets**. For example, in the + query below, + + the *directors* facet counts + should reflect the search result after applying the filter from the *genres* facet, i.e. `genres:Sci-Fi`. + Similarly, *genres* facet counts should reflect the search result after applying the filter from the *directors* facet. + + `facet_filters` will make the resulting `facet_counts` follow this + *all but except itself* convention, which is rather + tricky to implement with `fq`. + ``` + "facets": [ + { + "field": "genres", + "size": 5 + }, + { + "field": "custom_attributes.director", + "size": 20 + } + ], + "facet_filters": { + "custom_attributes.director": { + "terms": [ + "Ridley Scott", + "Denis Villeneuve" + ] + } + }, + } + + ``` + + default: {} + anchoring_settings: + title: Anchoring Settings + type: array + items: + $ref: '#/components/schemas/AnchoringEntry' + description: > + + Promote a product to a position relative to the highest-ranked + anchor product. + + + A common use-case is promoting a private-label good by anchoring it + to a name-brand counterpart. When the name-brand good (the anchor) + appears in a search result, the private-label good also appears in + the result (at a specified distance from the anchor product). + + + The `anchoring_settings` object has the following fields: + + * **product_id** - The `product_id` of the product you want to + promote. + + * **anchor_ids** - The array of `product_ids` that act as the + anchors. + + * **relative_position** *(optional)* - The position that the + promoted product will be returned in the search results, relative to + the highest-ranked anchor product. For example, setting this + parameter to `1` will place the promoted product directly after the + anchor product. The default value is `-1`, which will place the + promoted product directly before the anchor product. + + * **start_time** *(optional)* - An ISO-8601 timestamp indicating + when to start the product anchoring. Ex: `2022-01-29T00:00:00Z` + + * **end_time** *(optional)* - An ISO-8601 timestamp indicating when + to end the product anchoring. Ex: `2022-05-31T23:59:59Z` + + + For example, if a user searches for "cookies", the API request might + look like this: + + + ``` + + POST v1/search/search + + { + "q":"cookies", + "anchoring_settings": [ + { + "product_id": "private_label_cookies", + "anchor_ids": [ + "name_brand_cookies_1", + "name_brand_cookies_2" + ], + "relative_position": -1, + "start_time": "2022-01-01T00:00:00Z", + "end_time": "2022-12-31T23:59:59Z" + } + } + ] + } + + ``` + default: [] + enable_partial_match: + title: Enable Partial Match + type: boolean + description: > + + Enable *partial match* to return products that match only *some* of + the keywords in a user's search query. By default, + + Miso's Search API only returns products that contain *all* the + keywords in the search query (i.e. an AND operator over + + keywords). This strategy usually leads to highly relevant results. + However, when we don't have enough search results to + + return to the users, enabling partial match allows the Search API to + relax the criteria and return products that match + + only some of the keywords. + + + This strategy is particularly useful to prevent users from seeing an + empty search result page and abandoning their + + search. + + + For example, let's consider the query request below: + + ``` + + { + "query": "Toy story 5", + "enable_partial_match": true + } + + ``` + + Since there is no movie called "Toy story 5", we have zero products + to return by default. However, because we set `enable_partial_match` + to `true`, we will return other products that partially match the + query: + + ``` + + { + + "data": { + "products": [ + { + "title": "Toy Story", + "_missing_keywords": ["5"] + }, + { + "title": "Toy story 2", + "_missing_keywords": ["5"] + }, + ... + ], + "total": 4 + } + + } + + ``` + + As you can see from the result above, when we don't have the exact + product that the user is looking for, enabling partial match is a + helpful strategy to let users know what alternatives are available, + and prevent them from seeing an empty search result page. + default: false + partial_match_mode: + title: Partial Match Mode + enum: + - blended + - separated + description: > + + Determine which partial match mode to enable: + * **blended** (default): When `partial_match_mode` is `blended`, keyword-matched items and semantically-matched items will + be returned in the same, rank-sorted array. + * **separated**: When `partial_match_mode` is `separated`, keyword-matched items will be returned in the `products` array + and partially-matched or semantically-matched items will be returned + in the `partially_matched_products` array. + default: blended + enable_partial_match_threshold: + title: Enable Partial Match Threshold + type: integer + description: > + + If `partial_match_mode=separated`, you need to provide a value for + `enable_partial_match_threshold`. + + This parameter, which accepts an integer (*n*), creates a condition + for Miso’s Search Engine to only provide partially + + matched results if there are *n* or fewer exact keyword matches. For + example, if we set `enable_partial_match_threshold=3`, + + partially matched results will *only* be returned when there are + three or fewer exact keyword matches. + enable_semantic_search: + title: Enable Semantic Search + type: boolean + description: > + + Enable *semantic search* to return products that are semantically + relevant to the search query. + + Semantic search is a powerful tool that further improves the partial + match results. It finds products that might not contain + + any of the search keywords, but are highly relevant to users' search + intent. + + + For example, consider the query: `rubbing alcohol`, which is a + household cleaning product. When `enable_semantic_search=true`, + + even if we do not have any products that match `rubbing alcohol`, + Miso is still able to return results like the + + following: + + ``` + + { + + "data": { + "products": [], + "total": 0, + "partially_matched_products": [ + { + "title": "Clorox Disinfecting Wipes Multi-Surface Cleaning", + "_missing_keywords": ["rubbing", "alcohol"] + }, + { + "title": "Purell Advanced Hand Sanitizer Refreshing Gel", + "_missing_keywords": ["rubbing", "alcohol"] + }, + ... + ] + } + + } + + ``` + + Note that, these two products from Clorox or Purell do not contain + any of the search keywords, + + Miso's semantic search functionality, however, is still able to + identify them as good matches based on their semantic + + relevancy to the query `rubbing alcohol`. + + + Similarly, consider a single word search query: `aspirin`. Normally, + a single-word query will lead to an empty search + + page if we don't have products containing that word. However, when + `enable_semantic_search=true`, + + even if we do not directly have `aspirin` in the product catalog, + Miso is still able to return results that are highly + + relevant to users' search intent, such as: + + ``` + + { + + "data": { + "products": [], + "total": 0, + "partially_matched_products": [ + { + "title": "Advil Pain Reliever and Fever Reducer", + "_missing_keywords": ["aspirin"] + }, + { + "title": "Tylenol Extra Strength Caplets", + "_missing_keywords": ["aspirin"] + }, + ... + ] + } + + } + + ``` + default: false + semantic_search_threshold: + title: Semantic Search Threshold + type: number + description: > + + Determine the threshold for semantic search. Only the products with + a semantic similarity score higher than the + + threshold will be returned. Setting this too low (e.g. < 0.3) will + result in less relevant results being returned. + default: 0.5 + enable_matched_fields: + title: Enable Matched Fields + type: boolean + description: >+ + + Determine whether to return `_matched_fields` in the search response + (default: false). + + If `enable_matched_fields=true`, + + each returned product will have an `_matched_fields` array that + shows which parts of the product catalog match + the search query. + + For example, the following request will return `_matched_fields`: + ``` + + { + "q": "toy story", + "enable_matched_fields": true + } + + ``` + + The response will be like: + + ``` + + { + "data": { + "products": [ + { + "title": "Toy Story", + "_matched_fields": ["title", "metadata"] + }, + ... + ] + } + } + + ``` + + Currently, `_matched_fields` only contain three kinds of fields: + * `title` + * `description` + * `metadata`, including all the fields beyond title or description in the product catalog. + + default: false + query_product_existence: + title: Query Product Existence + allOf: + - $ref: '#/components/schemas/CheckProductExistence' + description: >- + Additionally check if certain products will be in the search result + at all (regardless of `start` and `rows` parameters) + personalization_weight: + title: Personalization Weight + maximum: 5 + minimum: 0 + type: integer + description: Determines how much personalization will affect the search ranking. + default: 5 + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + diversification: + title: Diversification + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + additionalProperties: false + SearchResponse: + title: SearchResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/SearchResponseBody' + SearchResponseBody: + title: SearchResponseBody + required: + - products + - total + - start + - spellcheck + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/PartialMatchedRecord' + description: The search results. + total: + title: Total + type: integer + description: Total number of search hits. + example: 1000 + start: + title: Start + type: integer + description: Starting offset of the search results. + example: 0 + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckResponse' + description: >- + Spellcheck results. You can use the information in this object to + prompt users with the correct spelling. + product_existence: + title: Product Existence + type: object + additionalProperties: + type: boolean + description: Product existence query result + partially_matched_products: + title: Partially Matched Products + type: array + items: + $ref: '#/components/schemas/PartialMatchedRecord' + description: The search results that only partially match the search query. + facet_counts: + title: Facet Counts + allOf: + - $ref: '#/components/schemas/FacetCounts' + description: Facet counts + default: {} + custom_assets: + title: Custom Assets + type: array + items: + type: object + description: Custom JSON assets uploaded in Dojo. + default: [] + SendExperimentResponse: + title: SendExperimentResponse + required: + - took + - in_experiment + - variant + type: object + properties: + took: + title: Took + type: integer + description: >- + The amount of time (in milliseconds) Miso took to answer this + request. + example: 50 + in_experiment: + title: In Experiment + type: boolean + description: To show whether the experiment is active or not. + variant: + $ref: '#/components/schemas/VariantObject' + Share: + title: share + required: + - type + type: object + properties: + type: + title: Type + enum: + - share + type: string + description: | + + Used when a user shares a product or piece of content. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + SpellCheckRequest: + title: SpellCheckRequest + type: object + properties: + enable_auto_spelling_correction: + title: Enable Auto Spelling Correction + type: boolean + description: > + + This parameter controls whether to automatically correct a misspell + search query. + + If set to `true`, when Miso detects spelling errors, the search + results will be based on the + **corrected** spelling suggested by Miso. + + You call tell if Miso made any correction to the search query by + checking the + + `spellcheck.auto_spelling_correction` field in the + + API response. When this field is `true`, the search results are + based on the suggested spelling + + as opposed to the users' original query. + + + You can opt-out the spelling correction by setting this parameter to + `false`. In such cases, + + Miso will still detect spelling errors, + + but the search results will be always based on users' original + spelling. + default: true + SpellCheckResponse: + title: SpellCheckResponse + required: + - spelling_errors + - auto_spelling_correction + - original_query + - original_query_with_markups + - corrected_query + - corrected_query_with_markups + type: object + properties: + spelling_errors: + title: Spelling Errors + type: boolean + description: Whether Miso detects any spelling errors. + auto_spelling_correction: + title: Auto Spelling Correction + type: boolean + description: >- + Whether Miso has automatically corrected the misspelled search + query. When this field is `true`, the search result is based on the + corrected spelling in the `corrected_query` field instead of users' + original search query. + original_query: + title: Original Query + type: string + description: Original query string + example: what is pythn + original_query_with_markups: + title: Original Query With Markups + type: string + description: >- + Original query with the spelling errors (if any) surrounded by the + tags + example: what is pythn + corrected_query: + title: Corrected Query + type: string + description: >- + The corrected spelling suggested by Miso. If no spelling error is + detected, this will be the same as `original_query` + example: what is python + corrected_query_with_markups: + title: Corrected Query With Markups + type: string + description: >- + The corrected spelling suggested by Miso where the revised tokens + are surrounded by the tags. + example: what is python + Subscribe: + title: subscribe + required: + - type + type: object + properties: + type: + title: Type + enum: + - subscribe + type: string + description: > + + Used when a user subscribes a product, for example to receive alerts + when the product comes back in stock or if the price drops. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + TaskId: + title: TaskId + required: + - task_id + type: object + properties: + task_id: + title: Task Id + type: string + TieBreakDefinition: + title: TieBreakDefinition + type: object + properties: + type: + title: Type + enum: + - relative_difference + default: relative_difference + threshold: + title: Threshold + type: number + default: 0 + TitleCompletion: + title: TitleCompletion + required: + - text + - text_with_markups + - text_with_inverted_markups + - product + type: object + properties: + text: + title: Text + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_markups: + title: Text With Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_inverted_markups: + title: Text With Inverted Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + product: + title: Product + allOf: + - $ref: '#/components/schemas/Record' + example: + product_id: 123ABC-S-Black + description: title completion additionally has the `product` the title belongs to. + TrendRecResponse: + title: TrendRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/TrendResponseBody' + TrendResponseBody: + title: TrendResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/Record' + description: Trending product results. + UserBulkDeleteIn: + title: UserBulkDeleteIn + required: + - data + type: object + properties: + data: + $ref: '#/components/schemas/UserIdList' + UserBulkIn: + title: UserBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/UserRecord' + UserIdList: + title: UserIdList + required: + - user_ids + type: object + properties: + user_ids: + title: User Ids + type: array + items: + type: string + UserReadOut: + title: UserReadOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + data: + $ref: '#/components/schemas/UserRecord' + UserRecord: + title: UserRecord + required: + - user_id + type: object + properties: + user_id: + title: User Id + maxLength: 512 + minLength: 1 + type: string + description: > + + Unique identifier for a user who has signed in. `user_id` can be in + any format (e.g. users' email, internal user + + UUID or serial ID). The only restriction is that the first character + must not be an underline `_`. Miso will use + + this id to cross-reference your User records with your Interaction + records. + example: user_1234 + created_at: + title: Created At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The date the user’s account was created as an ISO-8601 date or + datetime string. + updated_at: + title: Updated At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The date the user’s account was updated as an ISO-8601 date or + datetime string. + name: + title: Name + type: string + description: The user's full name. + example: John Doe + profile_image: + title: Profile Image + maxLength: 65536 + minLength: 1 + type: string + description: URL to the profile image of the user. + format: uri + age: + title: Age + type: integer + description: Age of the user. We will internally convert it to year of birth. + example: 33 + gender: + title: Gender + type: string + description: The user's gender. + example: M + city: + title: City + type: string + description: City or zipcode the user is based in. + example: Mountain View + state: + title: State + type: string + description: State the user is based in. + example: California + country: + title: Country + type: string + description: Country the user is based in. + example: US + group_id: + title: Group Id + type: string + description: > + + Group or Account ID from your CRM. This is useful in B2B scenarios. + For example, you can use `group_id` to + + associate a user with their company or account. We will use this + information to infer the user's interests and + + fine-tune their personalization and search results. For example, + users from the same group might have similar + + interests on the site, and we can improve their user experience + accordingly + example: Northwind Corp + description: + title: Description + type: string + description: > + + Text description of the user. This can be the user's own bio or the + internal notes about the user. If available, + + Miso will analyze this description to better profile a user. + example: Engineer from Northwind Corp + custom_attributes: + title: Custom Attributes + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + description: > + + Dictionary of custom attributes about the user. As with the [Product + API](#operation/content_write_api_v1_products_post + + ), you can specify attributes specific to your business in a `{"KEY" + : VALUE}` format, where `KEY` must be a string, and + `VALUE` can be: + * a `string` or `an array of strings` + + * a `number` or `an array of numbers` + + * an `array of objects` + + * a `bool` + + * `null` + + + * Example: + + ``` + + { + "custom_attributes": { + "acquisition_channel": "Facebook Campaign 2020", + "declared_interests": ["Drama", "Romance"] + } + } + + ``` + + These custom attributes types must be consistent across all User + records in your data set. + + Records with inconsistent types will fail to be inserted. + example: + acquisition_channel: Facebook Campaign 2020 + declared_interests: + - Drama + - Romance + additionalProperties: false + UserToAttributes: + title: UserToAttributes + required: + - field + type: object + properties: + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + field: + title: Field + type: string + description: > + + + The attribute you want to make recommendations for. For example, the + following + + query will recommend values from the `brand` field that Miso thinks + the user will be interested in: + + + ``` + + {"field": "brand"} + + ``` + + + This API also works for custom attributes you define. For example, + + if you provide a `designer` custom attribute, then, you can make + `designer` recommendations with the following query. + + ``` + + {"field": "custom_attributes.designer"} + + ``` + boost_attributes: + title: Boost Attributes + type: array + items: + type: string + description: |+ + + + The attributes to boost to the top of the recommendations + + default: [] + exclude_attributes: + title: Exclude Attributes + type: array + items: + type: string + description: |+ + + + The attributes to remove from the recommendations + + default: [] + rows: + title: Rows + type: integer + description: Number of product recommendations to return + default: 5 + products_per_attribute: + title: Products Per Attribute + type: integer + description: > + + Number of personalized product recommendations to make for **each** + recommended attribute. For example, the following + + query will return 5 products for each *brand* we recommend: + + ``` + + { + "field": "brand", + "products_per_attribute": 2 + } + + ``` + + + Note that a large number of `products_per_attribute` will increase + latency slightly because we need to + + perform more computation for each of the recommended attributes. If + you only need attribute + + recommendations, you can set + + `products_per_attribute=0` to reduce latency. + default: 2 + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + additionalProperties: false + description: >- + User to attributes recommendations. Given a user, recommend + + product attributes the user will be interested in as well as products in + those attributes + UserToCategories: + title: UserToCategories + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of recommended categories to return + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + products_per_category: + title: Products Per Category + type: integer + description: >- + + + Number of products to return for **each** category. For example, the + following + + query will return 5 products for each category we recommend: + + ``` + + {"products": 5} + + ``` + + Note that, a large number of `products_per_category` (say >= 20) + will increase query latency (up to around 200ms) + + because we need to perform more computation for each of the + recommended categories. If you + + only need category recommendations, you should set + `products_per_category` to 0 to reduce latency. + default: 5 + root_category: + title: Root Category + type: array + items: + type: string + description: >- + + If `root_category` is specified, we will only recommend categories + that are direct children of each of the root + + category. For example, the following query will recommend the + products of category that is under `["Clothes"]` category: + + ``` + + {"root_category": ["Clothes"]} + + ``` + + For another example, the following query will recommend the products + of category that is under `["Clothes", "Dresses"]` category + + ``` + + {"root_category": ["Clothes", "Dresses"]} + + ``` + + If `root_category` is not specified, we will recommend the *top + level* categories. + default: [] + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + additionalProperties: false + description: Attributes for recommendation boosting + UserToItemsRequest: + title: UserToItemsRequest + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of product recommendations to return + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + diversification: + title: Diversification + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + pagination_id: + title: Pagination Id + maxLength: 512 + type: string + description: > + + A unique identifier to enable pagination in Recommendation APIs. By + default, Recommendation APIs do not support + + pagination because the results from Miso, by its natural, will + change in real-time with new user interactions. + + `pagination_id` allows you to implement pagination more easily by + memorize what products we have + + returned to the current user with the same `pagination_id`. + + + To enable pagination, you generate a `pagination_id` and set it in + the first and subsequent requests in the same browsing session + + where you want to enable pagination. With `pagination_id` set, you + can access recommendations + + in different pages using the combination of `start` and `rows` + parameters, and Miso will ensure that no duplicated + + recommendation will be returned in different pages. + + + For example, assuming you are implementing an infinite scroll with + Miso Recommendation APIs. Before you make the first request, + + you generate a `pagination_id` using the `current datetime` or + `uuid` like the following: + + ```javascript + + // current datetime + + var my_pagination_id = Date.now().toString() + + // OR uuid + + const uuidv4 = require("uuid/v4") + + var my_pagination_id = uuidv4() + + ``` + + You can then request the first page of results with + `my_pagination_id` like the following: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 0, + "rows": 10 + } + + ``` + + Then, you can request the next page of results with the same + `my_pagination_id`, and Miso will ensure + + that no duplicated result is returned: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 10, + "rows": 10 + } + + ``` + + + Note that, a `pagination_id` will timeout if there is no further + request associated with it for 30 minutes. + + Also, `pagination_id` is scoped by individual users: i.e. different + users' results will not be affected + + even if they use the same `pagination_id`. + start: + title: Start + type: integer + description: > + + The start of the page you want to access. Combine this with `rows` + to implement pagination. You can only set it when `pagination_id` is + given. + default: 0 + additionalProperties: false + description: Attributes for recommendation boosting + ValidationError: + title: ValidationError + required: + - loc + - msg + - type + type: object + properties: + loc: + title: Location + type: array + items: + type: string + msg: + title: Message + type: string + type: + title: Error Type + type: string + VariantObject: + title: VariantObject + required: + - id + - name + - slug + - status + type: object + properties: + id: + title: Id + type: string + description: The UUID of this variant. + example: 59769b89-5f1f-46d5-a4fa-a583ebd2f7fd + name: + title: Name + type: string + description: The name of this variant. + example: Treatment_Group + slug: + title: Slug + type: string + description: The slug name of this variant. + example: Treatment_Group + configuration: + title: Configuration + anyOf: + - type: object + - type: array + items: {} + - type: string + description: The configuration of this variant. + example: + model: A + status: + title: Status + enum: + - Draft + - Scheduled + - Active + - Completed + - Archived + type: string + description: The current status for this variant. + example: Active + ViewableImpression: + title: viewable_impression + required: + - type + type: object + properties: + type: + title: Type + enum: + - viewable_impression + type: string + description: > + + When a product or content asset is presented to the user, it is not + guarantee that the user will see it. + + + An viewable impression is an impression that is "viewable" by the + user. + + Usually, content asset is considered viewable if more than 50% of + its area is visible on screen. + + + You can also use different definition for what is considered + viewable. + + Miso will automatically find the best recommendation as long as the + difference between + + viewable and non-viewable impression is consistant. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Watch: + title: watch + required: + - type + type: object + properties: + type: + title: Type + enum: + - watch + type: string + description: > + + Used to record when and for how long a user watches content that is + of a video format. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + WebBasedContext: + title: WebBasedContext + type: object + properties: + campaign: + title: Campaign + allOf: + - $ref: '#/components/schemas/Campaign' + description: > + + The campaign that resulted in the interaction. Campaign dictionary + contains standard UTM parameters: `name`, + + `source`, `medium`, `term`, `content`. We use campaign information + to infer users' interests and fine-tune the + + personalization and search results based on the current user's + campaign information. + truncated_ip: + title: Truncated Ip + type: string + description: > + + User's truncated IP address. We use IP address to determine the + country of the users. + format: ipv4 + example: 1.1.1.0 + locale: + title: Locale + type: string + description: Locale string of the current session, for example en-US. + example: en-US + region: + title: Region + type: string + description: > + + The region/location of the site the user is visiting. This is for + sites that serve different regions or + + markets. You can define your own region keywords, for example, `US + East`, `Europe`, `LATM`, etc. + example: US East + page: + title: Page + allOf: + - $ref: '#/components/schemas/Page' + description: >- + The current page in the browser. Page dictionary containing + referrer, title and url. we will use page view + as a pseudo interaction to infer users' interest. + user_agent: + title: User Agent + type: string + description: > + + User agent of the device making the request. We use this to + determine if a user is browsing the site on + + mobile or desktop, and tailor the recommendations and search results + accordingly. + + + Example: + + ``` + + {"user_agent": + "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"} + ``` + example: >- + Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 + Firefox/47.0 + custom_context: + title: Custom Context + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + description: > + + Dictionary of custom context variables for the current browsing + session. You can specify context variables + + specific to your websites or apps in a `{"KEY":VALUE}` format, where + `KEY` must be a string, and `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + Miso will take these variables into account when generating + recommendations. + example: + session_variable_1: + - value_1 + - value_2 + YMALRequest: + title: YMALRequest + type: object + properties: + product_id: + title: Product Id + minLength: 1 + type: string + description: > + + The `product_id` of the *anchor* product. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor product. + product_ids: + title: Product Ids + minLength: 1 + type: array + items: + type: string + minLength: 1 + description: > + + The `product_ids` of a **list** of *anchor* products. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like these anchor products. For example, + + you can use the products in a user's shopping cart as the anchor + products to make purchase recommendations + + for this user. + product_group_id: + title: Product Group Id + minLength: 1 + type: string + description: > + + The `product_group_id` of the *anchor* product group. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor *product group*. + + + You should use `product_group_id` on a *product + + group* page, before users select a specific product variant. For + example, you should use `product_group_id` + + on the product group page of a T-shirt, and use `product_id`, once + user choose any specific size or color + + variants of the T-shirt. + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + description: > + + The `product_group_ids` of the *anchor* product groups. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor *product groups*. + + + You should use `product_group_ids` in pages you want to recommend + products related to multiple product groups. + buy_together: + title: Buy Together + type: boolean + description: >+ + + Whether to focus on the Products that are frequently *bought + together*. `buy_together` parameter is by default `false`, + + which make the *Product To Products API* focus on Products that are + related to the anchor products, e.g. the products + + with similar contents or frequently attract the interests of the + same group of users. + + + When `buy_together=true`, the ProductToProducts API will focus on + the type of Products that are more frequently bought + + together along with the anchor product(s) in the same transactions + or session. + + default: false + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of product recommendations to return + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + diversification: + title: Diversification + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + pagination_id: + title: Pagination Id + maxLength: 512 + type: string + description: > + + A unique identifier to enable pagination in Recommendation APIs. By + default, Recommendation APIs do not support + + pagination because the results from Miso, by its natural, will + change in real-time with new user interactions. + + `pagination_id` allows you to implement pagination more easily by + memorize what products we have + + returned to the current user with the same `pagination_id`. + + + To enable pagination, you generate a `pagination_id` and set it in + the first and subsequent requests in the same browsing session + + where you want to enable pagination. With `pagination_id` set, you + can access recommendations + + in different pages using the combination of `start` and `rows` + parameters, and Miso will ensure that no duplicated + + recommendation will be returned in different pages. + + + For example, assuming you are implementing an infinite scroll with + Miso Recommendation APIs. Before you make the first request, + + you generate a `pagination_id` using the `current datetime` or + `uuid` like the following: + + ```javascript + + // current datetime + + var my_pagination_id = Date.now().toString() + + // OR uuid + + const uuidv4 = require("uuid/v4") + + var my_pagination_id = uuidv4() + + ``` + + You can then request the first page of results with + `my_pagination_id` like the following: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 0, + "rows": 10 + } + + ``` + + Then, you can request the next page of results with the same + `my_pagination_id`, and Miso will ensure + + that no duplicated result is returned: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 10, + "rows": 10 + } + + ``` + + + Note that, a `pagination_id` will timeout if there is no further + request associated with it for 30 minutes. + + Also, `pagination_id` is scoped by individual users: i.e. different + users' results will not be affected + + even if they use the same `pagination_id`. + start: + title: Start + type: integer + description: > + + The start of the page you want to access. Combine this with `rows` + to implement pagination. You can only set it when `pagination_id` is + given. + default: 0 + additionalProperties: false + description: Attributes for recommendation boosting + app__schemas__engine_api__request__PreviewBoosting: + title: PreviewBoosting + required: + - query_option + - boost_match_type + - boost + - position + type: object + properties: + query: + title: Query + type: string + description: The boosting rule query. + queries: + title: Queries + type: array + items: + type: string + description: Multiple query of the boosting rule. + query_option: + title: Query Option + enum: + - contains + - not_contain + - is + - is_not + type: string + description: >- + The options of the query. Please fill this field with contains, + not_contain, is, and is_not value. + filter_query: + title: Filter Query + type: array + items: + $ref: '#/components/schemas/FilterQueryItem' + description: The filter queries of the boosting rule. + boost_match_type: + title: Boost Match Type + enum: + - any + - all + type: string + description: Type of the query. Please fill this field with any or all. + boost: + title: Boost + type: array + items: + $ref: '#/components/schemas/BoostItem' + description: The items of the boosting rule. + position: + title: Position + type: array + items: + type: integer + description: The position of the boosting rule should occur. + json_asset: + title: Json Asset + type: string + description: The boosting json asset. + example: + CO: + - product-name: name + product-image-url: url + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: The comma-separated boosting tags. + example: + - tag-1 + - tag-2 + description: Properties to receive on Boosting creation + app__schemas__engine_api__request__Question: + title: Question + required: + - question + type: object + properties: + question: + title: Question + minLength: 1 + type: string + description: The text of question. + weight: + title: Weight + type: number + description: The weight of question. + default: 1 + description: Question object + app__schemas__engine_api__response__Question: + title: Question + required: + - question + type: object + properties: + question: + title: Question + minLength: 1 + type: string + weight: + title: Weight + type: number + default: 1 + description: 'Question object ' + app__schemas__rec_boosting__PreviewBoosting: + title: PreviewBoosting + required: + - api_names + - boost_match_type + - boost + - position + type: object + properties: + api_names: + title: Api Names + type: array + items: + type: string + description: The api_names values + anchor_products: + title: Anchor Products + type: array + items: + type: string + description: The anchor products ids + default: [] + module_names: + title: Module Names + type: array + items: + type: string + description: The module name + boost_match_type: + title: Boost Match Type + enum: + - any + - all + type: string + description: Type of the query. Please fill this field with any or all. + boost: + title: Boost + type: array + items: + $ref: '#/components/schemas/BoostItem' + description: The items of the boosting rule. + position: + title: Position + type: array + items: + type: integer + description: 1-based index of the position of the boosting rule should occur. + example: + - 1 + - 2 + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: The comma-separated boosting tags. + example: + - tag-1 + - tag-2 + description: Attributes of boosting + securitySchemes: + Secret API Key: + type: apiKey + description: >+ + + Your secret API key is used to access every Miso API endpoint. You + should secure this key and only use it on a backend + + server. Never leave this key in your client-side JavaScript code. If the + private key is compromised, you can revoke it + + in [Dojo](https://dojo.askmiso.com/docs/api-browser) and get a new one. + + + Specify your secret key in the `api_key` query parameter. For example: + + ``` + + POST /v1/users?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17 + + ``` + + in: query + name: api_key + Publishable API Key: + type: apiKey + description: > + + Your publishable API key is used to call Miso's APIs from your front-end + code. It can be used to stream interactions from the browser using + Miso's Interactions Upload API or to access read-only search and + recommendation results for a given user. When using the publishable API + key, the requested user_id will need to be hashed to maintain the + necessary security compliance. + + + Specify your publishable key in the `api_key` query parameter. For + example: + + ``` + + POST /v1/interactions?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17 + + ``` + in: query + name: api_key +tags: + - name: Experiment APIs + description: > + + Miso's experiment APIs let you do the A/B testing of your current result + with Miso. + + + ### Start an experiment in Dojo. + + + Login to the [dojo](https://dojo.askmiso.com) platform. + + Create an experiment event for you. + + + ### Start running A/B testing in your environment. + + + #### Implement A/B testing code. + + + Here's an example in NodeJS. You can also use any programming language of + you choice. + + ```nodejs + + const axios = require('axios'); + + + async function get_user_experiment_info(api_key, experiment_id, user_id) { + data = {"user_id": user_id} + endpoint = `https://api.askmiso.com/v1/experiments/${experiment_id}/events?api_key=${api_key}` + return await axios.post(endpoint, data) + } + + + const api_key = '' + + const experiment_id = "" + + let user_id = 'user_1234' // use to evaluate a treatment for + + + const user_experiment_info = get_user_experiment_info(api_key, + experiment_id, user_id) + + user_experiment_info.then((response) => { + let variant = response.data['variant'] + if (variant['name'] == "treatment") { + // insert code here to show "treatment" variant + } else if (variant['name'] == "control") { + // insert code here to show "control" variant + } else { + // unexpected variant name. raise error + throw new Error(`Unexpected variant name ${variant["name"]}`) + } + }) + + ``` + + + If you implement A/B testing code in FrontEnd, like JavaScript, and are + also worried about exploding the secret api_key. You can choose to use + anonymous_id with the public_api_key for this API. Here's an example. + + + ```javascript + + const apiKey = ''; + + const experimentId = ''; + + const anonymous_id = 'user_1234'; // use to evaluate a treatment for + + + function getUserExperimentInfo(apiKey, experimentId, anonymous_id) { + const data = { + user_id: anonymous_id + }; + const url = `https://api.askmiso.com/v1/experiments/${experimentId}/events?api_key=${apiKey}`; + const options = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }; + + return window.fetch(url, options) + .then((response) => response.json()) + .then((data) => { + const variantName = data.variant.name; + if (variantName === `${this.treatmentName}`) { + // insert code here to show 'treatment' variant + } else if (variantName === `${this.controlName}`) { + // insert code here to show 'control' variant + } else { + // unexpected variant name, throw error + throw new Error(`Unexpected variant name: ${variantName}`); + } + }) + .catch((error) => console.error(error)); + } + + + getUserExperimentInfo(apiKey, experimentId, anonymous_id); + + ``` + - name: Interaction APIs + description: >+ + + Miso’s Interaction APIs let you manage your Interaction records stored + with Miso. + + + ### Interaction records + + Your Interaction records tell Miso about user interactions with products + and content on your site or application. + + From these interactions, Miso understands how users move through your + conversion funnels: which products or content + + assets attract the attention of each individual user, and which products + or content ultimately will be purchased or + + consumed by each of them. With these insights, Miso makes real-time + tailored recommendations for each user, and + + responds to each of their clicks and views on the site (even for anonymous + users). + + + Interaction records share some common attributes, but are distinguished by + their type. + + Miso captures 23 different interaction types, divided into the following 6 + groups: + + + #### Core click-streams + + * `product_detail_page_view`: a user viewed the detail page for a product + + * `search`: a user made a search request with keywords and (optionally) + filters + + + The above interactions are the core fuel for Miso's personalization + Engines, because they happen in a much higher + + frequency than other interactions and provide an unbiased and + high-fidelity view of users' interests on the site. + + The collection of these interactions is highly important for Miso's + personalization performance. At the minimum, + + you should implement the `product_detail_page_view` interaction to start + with. + + + #### Conversion (eCommerce) + + * `add_to_cart`: a user added a product to the shopping cart + + * `remove_from_cart`: a user removed a product from the shopping cart + + * `checkout`: a user checked out and started the payment process + + * `refund`: a user refunded the product + + * `subscribe`: a user subscribed to a product + + + The above interactions are the main revenue drivers for eCommerce sites. + It’s important to collect them so that + + Miso can not only drive click-through rates, but actually improve the + revenue in a targeted way. To start with, + + you should at least implement the `add_to_cart` interaction. + + + #### Consumption (content media) + + * `read`, `watch`, and `listen` interactions capture how and for how long + a user consumed a piece of content. + + * `add_to_collection`: a user added an product to their personal + collection + + * `remove_from_collection`: a user removed an product from their personal + collection + + + If you are a content site, the above interactions are the main drivers to + users' satisfaction on the site. + + Collecting these interactions allows Miso to drive consumption rates and + consumption durations for the content on + + your site. If you run a content site, you should implement at least one of + these interactions. + + + #### Feedback signals + + * `like`, `dislike`, `share`, `rate`, and `bookmark` are common ways + users express their interests. + + + These are strong signals for Miso to understand each user's preferences + regarding your products or content. You + + should send these signals to Miso if you have any of these UI patterns on + your site. + + + #### Performance Checking + + * `impression`: a user saw or was presented with a product or content + asset (but didn't yet interact with it) + + * `viewable_impression`: the product or content presented is actually + viewed by the user + (for example, minimum of 50% of the pixels were in viewable space for at least one continuous second.) + * `click`: a user clicked on something (for example, a product item) + + + #### Additional click-streams + + * `home_page_view`: user viewed your home page + + * `category_page_view`: a user viewed the page for a specific “group” or + “family” or products or content in your catalog + + * `promo_page_view`: user viewed the promotion pages about certain + products + + * `product_image_view`: user clicked on or otherwise interacted with the + product image (e.g. enlarged the image) + + + The above interactions are additional signals for Miso to understand + users' behavior on the site. + + + #### Custom + + * `custom` interaction types are reserved for you to define your own + business-specific interaction types. + + + Miso will analyze any custom interactions you define to infer users' + interests and preferences. + + + - name: Product / Content APIs + description: >+ + + Miso's Product / Content APIs let you upload, read, and delete Product / + Content records that represent your site's + + catalog. + + + ### Product / Content records + + Miso analyzes your Product / Content records to provide personalized + search and recommendations that connect users + + with products or content on your site or application. + + + Much of Miso's search and personalization capability relies on + understanding your catalog in-depth and drawing + + correlations between your catalog and your users' consumption or + purchasing behaviors. In other words, Miso + + discovers that, with high correlation, users who are interested in certain + product attributes would also be + + interested in other products with similar or related attributes. (For + simplicity, we will often overload the word + + "products" to mean items for purchase if you are an eCommerce business, + and content to consume if you are a content + + marketplace.) + + + To fully optimize your search and recommendations, it is important to + provide Miso with Product / Content records + + that are complete and accurate. We define a set of common attributes that + capture the basics of most eCommerce and + + content media products, such as `title`, `description`, `categories`, + `tags`, `material`, `authors`, etc. + + + If your products' characteristics cannot be fully captured by these + fields, we recommend that you specify + + `custom_attributes`. For Miso, the more complete the product information + is, the better its personalized search + + and recommendations become. + + - name: User APIs + description: >+ + + Miso’s User APIs let you upload, read, and delete User records that tell + Miso about your site’s unique users and + + visitors. + + + ### User records + + User records specify relatively static attributes for a given user, such + as their `age`, `gender`, `city`, etc. As a + + rule of thumb, you should put information here that is not already + captured in your + + [Interaction records](https://api.askmiso.com). For example, + *last_bought_product* is probably not needed here because + + Miso already can tell that from the [Interaction + records](https://api.askmiso.com). + + + Miso will discover the correlations between a user's attributes and their + behaviors on your site. For example, Miso + + might determine that users of a certain age group tend to be interested in + certain products or a certain price + + range. These insights will be taken into account when predicting users' + interests, in particular for new users who + + have not yet generated many interaction records. + + + We define a set of common user attributes for e-Commerce and content media + sites. Some of them, such as `name` are + + for display in the Dojo dashboard only. The rest are for model quality. + Most attributes are optional and you don't + + need to specify them if you don't collect such data. On the other hand, + you can specify your custom user attributes + + in the `custom_attributes` field. Miso will analyze custom user attributes + to improve the model quality as well. + + - name: Bulk API + description: > + + The Bulk API provides an efficient interface for making multiple Search / + Recommendations / Q&A requests in one API + + call. These requests will be executed concurrently at the Miso side, and + returned at once when all of them are finished. + + This API is particularly useful when you need to invoke multiple Miso APIs + to respond to a user request. + + Using this API, you can batch multiple API calls into one, and + significantly save the network round-trip times. + + + ### Request schema + + The request schema for this API call is as follow: + + ``` + + POST /v1/bulk + + { + "requests": [ + { + "api_name": "search/search", + "body": { ... } + }, + { + "api_name": "recommendation/product_to_product", + "body": { ... } + }, + ... + ] + } + + ``` + + Each request object should contain: + + * **api_name**: name of the API you want to access. The name should + contain a slash `/`. + + For example, search/search for search requests, search/autocomplete for + autocomplete requests, etc. + + * **body**: the complete request body as if you are making the API request + individually. + + + Any errors in one of the requests will be returned, and will not prevent + other requests from being + + executed. + + + ### Response Schema + + Bulk API endpoint will return the API responses in the same order as they + appear in the request. + + For example, if the Bulk API request is like the following: + + ``` + + POST /v1/bulk + + { + "requests": [ + {... request 1 ...}, + {... request 2 ...} + ] + } + + ``` + + + The response will be like: + + ``` + + { + "data": [ + // response for request 1 + { + "error": false, + "status_code": 200, + "body": { ... } + }, + // response for request 2 + { + "error": false, + "status_code": 200, + "body": { ... } + } + ] + } + + ``` + + + Each response object will contain the following fields: + + * **error**: whether there was an error with the request. You should check + this field to determine whether to + + perform error handling. + + * **status_code**: status code of the request. + + * **body**: the response body of the request (as if the request was sent + individually). + + + Let's see a complete example with MovieLens data. The following requests + will issue two requests in one API call that + + return the `Sci-Fi` movies directed by + + *Ridley Scott*, and *James Cameron* respectively in the first and second + responses: + + ``` + + POST /v1/bulk + + { + "requests": [ + { + "api_name": "search/search", + "body": { + "user_id": "test_user", + "q": "sci-fi", + "fq": "custom_attributes.director:\"Ridley Scott\"" + } + }, + { + "api_name": "search/search", + "body": { + "user_id": "test_user", + "q": "sci-fi", + "fq": "custom_attributes.director:\"James Cameron\"" + } + } + ] + } + + ``` + + The response will be like: + + ``` + + { + "data": [ + { + "error": false, + "status_code": 200, + "body": { + "data": { + "took": 136, + "miso_id": "19ab254c-5fb8-11ec-bd48-b20169940af9", + "products": [ + { + "product_id": "blade-runner", + "title": "Blade Runner (1982)" + } + ], + "total": 6, + "start": 0 + } + } + }, + { + "error": false, + "status_code": 200, + "body": { + "data": { + "took": 116, + "miso_id": "19ab254c-5fb8-11ec-bd48-b20169940af9", + "products": [ + { + "product_id": "avatar", + "title": "Avatar (2009)" + } + ], + "total": 10, + "start": 0 + } + } + } + ] + } + + ``` + - name: Ask APIs + description: >+ + + Miso's new Ask API is the next generation of question answering APIs. + + It is designed to provide accurate and concise answers to your questions + + based on your existing product documents. + + + Ask API offers a seamless and effective way to address complex queries in + + a near-realtime fasion. + + + Miso preprocesses your product documents, breaking them into segments. + + When a question is received, Miso finds the most related product and + segments, then + + summarize to a concise and informative answer based on the identified + segments, + + including products related to the question. + + + Possible use case includes: knowledge base, documentation search, customer + support, and more. + + + To use the Ask API, you first submit a "question" you want to ask. + + Question can be any human-readable text. Then a question ID will returned, + + and the question will be processed in the background. + + + After receving question ID, you can then use the question ID to get latest + answer + + to the question as it is being compiled. + + + ---- + + + For example: + + + If you want to know about the inner workings of nginx: + + + ```json + + { + "question":"How nginx works internally?" + } + + ``` + + + The API would response with a question id. + + ```json + + { + "data": { + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a" + }, + "message": "success" + } + + ``` + + + Then you can send a GET request to + `/v1/ask/questions/{question_id}/answer` + + to get the latest answer as it is being compiled and summerized. + + You can use `answer_stage` and `finished` to check current answer status. + + + Here's the response of answer API when data is fetched and being verified, + before answer is summerized: + + ```json + + { + "message": "success", + "data": { + "question": "How nginx works internally?", + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a", + "parent_question_id": null, + "answer_stage": "Verifying possible answers", + "finished": false, + "answer": "Verifying possible answers ...", + "sources": [], + "related_resources": [], + "followup_questions": [] + } + } + + ``` + + + Here's the response when answer is fullly summerized: + + + ```json + + { + "message": "success", + "data": { + "question": "How nginx works internally?", + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a", + "parent_question_id": null, + "answer_stage": "Generating summary", + "finished": true, + "answer": "# How does Nginx work internally?\n\n## Internal requests [1]\n\nNginx differentiates between external and internal requests. External requests...[omitted for simplicity]", + "sources": [ + { + "title": "Internal requests", + "product_id": "9781788623551", + "child_title": "Internal requests", + "child_id": "203", + "snippet": "Internal requests\nNginx differentiates external and internal requests." + }, + { + "title": "5. Nginx Core Architecture", + "product_id": "9781484216569", + "child_title": "5. Nginx Core Architecture", + "child_id": "5", + "snippet": "Checks if the client can access of the requested the resource.\nIt is at this step that Nginx...[omitted]" + }, + { + "title": "2. Managing Nginx", + "product_id": "9781785289538", + "child_title": "2. Managing Nginx", + "child_id": "14", + "snippet": "The Nginx connection processing architecture\nBefore you study...[omitted]" + }, + { + "title": "3. Nginx Core Directives", + "product_id": "9781484216569", + "child_title": "3. Nginx Core Directives", + "child_id": "3", + "snippet": "Understanding the Default Configuration\nThe default configuration...[omitted]" + }, + { + "title": "4. Nginx Modules", + "product_id": "9781484216569", + "child_title": "4. Nginx Modules", + "child_id": "4", + "snippet": "Based on the context like HTTP, MAIL, and STREAM, it creates a ...[omitted]" + } + ], + "related_resources": [], + "followup_questions": [ + "What are the steps involved in processing a request and generating a response in Nginx?", + "How do Nginx modules contribute to the internal workings of Nginx?" + ] + } + } + + ``` + + + Related product IDs will be returned along with human-readable answer. + Related text section in the product will also be quoted. + + + If a product has any children, they will also be matched, `child_id` and + `child_title` will be included for sources belonging to the product's + children. + + + You can use `fq` to limit the search scope, for example, to a specific + product type or other condition. + + + If you only want to search for books (no articles of videos), you can use + `fq=type:book` like this: + + ```json + + { + "question":"How nginx works internally?" + "fq": "type:book" + } + + ``` + + + If you want the answer to contain any other fields, set `source_fl` when + submitting the question. + +x-tagGroups: + - name: Data APIs + tags: + - Interaction APIs + - Product / Content APIs + - User APIs + - name: Engine APIs + tags: + - Search APIs + - Recommendation APIs + - Ask APIs + - Signal API + - Bulk API + - name: Experiment APIs + tags: + - Experiment APIs + - name: Q&A API + tags: + - Q&A APIs +servers: + - url: https://api.askmiso.com diff --git a/sdks/db/custom-request-specs/baserow.io.yaml b/sdks/db/custom-request-specs/baserow.io.yaml new file mode 100644 index 0000000000..7dd5ac2f7c --- /dev/null +++ b/sdks/db/custom-request-specs/baserow.io.yaml @@ -0,0 +1,49457 @@ +openapi: 3.0.3 +info: + title: Baserow API spec + version: 1.23.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://gitlab.com/baserow/baserow/-/blob/master/LICENSE +paths: + /api/_health/email/: + post: + operationId: email_tester + description: >- + Sends a test email to the provided email address. Useful for testing + Baserow's email configuration as errors are clearly returned. + tags: + - Health + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EmailTesterResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/_health/full/: + get: + operationId: full_health_check + description: >- + Runs a full health check testing as many services and systems as + possible. These health checks can be expensive operations such as + writing files to storage etc. + tags: + - Health + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FullHealthCheck' + description: '' + /api/admin/audit-log/: + get: + operationId: audit_log_list + description: |- + Lists all audit log entries for the given workspace id. + + This is a **enterprise** feature. + parameters: + - in: query + name: action_type + schema: + type: string + description: Filter the audit log entries by action type. + - in: query + name: from_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries from. + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: size + schema: + type: integer + description: Defines how many audit log entries should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `user, workspace, + type, timestamp, ip_address`. For example `sorts=-user,-workspace` + will sort the audit log entries first by descending user and then + ascending workspace. A sortparameter with multiple instances of the + same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + - in: query + name: to_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries to. + - in: query + name: user_id + schema: + type: integer + description: Filter the audit log entries by user id. + - in: query + name: workspace_id + schema: + type: integer + description: >- + Filter the audit log entries by workspace id. This filter works only + for the admin audit log. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLog' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/audit-log/action-types/: + get: + operationId: audit_log_action_types + description: |- + List all distinct action types related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: search + schema: + type: string + description: >- + If provided only action_types with name that match the query will be + returned. + - in: query + name: workspace_id + schema: + type: integer + description: Return action types related to the workspace. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AuditLogActionType' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/audit-log/export/: + post: + operationId: async_audit_log_export + description: |- + Creates a job to export the filtered audit log to a CSV file. + + This is a **enterprise** feature. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Audit log + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_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/admin/audit-log/users/: + get: + operationId: audit_log_users + description: |- + List all users that have performed an action in the audit log. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only users with email that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + - in: query + name: workspace_id + schema: + type: integer + description: Return users belonging to the given workspace_id. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/audit-log/workspaces/: + get: + operationId: audit_log_workspaces + description: |- + List all distinct workspace names related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only workspaces with name that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many workspaces should be returned per page. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/auth-provider/: + get: + operationId: list_auth_providers + description: List all the available authentication providers. + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + post: + operationId: create_auth_provider + description: >- + Creates a new authentication provider. This can be used to enable + authentication with a third party service like Google or Facebook. + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/admin/auth-provider/{auth_provider_id}/: + get: + operationId: get_auth_provider + description: Get an authentication provider. + parameters: + - in: path + name: auth_provider_id + schema: + type: integer + description: The authentication provider id to fetch. + required: true + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_AUTH_PROVIDER_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: '' + patch: + operationId: update_auth_provider + description: >- + Updates a new authentication provider. This can be used to enable + authentication with a third party service like Google or Facebook. + parameters: + - in: path + name: auth_provider_id + schema: + type: integer + description: The authentication provider id to update. + required: true + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_AUTH_PROVIDER_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: '' + delete: + operationId: delete_auth_provider + description: Delete an authentication provider. + parameters: + - in: path + name: auth_provider_id + schema: + type: integer + description: The authentication provider id to delete. + required: true + tags: + - Auth + security: + - JWT: [] + responses: + '204': + description: No response body + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_AUTH_PROVIDER_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/admin/dashboard/: + get: + operationId: admin_dashboard + description: >- + Returns the new and active users for the last 24 hours, 7 days and 30 + days. The `previous_` values are the values of the period before, so for + example `previous_new_users_last_24_hours` are the new users that signed + up from 48 to 24 hours ago. It can be used to calculate an increase or + decrease in the amount of signups. A list of the new and active users + for every day for the last 30 days is also included. + + + This is a **premium** feature. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDashboard' + description: '' + '401': + description: No response body + /api/admin/groups/: + get: + operationId: admin_list_groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [admin_list_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns all groups with detailed information on each group, if the requesting user is staff. + + This is a **premium** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only groups with id or name that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many groups should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, name, + application_count, created_on, row_count, storage_usage`. For + example `sorts=-id,-name` will sort the groups first by descending + id and then ascending name. A sortparameter with multiple instances + of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + tags: + - Admin + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWorkspacesAdminResponse + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/groups/{group_id}/: + delete: + operationId: admin_delete_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [admin_delete_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes the specified group and the applications inside that group, if the requesting user is staff. + + This is a **premium** feature. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The id of the group to delete + required: true + tags: + - Admin + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + /api/admin/users/: + get: + operationId: admin_list_users + description: >- + Returns all users with detailed information on each user, if the + requesting user is staff. + + + This is a **premium** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only users with username that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, is_active, + name, username, date_joined, last_login`. For example + `sorts=-id,-is_active` will sort the users first by descending id + and then ascending is_active. A sortparameter with multiple + instances of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerUserAdminResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + post: + operationId: admin_create_user + description: >- + Creates and returns a new user if the requesting user is staff. This + works even if new signups are disabled. + + + This is a **premium** feature. + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/UserAdminCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/UserAdminCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_FEATURE_NOT_AVAILABLE + - USER_ADMIN_ALREADY_EXISTS + 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/admin/users/{user_id}/: + patch: + operationId: admin_edit_user + description: >- + Updates specified user attributes and returns the updated user if the + requesting user is staff. You cannot update yourself to no longer be an + admin or active. + + + This is a **premium** feature. + parameters: + - in: path + name: user_id + schema: + type: integer + description: The id of the user to edit + required: true + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - USER_ADMIN_CANNOT_DEACTIVATE_SELF + - USER_ADMIN_UNKNOWN_USER + - USER_ADMIN_ALREADY_EXISTS + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + delete: + operationId: admin_delete_user + description: >- + Deletes the specified user, if the requesting user has admin + permissions. You cannot delete yourself. + + + This is a **premium** feature. + parameters: + - in: path + name: user_id + schema: + type: integer + description: The id of the user to delete + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - USER_ADMIN_CANNOT_DELETE_SELF + - USER_ADMIN_UNKNOWN_USER + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + /api/admin/users/impersonate/: + post: + operationId: admin_impersonate_user + description: >- + This endpoint allows staff to impersonate another user by requesting a + JWT token and user object. The requesting user must have staff access in + order to do this. It's not possible to impersonate a superuser or staff. + + + This is a **premium** feature. + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + multipart/form-data: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + description: '' + /api/admin/workspaces/: + get: + operationId: admin_list_workspaces + description: >- + Returns all workspaces with detailed information on each workspace, if + the requesting user is staff. + + + This is a **premium** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only workspaces with id or name that match the query + will be returned. + - in: query + name: size + schema: + type: integer + description: Defines how many workspaces should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, name, + application_count, created_on, row_count, storage_usage`. For + example `sorts=-id,-name` will sort the workspaces first by + descending id and then ascending name. A sortparameter with multiple + instances of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWorkspacesAdminResponse + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/workspaces/{workspace_id}/: + delete: + operationId: admin_delete_workspace + description: >- + Deletes the specified workspace and the applications inside that + workspace, if the requesting user is staff. + + + This is a **premium** feature. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The id of the workspace to delete + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + /api/application/{application_id}/integrations/: + get: + operationId: list_application_integrations + description: >- + Lists all the integrations of the application related to the provided + parameter if the user has access to the related application's workspace. + If the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - in: path + name: application_id + schema: + type: integer + description: >- + Returns only the integrations of the application related to the + provided Id. + required: true + tags: + - Integrations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_APPLICATION_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: '' + post: + operationId: create_application_integration + description: Creates a new integration + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: application_id + schema: + type: integer + description: >- + Creates an integration for the application related to the provided + value. + required: true + tags: + - Integrations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/application/{application_id}/list-user-source-users/: + get: + operationId: list_application_user_source_users + description: List per user sources the first 5 users available. + parameters: + - in: path + name: application_id + schema: + type: integer + description: The application we want the users for. + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UsersPerUserSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_APPLICATION_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/application/{application_id}/user-sources/: + get: + operationId: list_application_user_sources + description: >- + Lists all the user_sources of the application related to the provided + parameter if the user has access to the related application's workspace. + If the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - in: path + name: application_id + schema: + type: integer + description: >- + Returns only the user_sources of the application related to the + provided Id. + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_APPLICATION_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: '' + post: + operationId: create_application_user_source + description: Creates a new user_source + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: application_id + schema: + type: integer + description: >- + Creates an user_source for the application related to the provided + value. + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/applications/: + get: + operationId: list_all_applications + description: >- + Lists all the applications that the authorized user has access to. The + properties that belong to the application can differ per type. An + application always belongs to a single workspace. All the applications + of the workspaces that the user has access to are going to be listed + here. + tags: + - Applications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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 + 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/applications/{application_id}/: + get: + operationId: workspace_get_application + description: >- + Returns the requested application if the authorized user is in the + application's workspace. The properties that belong to the application + can differ per type. + parameters: + - in: path + name: application_id + schema: + type: integer + description: Returns the application related to the provided value. + required: true + tags: + - Applications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_APPLICATION_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: '' + patch: + operationId: update_application + description: >- + Updates the existing application related to the provided + `application_id` param if the authorized user is in the application's + workspace. It is not possible to change the type, but properties like + the name can be changed. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: application_id + schema: + type: integer + description: Updates the application related to the provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_APPLICATION_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: '' + delete: + operationId: delete_application + description: >- + Deletes an application if the authorized user is in the application's + workspace. All the related children are also going to be deleted. For + example in case of a database application all the underlying tables, + fields, views and rows are going to be deleted. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: application_id + schema: + type: integer + description: Deletes the application related to the provided value. + required: true + tags: + - Applications + security: + - JWT: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_APPLICATION_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/applications/{application_id}/duplicate/async/: + post: + operationId: duplicate_application_async + description: >- + Duplicate an application if the authorized user is in the application's + workspace. All the related children are also going to be duplicated. For + example in case of a database application all the underlying tables, + fields, views and rows are going to be duplicated. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: application_id + schema: + type: integer + description: The id of the application to duplicate. + required: true + tags: + - Applications + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateApplicationJobType' + 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_APPLICATION_NOT_IN_GROUP + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_APPLICATION_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/applications/group/{group_id}/: + get: + operationId: group_list_applications + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_list_applications](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the applications of the group related to the provided `group_id` parameter if the authorized user is in that group. If the group is related to a template, then this endpoint will be publicly accessible. The properties that belong to the application can differ per type. An application always belongs to a single group. + parameters: + - in: path + name: group_id + schema: + type: integer + description: >- + Returns only applications that are in the group related to the + provided value. + required: true + tags: + - Applications + security: + - JWT: [] + - {} + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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 + 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_GROUP_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: '' + post: + operationId: group_create_application + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_create_application](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new application based on the provided type. The newly created application is going to be added to the group related to the provided `group_id` parameter. If the authorized user does not belong to the group an error will be returned. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: Creates an application for the group related to the provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + multipart/form-data: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_GROUP_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/applications/group/{group_id}/order/: + post: + operationId: group_order_applications + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_order_applications](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Changes the order of the provided application ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order of the not provided tables will be set to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: >- + Updates the order of the applications in the group related to the + provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderApplications' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderApplications' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderApplications' + required: true + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + 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_GROUP_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/applications/workspace/{workspace_id}/: + get: + operationId: workspace_list_applications + description: >- + Lists all the applications of the workspace related to the provided + `workspace_id` parameter if the authorized user is in that workspace. If + theworkspace is related to a template, then this endpoint will be + publicly accessible. The properties that belong to the application can + differ per type. An application always belongs to a single workspace. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: >- + Returns only applications that are in the workspace related to the + provided value. + required: true + tags: + - Applications + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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 + 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_GROUP_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: '' + post: + operationId: workspace_create_application + description: >- + Creates a new application based on the provided type. The newly created + application is going to be added to the workspace related to the + provided `workspace_id` parameter. If the authorized user does not + belong to the workspace an error will be returned. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: >- + Creates an application for the workspace related to the provided + value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + multipart/form-data: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_GROUP_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/applications/workspace/{workspace_id}/order/: + post: + operationId: workspace_order_applications + description: >- + Changes the order of the provided application ids to the matching + position that the id has in the list. If the authorized user does not + belong to the workspace it will be ignored. The order of the not + provided tables will be set to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: >- + Updates the order of the applications in the workspace related to + the provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderApplications' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderApplications' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderApplications' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + 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_GROUP_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/audit-log/: + get: + operationId: audit_log_list_2 + description: |- + Lists all audit log entries for the given workspace id. + + This is a **enterprise** feature. + parameters: + - in: query + name: action_type + schema: + type: string + description: Filter the audit log entries by action type. + - in: query + name: from_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries from. + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: size + schema: + type: integer + description: Defines how many audit log entries should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `user, workspace, + type, timestamp, ip_address`. For example `sorts=-user,-workspace` + will sort the audit log entries first by descending user and then + ascending workspace. A sortparameter with multiple instances of the + same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + - in: query + name: to_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries to. + - in: query + name: user_id + schema: + type: integer + description: Filter the audit log entries by user id. + - in: query + name: workspace_id + schema: + type: integer + description: >- + Filter the audit log entries by workspace id. This filter works only + for the admin audit log. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLog' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/audit-log/action-types/: + get: + operationId: audit_log_action_types_2 + description: |- + List all distinct action types related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: search + schema: + type: string + description: >- + If provided only action_types with name that match the query will be + returned. + - in: query + name: workspace_id + schema: + type: integer + description: Return action types related to the workspace. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AuditLogActionType' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/audit-log/export/: + post: + operationId: async_audit_log_export_2 + description: |- + Creates a job to export the filtered audit log to a CSV file. + + This is a **enterprise** feature. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Audit log + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_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/audit-log/users/: + get: + operationId: audit_log_users_2 + description: |- + List all users that have performed an action in the audit log. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only users with email that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + - in: query + name: workspace_id + schema: + type: integer + description: Return users belonging to the given workspace_id. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/audit-log/workspaces/: + get: + operationId: audit_log_workspaces_2 + description: |- + List all distinct workspace names related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only workspaces with name that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many workspaces should be returned per page. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/auth-provider/login-options/: + get: + operationId: list_auth_providers_login_options + description: >- + Lists the available login options for the configured authentication + providers. + tags: + - Auth + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + additionalProperties: {} + description: Unspecified response body + description: '' + /api/builder/{builder_id}/domains/: + get: + operationId: get_builder_domains + description: Gets all the domains of a builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: Gets all the domains for the specified builder + required: true + tags: + - Builder domains + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Domain_TypeDomain' + 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 + 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_APPLICATION_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: '' + post: + operationId: create_builder_domain + description: Creates a new domain for an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: >- + Creates a domain for the application builder related tothe provided + value + required: true + tags: + - Builder domains + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + multipart/form-data: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeDomain' + 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_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/builder/{builder_id}/domains/order/: + post: + operationId: order_builder_domains + description: Apply a new order to the domains of a builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: The builder the domain belongs to + required: true + tags: + - Builder domains + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderDomains' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderDomains' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderDomains' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_DOMAIN_NOT_IN_BUILDER + 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_APPLICATION_DOES_NOT_EXIST + - ERROR_DOMAIN_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/builder/{builder_id}/pages/: + post: + operationId: create_builder_page + description: Creates a new page for an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: >- + Creates a page for the application builder related to the provided + value. + required: true + tags: + - Builder pages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreatePage' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreatePage' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreatePage' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Page' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NAME_NOT_UNIQUE + - ERROR_PAGE_PATH_NOT_UNIQUE + - ERROR_PATH_PARAM_NOT_IN_PATH + - ERROR_PATH_PARAM_NOT_DEFINED + 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_APPLICATION_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/builder/{builder_id}/pages/order/: + post: + operationId: order_builder_pages + description: Apply a new order to the pages of a builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: The builder the page belongs to + required: true + tags: + - Builder pages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderPages' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderPages' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderPages' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NOT_IN_BUILDER + 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_APPLICATION_DOES_NOT_EXIST + - ERROR_PAGE_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/builder/{builder_id}/theme/: + patch: + operationId: update_builder_theme + description: Updates the theme properties for the provided id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: >- + Updates the theme for the application builder related to the + provided value. + required: true + tags: + - Builder theme + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CombinedThemeConfigBlocks' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/builder/data-source/{data_source_id}/: + patch: + operationId: update_builder_page_data_source + description: Updates an existing builder data_source. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source + required: true + tags: + - Builder data sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_DATA_SOURCE_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: '' + delete: + operationId: delete_builder_page_data_source + description: Deletes the data_source related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source + required: true + tags: + - Builder data sources + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_DATA_SOURCE_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/builder/data-source/{data_source_id}/dispatch/: + post: + operationId: dispatch_builder_page_data_source + description: >- + Dispatches the service of the related data_source and returns the + result. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source you want to call the dispatch for + required: true + tags: + - Builder data sources + security: + - JWT: [] + - {} + responses: + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_DATA_SOURCE_DOES_NOT_EXIST + - ERROR_DATA_SOURCE_IMPROPERLY_CONFIGURED + - ERROR_IN_DISPATCH_CONTEXT + - ERROR_DATA_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/builder/data_source/{data_source_id}/move/: + patch: + operationId: move_builder_page_data_source + description: >- + Moves the data_source in the page before another data_source or at the + end of the page if no before data_source is given. The data_sources must + belong to the same page. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source to move + required: true + tags: + - Builder data sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_DATA_SOURCE_NOT_IN_SAME_PAGE + 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_DATA_SOURCE_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/builder/domains/{domain_id}/: + patch: + operationId: update_builder_domain + description: Updates an existing domain of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: domain_id + schema: + type: integer + description: The id of the domain + required: true + tags: + - Builder domains + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeDomain' + 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_REQUEST_BODY_VALIDATION + 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_DOMAIN_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: '' + delete: + operationId: delete_builder_domain + description: Deletes an existing domain of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: domain_id + schema: + type: integer + description: The id of the domain + required: true + tags: + - Builder domains + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + 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_DOMAIN_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/builder/domains/{domain_id}/publish/async/: + post: + operationId: publish_builder_domain + description: >- + This endpoint starts an asynchronous job to publish the builder. The job + clones the current version of the given builder and publish it for the + given domain. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: domain_id + schema: + type: integer + description: The builder application id the user wants to publish. + required: true + tags: + - Builder domains + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/builder/domains/ask-public-domain-exists/: + get: + operationId: ask_public_builder_domain_exists + description: >- + This endpoint can be used to check whether a domain exists for SSL + certificate purposes. It's compatible with the Caddy on_demand TLS as + described here: + https://caddyserver.com/docs/json/apps/tls/automation/on_demand/ask/. It + will respond with a 200 status code if it exists or a 404 if it doesn't + exist. + parameters: + - in: query + name: domain + schema: + type: integer + description: The domain name for which + tags: + - Builder domains + security: + - JWT: [] + - {} + responses: + '200': + description: No response body + '404': + description: No response body + /api/builder/domains/published/by_id/{builder_id}/: + get: + operationId: get_public_builder_by_id + description: >- + Returns the public serialized version of the builder and its pages for + the given builder id. + parameters: + - in: path + name: builder_id + schema: + type: integer + description: Returns the builder related to the provided Id and its pages. + required: true + tags: + - Builder public + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicBuilder' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_BUILDER_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/builder/domains/published/by_name/{domain_name}/: + get: + operationId: get_public_builder_by_domain_name + description: >- + Returns the public serialized version of the builder for the given + domain name and its pages . + parameters: + - in: path + name: domain_name + schema: + type: string + description: Returns the builder published for the given domain name. + required: true + tags: + - Builder public + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicBuilder' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_BUILDER_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/builder/domains/published/page/{page_id}/data_sources/: + get: + operationId: list_public_builder_page_data_sources + description: >- + Lists all the data_sources of the page related to the provided parameter + if the builder is public. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the data_sources of the page related to the provided Id + if the related builder is public. + required: true + tags: + - Builder data sources + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Integration_ServicePublicDataSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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/builder/domains/published/page/{page_id}/elements/: + get: + operationId: list_public_builder_page_elements + description: >- + Lists all the elements of the page related to the provided parameter. If + the user is Anonymous, the page must belong to a published builder + instance to being accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: Returns the elements of the page related to the provided Id. + required: true + tags: + - Builder elements + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Element_TypePublicElement' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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/builder/domains/published/page/{page_id}/workflow_actions/: + get: + operationId: list_public_builder_page_workflow_actions + description: >- + Lists all the workflow actions with their public accessible data. Some + configuration might be omitted for security reasons such as passwords or + PII. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the public workflow actions of the page related to the + provided Id. + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: >- + #/components/schemas/public_Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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/builder/element/{element_id}/: + patch: + operationId: update_builder_page_element + description: Updates an existing builder element. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element + required: true + tags: + - Builder elements + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_ELEMENT_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: '' + delete: + operationId: delete_builder_page_element + description: Deletes the element related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element + required: true + tags: + - Builder elements + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_ELEMENT_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/builder/element/{element_id}/duplicate/: + post: + operationId: duplicate_builder_page_element + description: >- + Duplicates an element and all of the elements children and the + associated workflow actions as well. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element to duplicate + required: true + tags: + - Builder elements + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DuplicateElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_ELEMENT_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/builder/element/{element_id}/move/: + patch: + operationId: move_builder_page_element + description: >- + Moves the element in the page before another element or at the end of + the page if no before element is given. The elements must belong to the + same page. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element to move + required: true + tags: + - Builder elements + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_ELEMENT_NOT_IN_SAME_PAGE + 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_ELEMENT_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/builder/page/{page_id}/data-sources/: + get: + operationId: list_builder_page_data_sources + description: >- + Lists all the data_sources of the page related to the provided parameter + if the user has access to the related builder's workspace. If the + workspace is related to a template, then this endpoint will be publicly + accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the data_sources of the page related to the provided + Id. + required: true + tags: + - Builder data sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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: '' + post: + operationId: create_builder_page_data_source + description: Creates a new builder data_source + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: >- + Creates a data_source for the builder page related to the provided + value. + required: true + tags: + - Builder data sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/page/{page_id}/dispatch-data-sources/: + post: + operationId: dispatch_builder_page_data_sources + description: Dispatches the service of the related page data_sources + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The page we want to dispatch the data source for. + required: true + tags: + - Builder data sources + security: + - JWT: [] + - {} + responses: + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_DATA_SOURCE_IMPROPERLY_CONFIGURED + - ERROR_IN_DISPATCH_CONTEXT + - ERROR_DATA_DOES_NOT_EXIST + - ERROR_PAGE_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/builder/page/{page_id}/elements/: + get: + operationId: list_builder_page_elements + description: >- + Lists all the elements of the page related to the provided parameter if + the user has access to the related builder's workspace. If the workspace + is related to a template, then this endpoint will be publicly + accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: Returns only the elements of the page related to the provided Id. + required: true + tags: + - Builder elements + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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: '' + post: + operationId: create_builder_page_element + description: Creates a new builder element + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: >- + Creates an element for the builder page related to the provided + value. + required: true + tags: + - Builder elements + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/page/{page_id}/workflow_actions/: + get: + operationId: list_builder_page_workflow_actions + description: >- + Lists all the workflow actions of the page related to the provided + parameter if the user has access to the related builder's workspace. If + the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the workflow actions of the page related to the + provided Id. + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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: '' + post: + operationId: create_builder_page_workflow_action + description: Creates a new builder workflow action + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: >- + Creates a workflow action for the builder page related to the + provided value. + required: true + tags: + - Builder workflow actions + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + multipart/form-data: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/page/{page_id}/workflow_actions/order/: + post: + operationId: order_builder_workflow_actions + description: Apply a new order to the workflow actions of a page + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The page the workflow actions belong to + required: true + tags: + - Builder workflow actions + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + 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_PAGE_DOES_NOT_EXIST + - ERROR_WORKFLOW_ACTION_DOES_NOT_EXIST + - ERROR_WORKFLOW_ACTION_NOT_IN_ELEMENT + 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/builder/pages/{page_id}/: + patch: + operationId: update_builder_page + description: Updates an existing page of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The id of the page + required: true + tags: + - Builder pages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Page' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NAME_NOT_UNIQUE + - ERROR_PAGE_PATH_NOT_UNIQUE + - ERROR_PATH_PARAM_NOT_IN_PATH + - ERROR_PATH_PARAM_NOT_DEFINED + 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_PAGE_DOES_NOT_EXIST + - ERROR_APPLICATION_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: '' + delete: + operationId: delete_builder_page + description: Deletes an existing page of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The id of the page + required: true + tags: + - Builder pages + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/pages/{page_id}/duplicate/async/: + post: + operationId: duplicate_builder_page_async + description: >- + Start a job to duplicate the page with the provided `page_id` parameter + if the authorized user has access to the builder's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The page to duplicate. + required: true + tags: + - Builder pages + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicatePageJobType' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_PAGE_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/builder/workflow_action/{workflow_action_id}/: + patch: + operationId: update_builder_page_workflow_action + description: Updates an existing builder workflow action. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workflow_action_id + schema: + type: integer + description: The id of the workflow action + required: true + tags: + - Builder workflow actions + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_WORKFLOW_ACTION_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: '' + delete: + operationId: delete_builder_page_workflow_action + description: Deletes the workflow action related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workflow_action_id + schema: + type: integer + description: The id of the workflow action + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_WORKFLOW_ACTION_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/builder/workflow_action/{workflow_action_id}/dispatch/: + post: + operationId: dispatch_builder_page_workflow_action + description: >- + Dispatches the service of the related workflow_action and returns the + result. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workflow_action_id + schema: + type: integer + description: The id of the workflow_action you want to call the dispatch for. + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + - {} + responses: + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_WORKFLOW_ACTION_CANNOT_BE_DISPATCHED + 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/export/{job_id}/: + get: + operationId: get_export_job + description: >- + Returns information such as export progress and state or the url of the + exported file for the specified export job, only if the requesting user + has access. + parameters: + - in: path + name: job_id + schema: + type: integer + description: The job id to lookup information about. + required: true + tags: + - Database table export + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExportJob' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_EXPORT_JOB_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/export/table/{table_id}/: + post: + operationId: export_table + description: >- + Creates and starts a new export job for a table given some exporter + options. Returns an error if the requesting user does not have + permissionsto view the table. + parameters: + - in: path + name: table_id + schema: + type: integer + description: The table id to create and start an export job for + required: true + tags: + - Database table export + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Export' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Export' + multipart/form-data: + schema: + $ref: '#/components/schemas/Export' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExportJob' + 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_REQUEST_BODY_VALIDATION + - ERROR_TABLE_ONLY_EXPORT_UNSUPPORTED + - ERROR_VIEW_UNSUPPORTED_FOR_EXPORT_TYPE + - ERROR_VIEW_NOT_IN_TABLE + 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_TABLE_DOES_NOT_EXIST + - 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/fields/{field_id}/: + get: + operationId: get_database_table_field + description: >- + Returns the existing field if the authorized user has access to the + related database's workspace. Depending on the type different properties + could be returned. + parameters: + - in: path + name: field_id + schema: + type: integer + description: Returns the field related to the provided value. + required: true + tags: + - Database table fields + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FieldField' + 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 + 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_FIELD_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: '' + patch: + operationId: update_database_table_field + description: >- + Updates the existing field if the authorized user has access to the + related database's workspace. The type can also be changed and depending + on that type, different additional properties can optionally be set. If + you change the field type it could happen that the data conversion + fails, in that case the `ERROR_CANNOT_CHANGE_FIELD_TYPE` is returned, + but this rarely happens. If a data value cannot be converted it is set + to `null` so data might go lost.If updated the field causes other fields + to change then the specificinstances of those fields will be included in + the related fields response key. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: field_id + schema: + type: integer + description: Updates the field related to the provided value. + required: true + tags: + - Database table fields + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FieldFieldSerializerWithRelatedFields' + 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_CANNOT_CHANGE_FIELD_TYPE + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_FIELD_WITH_SAME_NAME_ALREADY_EXISTS + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_FIELD_SELF_REFERENCE + - ERROR_FIELD_CIRCULAR_REFERENCE + 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_FIELD_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: '' + delete: + operationId: delete_database_table_field + description: >- + Deletes the existing field if the authorized user has access to the + related database's workspace. Note that all the related data to that + field is also deleted. Primary fields cannot be deleted because their + value represents the row. If deleting the field causes other fields to + change then the specificinstances of those fields will be included in + the related fields response key. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: field_id + schema: + type: integer + description: Deletes the field related to the provided value. + required: true + tags: + - Database table fields + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RelatedFields' + 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_CANNOT_DELETE_PRIMARY_FIELD + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_FIELD_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/fields/{field_id}/duplicate/async/: + post: + operationId: duplicate_table_field + description: >- + Duplicates the table with the provided `table_id` parameter if the + authorized user has access to the database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: field_id + schema: + type: integer + description: The field to duplicate. + required: true + tags: + - Database table fields + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateFieldJobType' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_FIELD_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/fields/{field_id}/unique_row_values/: + get: + operationId: get_database_field_unique_row_values + description: >- + Returns a list of all the unique row values for an existing field, + sorted in order of frequency. + parameters: + - in: path + name: field_id + schema: + type: integer + description: Returns the values related to the provided field. + required: true + - in: query + name: limit + schema: + type: integer + description: Defines how many values should be returned. + - in: query + name: split_comma_separated + schema: + type: boolean + description: >- + Indicates whether the original column values must be splitted by + comma. + tags: + - Database table fields + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UniqueRowValues' + 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 + 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_FIELD_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/fields/table/{table_id}/: + get: + operationId: list_database_table_fields + description: >- + Lists all the fields of the table related to the provided parameter if + the user has access to the related database's workspace. If the + workspace is related to a template, then this endpoint will be publicly + accessible. A table consists of fields and each field can have a + different type. Each type can have different properties. A field is + comparable with a regular table's column. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Returns only the fields of the table related to the provided value. + required: true + tags: + - Database table fields + security: + - JWT: [] + - Database token: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FieldField' + 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 + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_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: '' + post: + operationId: create_database_table_field + description: >- + Creates a new field for the table related to the provided `table_id` + parameter if the authorized user has access to the related database's + workspace. Depending on the type, different properties can optionally be + set.If creating the field causes other fields to change then the + specificinstances of those fields will be included in the related fields + response key. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Creates a new field for the provided table related to the value. + required: true + tags: + - Database table fields + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FieldCreateField' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/FieldCreateField' + multipart/form-data: + schema: + $ref: '#/components/schemas/FieldCreateField' + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FieldFieldSerializerWithRelatedFields' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_FIELD_COUNT_EXCEEDED + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_FIELD_WITH_SAME_NAME_ALREADY_EXISTS + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_FIELD_SELF_REFERENCE + - ERROR_FIELD_CIRCULAR_REFERENCE + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_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/formula/{table_id}/type/: + post: + operationId: type_formula_field + description: >- + Calculates and returns the type of the specified formula value. Does not + change the state of the field in any way. + parameters: + - in: path + name: table_id + schema: + type: integer + description: The table id of the formula field to type. + required: true + tags: + - Database table fields + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TypeFormulaResult' + 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_REQUEST_BODY_VALIDATION + - ERROR_WITH_FORMULA + - ERROR_FIELD_SELF_REFERENCE + 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_TABLE_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/rows/names/: + get: + operationId: list_database_table_row_names + description: >- + Returns the names of the given row of the given tables. The nameof a row + is the primary field value for this row. The result can be usedfor + example, when you want to display the name of a linked row from another + table. + parameters: + - in: query + name: table__{id} + schema: + type: string + description: >- + A list of comma separated row ids to query from the table with id + {id}. For example, if you want the name of row `42` and `43` from + table `28` this parameter will be `table__28=42,43`. You can specify + multiple rows for different tables but every tables must be in the + same database. You need at least read permission on all specified + tables. + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + type: object + properties: + '{table_id}*': + type: object + description: An object containing the row names of table `table_id`. + properties: + '{row_id}*': + type: string + description: >- + the name of the row with id `row_id` from table with + id `table_id`. + 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 + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_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/rows/table/{table_id}/: + get: + operationId: list_database_table_rows + description: >- + Lists all the rows of the table related to the provided parameter if the + user has access to the related database's workspace. The response is + paginated by a page/size style. It is also possible to provide an + optional search query, only rows where the data matches the search query + are going to be returned then. The properties of the returned rows + depends on which fields the table has. For a complete overview of fields + use the **list_database_table_fields** endpoint to list them all. In the + example all field types are listed, but normally the number in + field_{id} key is going to be the id of the field. Or if the GET + parameter `user_field_names` is provided then the keys will be the name + of the field. The value is what the user has provided and the format of + it depends on the fields type. + parameters: + - in: query + name: exclude + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude query parameter. + If you for example provide the following GET parameter + `exclude=field_1,field_2` then the fields with id `1` and id `2` are + going to be excluded from the selection and response. If the + `user_field_names` parameter is provided then instead exclude should + be a comma separated list of the actual field names. For field names + with commas you should surround the name with quotes like so: + `exclude=My Field,"Field With , "`. A backslash can be used to + escape field names which contain double quotes like so: `exclude=My + Field,Field with \"`. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: include + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the include query parameter. + If you for example provide the following GET parameter + `include=field_1,field_2` then only the fields withid `1` and id `2` + are going to be selected and included in the response. If the + `user_field_names` parameter is provided then instead include should + be a comma separated list of the actual field names. For field names + with commas you should surround the name with quotes like so: + `include=My Field,"Field With , "`. A backslash can be used to + escape field names which contain double quotes like so: `include=My + Field,Field with \"`. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). If the `user_field_names` parameter is provided then instead + order_by should be a comma separated list of the actual field names. + For field names with commas you should surround the name with quotes + like so: `order_by=My Field,"Field With , "`. A backslash can be + used to escape field names which contain double quotes like so: + `order_by=My Field,Field with \"`. + - in: query + name: page + schema: + type: integer + description: Defines which page of 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: Defines how many rows should be returned per page. + - in: path + name: table_id + schema: + type: integer + description: Returns the rows of the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + - in: query + name: view_id + schema: + type: integer + description: Includes all the filters and sorts of the provided view. + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_FIELD_DOES_NOT_EXIST + - 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: '' + post: + operationId: create_database_table_row + description: >- + Creates a new row in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** to list them all. None of the fields are + required, if they are not provided the value is going to be `null` or + `false` or some default value is that is set. If you want to add a value + for the field with for example id `10`, the key must be named + `field_10`. Or instead if the `user_field_names` GET param is provided + the key must be the name of the field. Of course multiple fields can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: before + schema: + type: integer + description: >- + If provided then the newly created row will be positioned before the + row with the provided id. + - in: path + name: table_id + schema: + type: integer + description: Creates a row in the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + multipart/form-data: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + - ERROR_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/{row_id}/: + get: + operationId: get_database_table_row + description: >- + Fetches an existing row from the table if the user has access to the + related table's workspace. The properties of the returned row depend on + which fields the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field of the field. Or if the GET parameter + `user_field_names` is provided then the keys will be the name of the + field. The value is what the user has provided and the format of it + depends on the fields type. + parameters: + - in: path + name: row_id + schema: + type: integer + description: Returns the row related the provided value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Returns the row of the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + patch: + operationId: update_database_table_row + description: >- + Updates an existing row in the table if the user has access to the + related table's workspace. The accepted body fields are depending on the + fields that the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. None of the + fields are required, if they are not provided the value is not going to + be updated. When you want to update a value for the field with id `10`, + the key must be named `field_10`. Or if the GET parameter + `user_field_names` is provided the key of the field to update must be + the name of the field. Multiple different fields to update can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: row_id + schema: + type: integer + description: Updates the row related to the value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Updates the row in the table related to the value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + delete: + operationId: delete_database_table_row + description: >- + Deletes an existing row in the table if the user has access to the + table's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: row_id + schema: + type: integer + description: Deletes the row related to the value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Deletes the row in the table related to the value. + required: true + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/{row_id}/adjacent/: + get: + operationId: get_adjacent_database_table_row + description: >- + Fetches the adjacent row to a given row_id in the table with the given + table_id. If the previous flag is set it will return the previous row, + otherwise it will return the next row. You can specifya view_id and it + will apply the filters and sorts of the provided view. + parameters: + - in: query + name: previous + schema: + type: boolean + description: >- + A flag query parameter which if provided returns theprevious row to + the specified row_id. If it's not setit will return the next row. + - in: path + name: row_id + schema: + type: integer + description: Returns the row adjacent the provided value. + required: true + - in: query + name: search + schema: + type: string + description: >- + If provided, the adjacent row will be one that matchesthe search + query. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: table_id + schema: + type: integer + description: Returns the row of the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + - in: query + name: view_id + schema: + type: integer + description: Applies the filters and sorts of the provided view. + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + description: '' + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + - 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/rows/table/{table_id}/{row_id}/history/: + get: + operationId: get_database_table_row_history + description: >- + Fetches the row change history of a given row_id in the table with the + given table_id. The row change history is paginated and can be limited + with the limit and offset query parameters. + parameters: + - in: query + name: limit + schema: + type: integer + description: The maximum number of row change history entries to return. + - in: query + name: offset + schema: + type: integer + description: The offset of the row change history entries to return. + - in: path + name: row_id + schema: + type: integer + description: The id of the row to fetch the change history from. + required: true + - in: path + name: table_id + schema: + type: integer + description: The id of the table to fetch the row change history from. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerRowHistory' + description: '' + '204': + description: No response body + '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 + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/{row_id}/move/: + patch: + operationId: move_database_table_row + description: >- + Moves the row related to given `row_id` parameter to another position. + It is only possible to move the row before another existing row or to + the end. If the `before_id` is provided then the row related to the + `row_id` parameter is moved before that row. If the `before_id` + parameter is not provided, then the row will be moved to the end. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: before_id + schema: + type: integer + description: >- + Moves the row related to the given `row_id` before the row related + to the provided value. If not provided, then the row will be moved + to the end. + - in: path + name: row_id + schema: + type: integer + description: Moves the row related to the value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Moves the row in the table related to the value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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 + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/batch/: + post: + operationId: batch_create_database_table_rows + description: >- + Creates new rows in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** to list them all. None of the fields are + required, if they are not provided the value is going to be `null` or + `false` or some default value is that is set. If you want to add a value + for the field with for example id `10`, the key must be named + `field_10`. Or instead if the `user_field_names` GET param is provided + the key must be the name of the field. Of course multiple fields can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + + **WARNING:** This endpoint doesn't yet work with row created webhooks. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: before + schema: + type: integer + description: >- + If provided then the newly created rows will be positioned before + the row with the provided id. + - in: path + name: table_id + schema: + type: integer + description: Creates the rows in the table. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + required: true + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsResponse' + 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_REQUEST_BODY_VALIDATION + - ERROR_ROW_IDS_NOT_UNIQUE + - ERROR_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + patch: + operationId: batch_update_database_table_rows + description: >- + Updates existing rows in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. None of the + fields are required, if they are not provided the value is not going to + be updated. When you want to update a value for the field with id `10`, + the key must be named `field_10`. Or if the GET parameter + `user_field_names` is provided the key of the field to update must be + the name of the field. Multiple different fields to update can be + provided for each row. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + + **WARNING:** This endpoint doesn't yet work with row updated webhooks. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Updates the rows in the table. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsResponse' + 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_REQUEST_BODY_VALIDATION + - ERROR_ROW_IDS_NOT_UNIQUE + - ERROR_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/batch-delete/: + post: + operationId: batch_delete_database_table_rows + description: >- + Deletes existing rows in the table if the user has access to the table's + workspace. + + **WARNING:** This endpoint doesn't yet work with row deleted webhooks. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Deletes the rows in the table related to the value. + required: true + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + required: true + security: + - JWT: [] + - Database token: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + - ERROR_ROW_IDS_NOT_UNIQUE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/tables/{table_id}/: + get: + operationId: get_database_table + description: >- + Returns the requested table if the authorized user has access to the + related database's workspace. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Returns the table related to the provided value. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + 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 + 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_TABLE_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: '' + patch: + operationId: update_database_table + description: >- + Updates the existing table if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Updates the table related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + 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_REQUEST_BODY_VALIDATION + 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_TABLE_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: '' + delete: + operationId: delete_database_table + description: >- + Deletes the existing table if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Deletes the table related to the provided value. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TABLE_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/tables/{table_id}/duplicate/async/: + post: + operationId: duplicate_database_table_async + description: >- + Start a job to duplicate the table with the provided `table_id` + parameter if the authorized user has access to the database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: The table to duplicate. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateTableJobType' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_TABLE_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/tables/{table_id}/import/async/: + post: + operationId: import_data_database_table_async + description: >- + Import data in the specified table if the authorized user has access to + the related database's workspace. This endpoint is asynchronous and + return the created job to track the progress of the task. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Import data into the table related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableImport' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableImport' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableImport' + required: true + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleFileImportJobSerializerClass' + 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 + 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_TABLE_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/tables/database/{database_id}/: + get: + operationId: list_database_tables + description: >- + Lists all the tables that are in the database related to the + `database_id` parameter if the user has access to the database's + workspace. A table is exactly as the name suggests. It can hold multiple + fields, each having their own type and multiple rows. They can be added + via the **create_database_table_field** and + **create_database_table_row** endpoints. + parameters: + - in: path + name: database_id + schema: + type: integer + description: Returns only tables that are related to the provided value. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Table' + 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 + 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_APPLICATION_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: '' + post: + operationId: create_database_table + description: >- + Creates synchronously a new table for the database related to the + provided `database_id` parameter if the authorized user has access to + the database's workspace. + + + As an alternative you can use the `create_async_database_table` for + better performances and importing bigger files. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: database_id + schema: + type: integer + description: Creates a table for the database related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + 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_REQUEST_BODY_VALIDATION + - ERROR_INVALID_INITIAL_TABLE_DATA + - ERROR_INITIAL_TABLE_DATA_LIMIT_EXCEEDED + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_INITIAL_TABLE_DATA_HAS_DUPLICATE_NAMES + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_APPLICATION_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/tables/database/{database_id}/async/: + post: + operationId: create_database_table_async + description: >- + Creates a job that creates a new table for the database related to the + provided `database_id` parameter if the authorized user has access to + the database's workspace. This endpoint is asynchronous and return the + created job to track the progress of the task. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: database_id + schema: + type: integer + description: Creates a table for the database related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableCreate' + required: true + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleFileImportJobSerializerClass' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_APPLICATION_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/tables/database/{database_id}/order/: + post: + operationId: order_database_tables + description: >- + Changes the order of the provided table ids to the matching position + that the id has in the list. If the authorized user does not belong to + the workspace it will be ignored. The order of the not provided tables + will be set to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: database_id + schema: + type: integer + description: >- + Updates the order of the tables in the database related to the + provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderTables' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderTables' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderTables' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_TABLE_NOT_IN_DATABASE + 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_APPLICATION_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/tokens/: + get: + operationId: list_database_tokens + description: >- + Lists all the database tokens that belong to the authorized user. A + token can be used to create, read, update and delete rows in the tables + of the token's workspace. It only works on the tables if the token has + the correct permissions. The **Database table rows** endpoints can be + used for these operations. + tags: + - Database tokens + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Token' + description: '' + post: + operationId: create_database_token + description: >- + Creates a new database token for a given workspace and for the + authorized user. + tags: + - Database tokens + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + 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_REQUEST_BODY_VALIDATION + 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/tokens/{token_id}/: + get: + operationId: get_database_token + description: >- + Returns the requested database token if it is owned by the authorized + user andif the user has access to the related workspace. + parameters: + - in: path + name: token_id + schema: + type: integer + description: Returns the database token related to the provided value. + required: true + tags: + - Database tokens + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + 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 + 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_TOKEN_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: '' + patch: + operationId: update_database_token + description: >- + Updates the existing database token if it is owned by the authorized + user and ifthe user has access to the related workspace. + parameters: + - in: path + name: token_id + schema: + type: integer + description: Updates the database token related to the provided value. + required: true + tags: + - Database tokens + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + 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_REQUEST_BODY_VALIDATION + - ERROR_DATABASE_DOES_NOT_BELONG_TO_GROUP + - ERROR_TABLE_DOES_NOT_BELONG_TO_GROUP + 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_TOKEN_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: '' + delete: + operationId: delete_database_token + description: >- + Deletes the existing database token if it is owned by the authorized + user and ifthe user has access to the related workspace. + parameters: + - in: path + name: token_id + schema: + type: integer + description: Deletes the database token related to the provided value. + required: true + tags: + - Database tokens + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_TOKEN_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/tokens/check/: + get: + operationId: check_database_token + description: >- + This endpoint check be used to check if the provided personal API token + is valid. If returns a `200` response if so and a `403` is not. This can + be used by integrations like Zapier or n8n to test if a token is valid. + tags: + - Database tokens + security: + - Database token: [] + responses: + '200': + description: No response body + '403': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TOKEN_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/view/{view_id}/premium: + patch: + operationId: premium_view_attributes_update + description: Sets view attributes only available for premium users. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Sets show_logo of this view. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/View' + 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_FEATURE_NOT_AVAILABLE + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_CANNOT_UPDATE_PREMIUM_ATTRIBUTES_ON_TEMPLATE + 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/{slug}/link-row-field-lookup/{field_id}/: + get: + operationId: database_table_public_view_link_row_field_lookup + description: >- + If the view is publicly shared or if an authenticated user has access to + the related workspace, then this endpoint can be used to do a value + lookup of the link row fields that are included in the view. Normally it + is not possible for a not authenticated visitor to fetch the rows of a + table. This endpoint makes it possible to fetch the id and primary field + value of the related table of a link row included in the view. + parameters: + - in: path + name: field_id + schema: + type: integer + description: The field id of the link row field. + required: true + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: slug + schema: + type: string + description: The slug related to the view. + required: true + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerLinkRowValue' + 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: '' + '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 + - ERROR_FIELD_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/{slug}/public/auth/: + post: + operationId: public_view_token_auth + description: >- + Returns a valid never-expiring JWT token for this public shared view if + the password provided matches with the one saved by the view's owner. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug of the grid view to get public information about. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + required: true + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewAuthResponse' + description: '' + '401': + content: + application/json: + schema: + description: The password provided for this view is incorrect + 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/{slug}/public/info/: + get: + operationId: get_public_view_info + description: Returns the required public information to display a single shared view. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug of the view to get public information about. + required: true + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewInfo' + 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 + 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: '' + '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: '' + '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/{view_id}/: + get: + operationId: get_database_table_view + description: >- + Returns the existing view. Depending on the type different + propertiescould be returned. + parameters: + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on the + returned view. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: path + name: view_id + schema: + type: integer + description: Returns the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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 + 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: '' + patch: + operationId: update_database_table_view + description: >- + Updates the existing view. The type cannot be changed. It depends on the + existing type which properties can be changed. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on the + returned view. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: path + name: view_id + schema: + type: integer + description: Updates the view related to the provided value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + 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: '' + delete: + operationId: delete_database_table_view + description: >- + Deletes the existing view. Note that all the related settings of the + view are going to be deleted also. The data stays intact after deleting + the view because this is related to the table and not the view. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Deletes the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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/{view_id}/decorations/: + get: + operationId: list_database_table_view_decorations + description: >- + Lists all decorations of the view related to the provided `view_id` if + the user has access to the related database's workspace. A view can have + multiple decorations. View decorators can be used to decorate rows. This + can, for example, be used to change the border or background color of a + row if it matches certain conditions. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only decoration of the view given to the provided value. + required: true + tags: + - Database table view decorations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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 + 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: '' + post: + operationId: create_database_table_view_decoration + description: >- + Creates a new decoration for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a decoration for the view related to the given value. + required: true + tags: + - Database table view decorations + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + multipart/form-data: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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_REQUEST_BODY_VALIDATION + 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/{view_id}/duplicate/: + post: + operationId: duplicate_database_table_view + description: >- + Duplicates an existing view if the user has access to it. When a view is + duplicated everything is copied except: + + - The name is appended with the copy number. Ex: + `ViewName`->`ViewName(2)` and `View(2)`->`View(3)` + + - If the original view is publicly shared, the new view will not be + shared anymore + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Duplicates the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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 + 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/{view_id}/field-options/: + get: + operationId: get_database_table_view_field_options + description: >- + Responds with the fields options of the provided view if the + authenticated user has access to the related workspace. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Responds with field options related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFieldOptions' + 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_VIEW_DOES_NOT_SUPPORT_FIELD_OPTIONS + 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: '' + patch: + operationId: update_database_table_view_field_options + description: >- + Updates the field options of a view. The field options differ per field + type This could for example be used to update the field width of a + `grid` view if the user changes it. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Updates the field options related to the provided value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFieldOptions' + 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_VIEW_DOES_NOT_SUPPORT_FIELD_OPTIONS + 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/{view_id}/filter-groups/: + post: + operationId: create_database_table_view_filter_group + description: >- + Creates a new filter group for the view related to the provided + `view_id` parameter. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: The ID of the view where create the new filter group. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + 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_REQUEST_BODY_VALIDATION + 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/{view_id}/filters/: + get: + operationId: list_database_table_view_filters + description: >- + Lists all filters of the view related to the provided `view_id`. A view + can have multiple filters. When all the rows are requested for the view + only those that apply to the filters are returned. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only filters of the view related to the provided value. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + 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 + 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: '' + post: + operationId: create_database_table_view_filter + description: >- + Creates a new filter for the view related to the provided `view_id` + parameter. When the rows of a view are requested, for example via the + `list_database_table_grid_view_rows` endpoint, then only the rows that + apply to all the filters are going to be returned. A filter compares the + value of a field to the value of a filter. It depends on the type how + values are going to be compared. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a filter for the view related to the provided value. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewFilter' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_FILTER_NOT_SUPPORTED + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + 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 + - ERROR_VIEW_FILTER_GROUP_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/{view_id}/group_bys/: + get: + operationId: list_database_table_view_groupings + description: >- + Lists all groupings of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple groupings. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only groupings of the view related to the provided value. + required: true + tags: + - Database table view groupings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + 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 + 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: '' + post: + operationId: create_database_table_view_group + description: >- + Creates a new group by for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a group by for the view related to the provided value. + required: true + tags: + - Database table view groupings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + 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_REQUEST_BODY_VALIDATION + - ERROR_VIEW_GROUP_BY_NOT_SUPPORTED + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_GROUP_BY_FIELD_ALREADY_EXISTS + - ERROR_VIEW_GROUP_BY_FIELD_NOT_SUPPORTED + 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/{view_id}/rotate-slug/: + post: + operationId: rotate_database_view_slug + description: >- + Rotates the unique slug of the view by replacing it with a new value. + This would mean that the publicly shared URL of the view will change. + Anyone with the old URL won't be able to access the viewanymore. Only + view types which are sharable can have their slugs rotated. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Rotates the slug of the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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_CANNOT_SHARE_VIEW_TYPE + 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/{view_id}/sortings/: + get: + operationId: list_database_table_view_sortings + description: >- + Lists all sortings of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple sortings. When all the rows are requested they will be in the + desired order. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only sortings of the view related to the provided value. + required: true + tags: + - Database table view sortings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewSort' + 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 + 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: '' + post: + operationId: create_database_table_view_sort + description: >- + Creates a new sort for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. When the rows of a view are requested, for example via the + `list_database_table_grid_view_rows` endpoint, they will be returned in + the respected order defined by all the sortings. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a sort for the view related to the provided value. + required: true + tags: + - Database table view sortings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewSort' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewSort' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewSort' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + 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_REQUEST_BODY_VALIDATION + - ERROR_VIEW_SORT_NOT_SUPPORTED + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_SORT_FIELD_ALREADY_EXISTS + - ERROR_VIEW_SORT_FIELD_NOT_SUPPORTED + 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/{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. + + + This is a **premium** feature. + parameters: + - 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 should be returned by default. This value can + be overwritten per select option. + - 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: + - 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_CALENDAR_VIEW_HAS_NO_DATE_FIELD + 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: '' + '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: '' + '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: 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 should be returned by default. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: + - 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 + 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/decoration/{view_decoration_id}/: + get: + operationId: get_database_table_view_decoration + description: >- + Returns the existing view decoration if the current user has access to + the related database's workspace. + parameters: + - in: path + name: view_decoration_id + schema: + type: integer + description: Returns the view decoration related to the provided id. + required: true + tags: + - Database table view decorations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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 + 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_DECORATION_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: '' + patch: + operationId: update_database_table_view_decoration + description: >- + Updates the existing decoration if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_decoration_id + schema: + type: integer + description: Updates the view decoration related to the provided value. + required: true + tags: + - Database table view decorations + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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 + 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_DECORATION_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: '' + delete: + operationId: delete_database_table_view_decoration + description: >- + Deletes the existing decoration if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_decoration_id + schema: + type: integer + description: Deletes the decoration related to the provided value. + required: true + tags: + - Database table view decorations + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_DECORATION_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/filter-group/{filter_group_id}/: + get: + operationId: get_database_table_view_filter_group + description: >- + Returns the existing view filter group with the given + `view_filter_group_id`. + parameters: + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - in: path + name: view_filter_group_id + schema: + type: integer + description: Teh ID of the view filter group to return. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + 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 + 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_FILTER_GROUP_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: '' + patch: + operationId: update_database_table_view_filter_group + description: Updates the existing filter group with the given `view_filter_group_id`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - in: path + name: view_filter_group_id + schema: + type: integer + description: The ID of the view filter group to update. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + 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_REQUEST_BODY_VALIDATION + 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_FILTER_GROUP_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: '' + delete: + operationId: delete_database_table_view_filter_group + description: Deletes the existing filter group with the given `view_filter_group_id`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - in: path + name: view_filter_group_id + schema: + type: integer + description: The ID of the view filter group to delete. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_FILTER_GROUP_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/filter/{view_filter_id}/: + get: + operationId: get_database_table_view_filter + description: Returns the existing view filter. + parameters: + - in: path + name: view_filter_id + schema: + type: integer + description: The ID of the view filter to return. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + 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 + 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_FILTER_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: '' + patch: + operationId: update_database_table_view_filter + description: Updates the existing filter. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_filter_id + schema: + type: integer + description: The ID of the view filter to update. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_FILTER_NOT_SUPPORTED + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + 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_FILTER_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: '' + delete: + operationId: delete_database_table_view_filter + description: >- + Deletes the existing filter if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_filter_id + schema: + type: integer + description: The ID of the view filter to delete. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_FILTER_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/form/{slug}/submit/: + get: + operationId: get_meta_database_table_form_view + description: >- + Returns the metadata related to the form view if the form is publicly + shared or if the user has access to the related workspace. This data can + be used to construct a form with the right fields. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug related to the form form. + required: true + tags: + - Database table form view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicFormView' + description: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_PUBLICLY_SHARED_FORM + 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_FORM_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: '' + post: + operationId: submit_database_table_form_view + description: >- + Submits the form if the form is publicly shared or if the user has + access to the related workspace. The provided data will be validated + based on the fields that are in the form and the rules per field. If + valid, a new row will be created in the table. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug related to the form. + required: true + tags: + - Database table form view + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FormViewSubmitted' + description: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_PUBLICLY_SHARED_FORM + 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_FORM_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/form/{slug}/upload-file/: + post: + operationId: upload_file_form_view + description: >- + Uploads a file anonymously to Baserow by uploading the file contents + directly. A `file` multipart is expected containing the file contents. + parameters: + - in: path + name: slug + schema: + type: string + description: >- + Submits files only if the view with the provided slughas a public + file field. + required: true + tags: + - Database table form view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + - ERROR_VIEW_HAS_NO_PUBLIC_FILE_FIELD + 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: '' + '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: '' + '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/gallery/{slug}/public/rows/: + get: + operationId: public_list_database_table_gallery_view_rows + description: >+ + Lists the requested rows of the view's table related to the provided + `slug` if the gallery view is public.The response is paginated either by + a limit/offset or page/size style. The style depends on the provided GET + parameters. The properties of the returned rows depends on which fields + the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. The value is what the user has provided + and the format of it depends on the fields type. + + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - in: query + name: exclude_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list allowing the values of `field_options` 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. + - in: query + name: include_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - in: path + name: slug + schema: + type: string + description: Returns only rows that belong to the related view. + required: true + tags: + - Database table gallery view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PublicPaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse + 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_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: '' + '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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GALLERY_DOES_NOT_EXIST + - ERROR_FIELD_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/gallery/{view_id}/: + get: + operationId: list_database_table_gallery_view_rows + description: >- + Lists the requested rows of the view's table related to the provided + `view_id` if the authorized user has access to the database's workspace. + The response is paginated by a limit/offset style. + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - 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 should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: view_id + schema: + type: integer + description: Returns only rows that belong to the related view's table. + required: true + tags: + - Database table gallery view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse + 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_FILTER_FIELD_NOT_FOUND + - ERROR_VIEW_FILTER_TYPE_DOES_NOT_EXIST + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + - ERROR_FILTERS_PARAM_VALIDATION_ERROR + - ERROR_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + 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_GALLERY_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/grid/{slug}/public/rows/: + get: + operationId: public_list_database_table_grid_view_rows + description: >+ + Lists the requested rows of the view's table related to the provided + `slug` if the grid view is public.The response is paginated either by a + limit/offset or page/size style. The style depends on the provided GET + parameters. The properties of the returned rows depends on which fields + the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. The value is what the user has provided + and the format of it depends on the fields type. + + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - in: query + name: exclude_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: group_by + schema: + type: string + description: >- + Optionally the rows can be grouped by provided field ids separated + by comma. By default no groups are applied. This doesn't actually + responds with the rows groups, this is just what's needed for the + Baserow group by feature. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list allowing the values of `field_options` 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. + - in: query + name: include_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - in: path + name: slug + schema: + type: string + description: Returns only rows that belong to the related view. + required: true + tags: + - Database table grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PublicPaginationSerializerWithGridViewFieldOptionsExampleRowResponse + 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_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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: '' + '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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GRID_DOES_NOT_EXIST + - ERROR_FIELD_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/grid/{view_id}/: + get: + operationId: list_database_table_grid_view_rows + description: >- + Lists the requested rows of the view's table related to the provided + `view_id` if the authorized user has access to the database's workspace. + The response is paginated either by a limit/offset or page/size style. + The style depends on the provided GET parameters. The properties of the + returned rows depends on which fields the table has. For a complete + overview of fields use the **list_database_table_fields** endpoint to + list them all. In the example all field types are listed, but normally + the number in field_{id} key is going to be the id of the field. The + value is what the user has provided and the format of it depends on the + fields type. + + + The filters and sortings are automatically applied. To get a full + overview of the applied filters and sortings you can use the + `list_database_table_view_filters` and + `list_database_table_view_sortings` endpoints. + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - in: query + name: exclude_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - 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: include_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - 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 grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWithGridViewFieldOptionsExampleRowResponse + 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_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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_GRID_DOES_NOT_EXIST + - ERROR_FIELD_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: '' + post: + operationId: filter_database_table_grid_view_rows + description: >- + Lists only the rows and fields that match the request. Only the rows + with the ids that are in the `row_ids` list are going to be returned. + Same goes for the fields, only the fields with the ids in the + `field_ids` are going to be returned. This endpoint could be used to + refresh data after changes something. For example in the web frontend + after changing a field type, the data of the related cells will be + refreshed using this endpoint. In the example all field types are + listed, but normally the number in field_{id} key is going to be the id + of the field. The value is what the user has provided and the format of + it depends on the fields type. + parameters: + - 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 grid view + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GridViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/GridViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/GridViewFilter' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + 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_REQUEST_BODY_VALIDATION + 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_GRID_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/grid/{view_id}/aggregation/{field_id}/: + get: + operationId: get_database_table_grid_view_field_aggregation + description: >- + Computes the aggregation of all the values for a specified field from + the selected grid view. You must select the aggregation type by setting + the `type` GET parameter. If filters are configured for the selected + view, the aggregation is calculated only on filtered rows. You need to + have read permissions on the view to request an aggregation. + parameters: + - in: path + name: field_id + schema: + type: integer + description: The field id you want to aggregate + required: true + - in: query + name: include + schema: + type: string + description: >- + if `include` is set to `total`, the total row count will be returned + with the result. + - in: query + name: type + schema: + type: string + description: >- + The aggregation type you want. Available aggregation types: + empty_count, not_empty_count, unique_count, min, max, sum, average, + median, decile, variance, std_dev + - in: path + name: view_id + schema: + type: integer + description: Select the view you want the aggregation for. + required: true + tags: + - Database table grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + value: + anyOf: + - type: number + description: The aggregation result for the specified field. + example: 5 + - type: string + description: The aggregation result for the specified field. + - type: array + items: {} + description: The aggregation result for the specified field. + - type: object + description: The aggregation result for the specified field. + total: + type: integer + description: >- + The total value count. Only returned if `include=total` is + specified as GET parameter. + example: 7 + required: + - value + 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_AGGREGATION_TYPE_DOES_NOT_EXIST + - ERROR_FIELD_NOT_IN_TABLE + 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_FIELD_DOES_NOT_EXIST + - ERROR_GRID_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/grid/{view_id}/aggregations/: + get: + operationId: get_database_table_grid_view_field_aggregations + description: >- + Returns all field aggregations values previously defined for this grid + view. If filters exist for this view, the aggregations are computed only + on filtered rows.You need to have read permissions on the view to + request aggregations. + parameters: + - in: query + name: filter__{field}__{filter} + schema: + type: string + description: >- + The aggregation 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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 aggregated rows must match all the + provided filters. + + `OR`: Indicates that the aggregated 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 for the + aggregation. The filter tree is a nested structure containing the + filters that need to be applied. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - in: query + name: include + schema: + type: string + description: >- + if `include` is set to `total`, the total row count will be returned + with the result. + - in: query + name: search + schema: + type: string + description: If provided the aggregations are calculated only for matching rows. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: view_id + schema: + type: integer + description: Select the view you want the aggregations for. + required: true + tags: + - Database table grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + field_{id}: + anyOf: + - type: number + description: The aggregation result for the field with id {id}. + example: 5 + - type: string + description: The aggregation result for the field with id {id}. + - type: array + items: {} + description: The aggregation result for the field with id {id}. + - type: object + description: The aggregation result for the field with id {id}. + total: + type: integer + description: >- + The total value count. Only returned if `include=total` is + specified as GET parameter. + example: 7 + 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_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_GRID_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/group_by/{view_group_by_id}/: + get: + operationId: get_database_table_view_group + description: >- + Returns the existing view group by if the authorized user has access to + the related database's workspace. + parameters: + - in: path + name: view_group_by_id + schema: + type: integer + description: Returns the view group by related to the provided value. + required: true + tags: + - Database table view groupings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + 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 + 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_GROUP_BY_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: '' + patch: + operationId: update_database_table_view_group + description: >- + Updates the existing group by if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_group_by_id + schema: + type: integer + description: Updates the view group by related to the provided value. + required: true + tags: + - Database table view groupings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + 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_FIELD_NOT_IN_TABLE + - ERROR_VIEW_GROUP_BY_FIELD_ALREADY_EXISTS + 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_GROUP_BY_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: '' + delete: + operationId: delete_database_table_view_group + description: >- + Deletes the existing group by if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_group_by_id + schema: + type: integer + description: Deletes the group by related to the provided value. + required: true + tags: + - Database table view groupings + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_GROUP_BY_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/kanban/{slug}/public/rows/: + get: + operationId: public_list_database_table_kanban_view_rows + description: >- + Responds with serialized rows grouped by the view's single select field + options related to the `slug` if the kanban view is publicly shared. + Additional query parameters can be provided to control the `limit` and + `offset` per select option. + + + 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: limit + schema: + type: integer + description: >- + Defines how many rows should be returned by default. This value can + be overwritten per select option. + - 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: query + name: select_option + schema: + type: string + description: >- + Accepts multiple `select_option` parameters. If not provided, the + rows of all select options will be returned. If one or more + `select_option` parameters are provided, then only the rows of those + will be included in the response. + `?select_option=1&select_option=null` will only include the rows for + both select option with id `1` and `null`. `?select_option=1,10,20` + will only include the rows of select option id `1` with a limit of + `10` and and offset of `20`. + - in: path + name: slug + schema: + type: string + description: Returns only rows that belong to the related view. + required: true + tags: + - Database table kanban view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KanbanViewExampleResponse' + 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_KANBAN_VIEW_HAS_NO_SINGLE_SELECT_FIELD + - ERROR_VIEW_FILTER_TYPE_DOES_NOT_EXIST + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + - ERROR_FILTER_FIELD_NOT_FOUND + - 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: '' + '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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_KANBAN_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/kanban/{view_id}/: + get: + operationId: list_database_table_kanban_view_rows + description: >- + Responds with serialized rows grouped by the view's single select field + options if the user is authenticated and has access to the related + workspace. Additional query parameters can be provided to control the + `limit` and `offset` per select option. + + + 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - 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 should be returned by default. This value can + be overwritten per select option. + - 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: query + name: select_option + schema: + type: string + description: >- + Accepts multiple `select_option` parameters. If not provided, the + rows of all select options will be returned. If one or more + `select_option` parameters are provided, then only the rows of those + will be included in the response. + `?select_option=1&select_option=null` will only include the rows for + both select option with id `1` and `null`. `?select_option=1,10,20` + will only include the rows of select option id `1` with a limit of + `10` and and offset of `20`. + - 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 kanban view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KanbanViewExampleResponse' + 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_KANBAN_VIEW_HAS_NO_SINGLE_SELECT_FIELD + - ERROR_INVALID_SELECT_OPTION_PARAMETER + - 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_KANBAN_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/sort/{view_sort_id}/: + get: + operationId: get_database_table_view_sort + description: >- + Returns the existing view sort if the authorized user has access to the + related database's workspace. + parameters: + - in: path + name: view_sort_id + schema: + type: integer + description: Returns the view sort related to the provided value. + required: true + tags: + - Database table view sortings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + 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 + 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_SORT_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: '' + patch: + operationId: update_database_table_view_sort + description: >- + Updates the existing sort if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_sort_id + schema: + type: integer + description: Updates the view sort related to the provided value. + required: true + tags: + - Database table view sortings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + 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_FIELD_NOT_IN_TABLE + - ERROR_VIEW_SORT_FIELD_ALREADY_EXISTS + 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_SORT_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: '' + delete: + operationId: delete_database_table_view_sort + description: >- + Deletes the existing sort if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_sort_id + schema: + type: integer + description: Deletes the sort related to the provided value. + required: true + tags: + - Database table view sortings + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_SORT_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/table/{table_id}/: + get: + operationId: list_database_table_views + description: >- + Lists all views of the table related to the provided `table_id`. If the + workspace is related to a template, then this endpoint will be publicly + accessible. A table can have multiple views. Each view can display the + data in a different way. For example the `grid` view shows the in a + spreadsheet like way. That type has custom endpoints for data retrieval + and manipulation. In the future other views types like a calendar or + Kanban are going to be added. Each type can have different properties. + parameters: + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on each view + in the response. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: query + name: limit + schema: + type: integer + description: >- + The maximum amount of views that must be returned. This endpoint + doesn't support pagination, but if you for example just need to + fetch the first view, you can do that by setting a limit. There + isn't a limit by default. + - in: path + name: table_id + schema: + type: integer + description: Returns only views of the table related to the provided value. + required: true + - in: query + name: type + schema: + type: string + description: >- + Optionally filter on the view type. If provided, only views of that + type will be returned. + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewView' + 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 + 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_TABLE_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: '' + post: + operationId: create_database_table_view + description: >- + Creates a new view for the table related to the provided `table_id` + parameter. Depending on the type, different properties can optionally be + set. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on each view + in the response. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: path + name: table_id + schema: + type: integer + description: Creates a view for the table related to the provided value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ViewCreateView' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ViewCreateView' + multipart/form-data: + schema: + $ref: '#/components/schemas/ViewCreateView' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + 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_TABLE_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/table/{table_id}/order/: + post: + operationId: order_database_table_views + description: >- + Changes the order of the provided view ids to the matching position that + the id has in the list. The order of the not provided views will be set + to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: >- + Updates the order of the views in the table related to the provided + value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderViews' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderViews' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderViews' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_VIEW_NOT_IN_TABLE + 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_TABLE_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/webhooks/{webhook_id}/: + get: + operationId: get_database_table_webhook + description: >- + Returns the existing webhook if the authorized user has access to the + related database workspace. + parameters: + - in: path + name: webhook_id + schema: + type: integer + description: Returns the webhook related to the provided value. + required: true + tags: + - Database table webhooks + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + 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 + 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_TABLE_WEBHOOK_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: '' + patch: + operationId: update_database_table_webhook + description: >- + Updates the existing view if the authorized user has access to the + related database workspace. + parameters: + - in: path + name: webhook_id + schema: + type: integer + description: Updates the webhook related to the provided value. + required: true + tags: + - Database table webhooks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + 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 + 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_TABLE_WEBHOOK_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: '' + delete: + operationId: delete_database_table_webhook + description: >- + Deletes the existing webhook if the authorized user has access to the + related database's workspace. + parameters: + - in: path + name: webhook_id + schema: + type: integer + description: Deletes the webhook related to the provided value. + required: true + tags: + - Database table webhooks + security: + - JWT: [] + responses: + '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 + 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_TABLE_WEBHOOK_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/webhooks/table/{table_id}/: + get: + operationId: list_database_table_webhooks + description: >- + Lists all webhooks of the table related to the provided `table_id` if + the user has access to the related database workspace. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Returns only webhooks of the table related to this value. + required: true + tags: + - Database table webhooks + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TableWebhook' + 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 + 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_TABLE_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: '' + post: + operationId: create_database_table_webhook + description: >- + Creates a new webhook for the table related to the provided `table_id` + parameter if the authorized user has access to the related database + workspace. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Creates a webhook for the table related to the provided value. + required: true + tags: + - Database table webhooks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + 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_TABLE_WEBHOOK_MAX_LIMIT_EXCEEDED + 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_TABLE_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/webhooks/table/{table_id}/test-call/: + post: + operationId: test_call_database_table_webhook + description: >- + This endpoint triggers a test call based on the provided data if the + user has access to the workspace related to the table. The test call + will be made immediately and a copy of the request, response and status + will be included in the response. + parameters: + - in: path + name: table_id + schema: + type: integer + description: The id of the table that must be tested. + required: true + tags: + - Database table webhooks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookTestCallResponse' + 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 + 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_TABLE_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/groups/: + get: + operationId: list_groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the groups of the authorized user. A group can contain multiple applications like a database. Multiple users can have access to a group. For example each company could have their own group containing databases related to that company. The order of the groups are custom for each user. The order is configurable via the **order_groups** endpoint. + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + post: + operationId: create_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [create_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new group where only the authorized user has access to. No initial data like database applications are added, they have to be created via other endpoints. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Workspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/Workspace' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + /api/groups/{group_id}/: + patch: + operationId: update_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Updates the existing group related to the provided `group_id` parameter if the authorized user belongs to the group. It is not yet possible to add additional users to a group. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: Updates the group related to the provided value. + required: true + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + 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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + delete: + operationId: delete_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes an existing group if the authorized user belongs to the group. All the applications, databases, tables etc that were in the group are going to be deleted also. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: Deletes the group related to the provided value. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_GROUP_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/groups/{group_id}/leave/: + post: + operationId: leave_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [leave_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Makes the authenticated user leave the group related to the provided `group_id` if the user is in that group. If the user is the last admin in the group, they will not be able to leave it. There must always be one admin in the group, otherwise it will be left without control. If that is the case, they must either delete the group or give another member admin permissions first. + parameters: + - in: path + name: group_id + schema: + type: integer + description: Leaves the group related to the value. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_GROUP_USER_IS_LAST_ADMIN + 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_GROUP_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/groups/{group_id}/permissions/: + get: + operationId: group_permissions + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_permissions](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns a the permission data necessary to determine the permissions of a specific user over a specific group. + See `core.handler.CoreHandler.get_permissions()` for more details. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group id we want the permission object for. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PermissionObject' + description: '' + '404': + 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_GROUP_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/groups/invitations/{group_invitation_id}/: + get: + operationId: get_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [get_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns the requested group invitation if the authorized user has admin right to the related group + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Returns the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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: '' + patch: + operationId: update_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Updates the existing group invitation related to the provided `group_invitation_id` param if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Updates the group invitation related to the provided value. + required: true + tags: + - Group invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_INVITATION_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: '' + delete: + operationId: delete_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes a group invitation if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Deletes the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/groups/invitations/{group_invitation_id}/accept/: + post: + operationId: accept_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [accept_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Accepts a group invitation with the given id if the email address of the user matches that of the invitation. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Accepts the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/groups/invitations/{group_invitation_id}/reject/: + post: + operationId: reject_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [reject_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Rejects a group invitation with the given id if the email address of the user matches that of the invitation. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Rejects the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/groups/invitations/group/{group_id}/: + get: + operationId: list_group_invitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspace_invitations](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the group invitations of the group related to the provided `group_id` parameter if the authorized user has admin rights to that group. + parameters: + - in: path + name: group_id + schema: + type: integer + description: >- + Returns only invitations that are in the group related to the + provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + post: + operationId: create_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [create_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new group invitations for an email address if the authorized user has admin rights to the related group. An email containing a sign up link will be send to the user. + parameters: + - in: path + name: group_id + schema: + type: integer + description: >- + Creates a group invitation to the group related to the provided + value. + required: true + tags: + - Group invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_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/groups/invitations/token/{token}/: + get: + operationId: get_group_invitation_by_token + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [get_workspace_invitation_by_token](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Responds with the serialized group invitation if an invitation with the provided token is found. + parameters: + - in: path + name: token + schema: + type: string + description: Returns the group invitation related to the provided token. + required: true + tags: + - Group invitations + security: + - JWT: [] + - {} + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserWorkspaceInvitation' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - BAD_TOKEN_SIGNATURE + 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_GROUP_INVITATION_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/groups/order/: + post: + operationId: order_groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [order_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Changes the order of the provided group ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order will be custom for each user. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + required: true + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + /api/groups/users/{group_user_id}/: + patch: + operationId: update_group_user + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace_user](https://api.baserow.io).** + + Updates the existing group user related to the provided `group_user_id` param if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_user_id + schema: + type: integer + description: Updates the group user related to the provided value. + required: true + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUser' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_USER_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: '' + delete: + operationId: delete_group_user + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace_user](https://api.baserow.io).** + + Deletes a group user if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_user_id + schema: + type: integer + description: Deletes the group user related to the provided value. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/groups/users/group/{group_id}/: + get: + operationId: list_group_users + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspace_users](https://api.baserow.io).** + + Lists all the users that are in a group if the authorized user has admin permissions to the related group. To add a user to a group an invitation must be sent first. + parameters: + - in: path + name: group_id + schema: + type: integer + description: Lists group users related to the provided group value. + required: true + - in: query + name: search + schema: + type: string + description: Search for group users by username, or email. + - in: query + name: sorts + schema: + type: string + description: Sort group users by name, email or role. + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ListWorkspaceUsersWithMemberData' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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_GROUP_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/integration/{integration_id}/: + patch: + operationId: update_application_integration + description: Updates an existing integration. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: integration_id + schema: + type: integer + description: The id of the integration + required: true + tags: + - Integrations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_INTEGRATION_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: '' + delete: + operationId: delete_application_integration + description: Deletes the integration related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: integration_id + schema: + type: integer + description: The id of the integration + required: true + tags: + - Integrations + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_INTEGRATION_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/integration/{integration_id}/move/: + patch: + operationId: move_application_integration + description: >- + Moves the integration in the application before another integration or + at the end of the application if no before integration is given. The + integrations must belong to the same application. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: integration_id + schema: + type: integer + description: The id of the integration to move + required: true + tags: + - Integrations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_INTEGRATION_NOT_IN_SAME_APPLICATION + 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_INTEGRATION_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/jobs/: + get: + operationId: list_job + description: >- + List all existing jobs. Jobs are task executed asynchronously in the + background. You can use the `get_job` endpoint to read the + currentprogress of a the job. + parameters: + - in: query + name: job_ids + schema: + type: string + description: >- + A comma separated list of job ids in the desired order.The jobs will + be returned in the same order as the ids.If a job id is not found it + will be ignored. + - in: query + name: states + schema: + type: string + description: >- + A comma separated list of jobs state to look for. The only possible + values are: `pending`, `finished` and `failed`. It's possible to + exclude a state by prefixing it with a `!`. + tags: + - Jobs + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Job_TypeJob' + description: '' + post: + operationId: create_job + description: >- + Creates a new job. This job runs asynchronously in the background and + execute the task specific to the provided typeparameters. The `get_job` + can be used to get the current state of the job. + tags: + - Jobs + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + multipart/form-data: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeJob' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_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/jobs/{job_id}/: + get: + operationId: get_job + description: >- + Returns the information related to the provided job id. This endpoint + can for example be polled to get the state and progress of the job in + real time. + parameters: + - in: path + name: job_id + schema: + type: integer + description: The job id to lookup information about. + required: true + tags: + - Jobs + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeJob' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_JOB_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/licenses/: + get: + operationId: admin_licenses + description: >- + Lists all the valid licenses that are registered to this instance. A + premium license can be used to unlock the premium features for a fixed + amount of users. An enterprise license can similarly be used to unlock + enterpise features. More information about self hosted licenses can be + found on our pricing page https://baserow.io/pricing. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/License' + description: '' + post: + operationId: admin_register_license + description: >- + Registers a new license. After registering you can assign users to the + license that will be able to use the license's features while the + license is active. If an existing license with the same `license_id` + already exists and the provided license has been issued later than that + one, the existing one will be upgraded. + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RegisterLicense' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RegisterLicense' + multipart/form-data: + schema: + $ref: '#/components/schemas/RegisterLicense' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/License' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_LICENSE + - ERROR_UNSUPPORTED_LICENSE + - ERROR_PREMIUM_LICENSE_INSTANCE_ID_MISMATCH + - ERROR_LICENSE_HAS_EXPIRED + - ERROR_LICENSE_ALREADY_EXISTS + 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/licenses/{id}/: + get: + operationId: admin_get_license + description: >- + Responds with detailed information about the license related to the + provided parameter. + parameters: + - in: path + name: id + schema: + type: integer + description: The internal identifier of the license. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseWithUsers' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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: '' + delete: + operationId: admin_remove_license + description: >- + Removes the existing license related to the provided parameter. If the + license is active, then all the users that are using the license will + lose access to the features granted by that license. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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/licenses/{id}/{user_id}/: + post: + operationId: admin_add_user_to_license + description: >- + Adds the user related to the provided parameter and to the license + related to the parameter. This only happens if there are enough seats + left on the license and if the user is not already on the license. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + - in: path + name: user_id + schema: + type: integer + description: The ID of the user that must be added to the license. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_USER_ALREADY_ON_LICENSE + - ERROR_NO_SEATS_LEFT_IN_LICENSE + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_DOES_NOT_EXIST + - ERROR_USER_NOT_FOUND + 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: '' + delete: + operationId: admin_remove_user_from_license + description: >- + Removes the user related to the provided parameter and to the license + related to the parameter. This only happens if the user is on the + license, otherwise nothing will happen. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + - in: path + name: user_id + schema: + type: integer + description: The ID of the user that must be removed from the license. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_DOES_NOT_EXIST + - ERROR_USER_NOT_FOUND + 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/licenses/{id}/check/: + get: + operationId: admin_license_check + description: >- + This endpoint checks with the authority if the license needs to be + updated. It also checks if the license is operating within its limits + and might take action on that. It could also happen that the license has + been deleted because there is an instance id mismatch or because it's + invalid. In that case a `204` status code is returned. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseWithUsers' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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/licenses/{id}/fill-seats/: + post: + operationId: admin_fill_remaining_seats_of_license + description: >- + Fills the remaining empty seats of the license with the first users that + are found. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/LicenseUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_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/licenses/{id}/lookup-users/: + get: + operationId: admin_license_lookup_users + description: >- + This endpoint can be used to lookup users that can be added to a + license. Users that are already in the license are not returned here. + Optionally a `search` query parameter can be provided to filter the + results. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + - in: query + name: page + schema: + type: integer + description: Defines which page of users should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided, only users where the name or email contains the value + are returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerLicenseUserLookup' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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/licenses/{id}/remove-all-users/: + post: + operationId: admin_remove_all_users_from_license + description: >- + Removes all the users that are on the license. This will empty all the + seats. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_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/notifications/{workspace_id}/: + get: + operationId: list_workspace_notifications + description: >- + Lists the notifications for the given workspace and the current user. + The response is paginated and the limit and offset parameters can be + controlled using the query parameters. + parameters: + - in: query + name: limit + schema: + type: integer + description: Defines how many notifications should be returned. + - in: query + name: offset + schema: + type: integer + description: Defines the offset of the notifications that should be returned. + - in: path + name: workspace_id + schema: + type: integer + description: The workspace id that the notifications belong to. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerNotificationRecipient' + 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 + 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_GROUP_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: '' + delete: + operationId: clear_workspace_notifications + description: Clear all the notifications for the given workspace and user. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace the notifications are in. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_GROUP_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/notifications/{workspace_id}/{notification_id}/: + patch: + operationId: mark_notification_as_read + description: Marks a notification as read. + parameters: + - in: path + name: notification_id + schema: + type: integer + description: The notification id to update. + required: true + - in: path + name: workspace_id + schema: + type: integer + description: The workspace the notification is in. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationRecipient' + 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 + 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_GROUP_DOES_NOT_EXIST + - NOTIFICATION_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/notifications/{workspace_id}/mark-all-as-read/: + post: + operationId: mark_all_workspace_notifications_as_read + description: Mark as read all the notifications for the given workspace and user. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace the notifications are in. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_GROUP_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/role/{group_id}/: + get: + operationId: group_list_role_assignments + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can list the role assignments within a group, optionally filtered down to a specific scope inside of that group. If the scope isn't specified,the group will be considered the scope. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group in which the role assignments are related to. + required: true + - in: query + name: scope_id + schema: + type: integer + description: The id of the scope you are trying to get all roleassignments for. + - in: query + name: scope_type + schema: + type: string + description: The type of scope you are trying to get all roleassignments for. + tags: + - Role assignments + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_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: '' + post: + operationId: group_assign_role + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can assign a role to a subject into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OpenApiRoleAssignment' + description: '' + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/role/{group_id}/batch/: + post: + operationId: group_batch_assign_role + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_batch_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can assign a role to a multiple subjects into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + - ERROR_DUPLICATE_ROLE_ASSIGNMENTS + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/role/{workspace_id}/: + get: + operationId: list_role_assignments + description: >- + You can list the role assignments within a workspace, optionally + filtered downto a specific scope inside of that workspace. If the scope + isn't specified,the workspace will be considered the scope. + parameters: + - in: query + name: scope_id + schema: + type: integer + description: The id of the scope you are trying to get all roleassignments for. + - in: query + name: scope_type + schema: + type: string + description: The type of scope you are trying to get all roleassignments for. + - in: path + name: workspace_id + schema: + type: integer + description: The workspace in which the role assignments are related to. + required: true + tags: + - Role assignments + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_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: '' + post: + operationId: assign_role + description: >- + You can assign a role to a subject into the given workspace for the + given scope with this endpoint. If you want to remove the role you can + omit the role property. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OpenApiRoleAssignment' + description: '' + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/role/{workspace_id}/batch/: + post: + operationId: batch_assign_role + description: >- + You can assign a role to a multiple subjects into the given workspace + for the given scopes with this endpoint. If you want to remove the role + you can omit the role property. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + - ERROR_DUPLICATE_ROLE_ASSIGNMENTS + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/row_comments/{table_id}/{row_id}/: + get: + operationId: get_row_comments + description: |- + Returns all row comments for the specified table and row. + + This is a **premium** feature. + parameters: + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - in: path + name: row_id + schema: + type: integer + description: The row to get row comments for. + required: true + - in: query + name: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - in: path + name: table_id + schema: + type: integer + description: The table the row is in. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerRowComment' + 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 + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + post: + operationId: create_row_comment + description: |- + Creates a comment on the specified row. + + This is a **premium** feature. + parameters: + - in: path + name: row_id + schema: + type: integer + description: The row to create a comment for. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table to find the row to comment on in. + required: true + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RowCommentCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RowCommentCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/RowCommentCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + 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_INVALID_COMMENT_MENTION + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/row_comments/{table_id}/{row_id}/notification-mode/: + put: + operationId: update_row_comment_notification_mode + description: >- + Updates the user's notification preferences for comments made on a + specified table row. + + + This is a **premium** feature. + parameters: + - in: path + name: row_id + schema: + type: integer + description: The row on which to manage the comment subscription. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table id where the row is in. + required: true + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + multipart/form-data: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/row_comments/{table_id}/comment/{comment_id}/: + patch: + operationId: update_row_comment + description: |- + Update a row comment. + + This is a **premium** feature. + parameters: + - in: path + name: comment_id + schema: + type: integer + description: The row comment to update. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table the row is in. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + 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_USER_NOT_COMMENT_AUTHOR + - ERROR_INVALID_COMMENT_MENTION + - ERROR_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_COMMENT_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: '' + delete: + operationId: delete_row_comment + description: |- + Delete a row comment. + + This is a **premium** feature. + parameters: + - in: path + name: comment_id + schema: + type: integer + description: The row comment to delete. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table the row is in. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + 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_USER_NOT_COMMENT_AUTHOR + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_COMMENT_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/settings/: + get: + operationId: get_settings + description: Responds with all the admin configured settings. + tags: + - Settings + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Settings' + description: '' + /api/settings/instance-id/: + get: + operationId: get_instance_id + description: >- + Responds with the self hosted instance id. Only a user with staff + permissions can request it. + tags: + - Settings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/InstanceId' + description: '' + /api/settings/update/: + patch: + operationId: update_settings + description: Updates the admin configured settings if the user has admin permissions. + tags: + - Settings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedSettings' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedSettings' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedSettings' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Settings' + description: '' + /api/snapshots/{snapshot_id}/: + delete: + operationId: delete_snapshot + description: >- + Deletes a snapshot. Deleting a snapshot doesn't affect the application + that the snapshot is made from and doesn't affect any applications that + were created by restoring it. Snapshot deletion is permanent and can't + be undone. + parameters: + - in: path + name: snapshot_id + schema: + type: integer + description: Id of the snapshot to delete. + required: true + tags: + - Snapshots + security: + - JWT: [] + responses: + '204': + description: No response body + '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_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_RESTORED + - ERROR_SNAPSHOT_IS_BEING_DELETED + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + 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_SNAPSHOT_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/snapshots/{snapshot_id}/restore/: + post: + operationId: restore_snapshot + description: >- + Restores a snapshot. When an application snapshot is restored, a new + application will be created in the same workspace that the original + application was placed in with the name of the snapshot and data that + were in the original application at the time the snapshot was taken. The + original application that the snapshot was taken from is unaffected. + Snapshots can be restored multiple times and a number suffix is added to + the new application name in the case of a collision. + parameters: + - in: path + name: snapshot_id + schema: + type: integer + description: Id of the snapshot to restore. + required: true + tags: + - Snapshots + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Job' + 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_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_RESTORED + - ERROR_SNAPSHOT_IS_BEING_DELETED + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + 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_SNAPSHOT_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/snapshots/application/{application_id}/: + get: + operationId: list_snapshots + description: Lists snapshots that were created for a given application. + parameters: + - in: path + name: application_id + schema: + type: integer + description: Application ID for which to list snapshots. + required: true + tags: + - Snapshots + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Snapshot' + 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 + 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_APPLICATION_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: '' + post: + operationId: create_snapshot + description: >- + Creates a new application snapshot. Snapshots represent a state of an + application at a specific point in time and can be restored later, + making it easy to create backups of entire applications. + parameters: + - in: path + name: application_id + schema: + type: integer + description: Application ID for which to list snapshots. + required: true + tags: + - Snapshots + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Snapshot' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Snapshot' + multipart/form-data: + schema: + $ref: '#/components/schemas/Snapshot' + required: true + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/Job' + 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_MAXIMUM_SNAPSHOTS_REACHED + - ERROR_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_CREATED + - ERROR_SNAPSHOT_NAME_NOT_UNIQUE + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + 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_APPLICATION_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/sso/oauth2/callback/{provider_id}/: + get: + operationId: oauth_provider_login_callback + description: >- + Processes callback from OAuth2 provider and logs the user in if + successful. + parameters: + - in: query + name: code + schema: + type: integer + description: The id of the provider for which to process the callback. + - in: path + name: provider_id + schema: + type: integer + description: The id of the provider for which to process the callback. + required: true + tags: + - Auth + responses: + '302': + description: No response body + /api/sso/oauth2/login/{provider_id}/: + get: + operationId: oauth_provider_login_redirect + description: >- + Redirects to the OAuth2 provider's authentication URL based on the + provided auth provider's id. + parameters: + - in: query + name: group_invitation_token + schema: + type: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future. + deprecated: true + - in: query + name: original + schema: + type: integer + description: The relative part of URL that the user wanted to access. + - in: path + name: provider_id + schema: + type: integer + description: The id of the provider for redirect. + required: true + - in: query + name: workspace_invitation_token + schema: + type: string + description: The invitation token sent to the user to join a specific workspace. + tags: + - Auth + responses: + '302': + description: No response body + /api/sso/saml/acs/: + post: + operationId: auth_provider_saml_acs_url + description: >- + Complete the SAML authentication flow by validating the SAML response. + Sign in the user if already exists in Baserow or create a new one + otherwise. Once authenticated, the user will be redirected to the + original URL they were trying to access. If the response is invalid, the + user will be redirected to an error page with a specific error + message.It accepts the language code and the workspace invitation token + as query parameters if provided. + tags: + - Auth + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SAMLResponse' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SAMLResponse' + multipart/form-data: + schema: + $ref: '#/components/schemas/SAMLResponse' + required: true + responses: + '302': + description: No response body + /api/sso/saml/login/: + get: + operationId: auth_provider_saml_sp_login + description: >- + This is the endpoint that is called when the user wants to initiate a + SSO SAML login from Baserow (the service provider). The user will be + redirected to the SAML identity provider (IdP) where the user can + authenticate. Once logged in in the IdP, the user will be redirected + back to the assertion consumer service endpoint (ACS) where the SAML + response will be validated and a new JWT session token will be provided + to work with Baserow APIs. + parameters: + - in: query + name: email + schema: + type: string + description: The email address of the user that want to sign in using SAML. + - in: query + name: group_invitation_token + schema: + type: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future + deprecated: true + - in: query + name: language + schema: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + - in: query + name: original + schema: + type: string + description: >- + The url to which the user should be redirected after a successful + login or sign up. + - in: query + name: workspace_invitation_token + schema: + type: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after login or signing up. + tags: + - Auth + responses: + '302': + description: No response body + /api/sso/saml/login-url/: + get: + operationId: auth_provider_login_url + description: >- + Return the correct redirect_url to initiate the SSO SAML login. It needs + an email address if multiple SAML providers are configured otherwise the + only configured SAML provider signup URL will be returned. + parameters: + - in: query + name: email + schema: + type: string + description: The email address of the user that want to sign in using SAML. + - in: query + name: group_invitation_token + schema: + type: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future. + deprecated: true + - in: query + name: language + schema: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + - in: query + name: original + schema: + type: string + description: >- + The url to which the user should be redirected after a successful + login. + - in: query + name: workspace_invitation_token + schema: + type: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after login or signing up. + tags: + - Auth + responses: + '200': + content: + application/json: + schema: + type: object + additionalProperties: {} + description: Unspecified response body + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_SAML_INVALID_LOGIN_REQUEST + 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/teams/{team_id}/: + get: + operationId: get_team + description: Returns the information related to the provided team id. + parameters: + - in: path + name: team_id + schema: + type: integer + description: Returns the team related to the provided value. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TEAM_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: '' + put: + operationId: update_team + description: Updates an existing team with a new name. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + 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_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_BAD_REQUEST" + 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_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_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: '' + delete: + operationId: delete_team + description: >- + Deletes a team if the authorized user is in the team's workspace. All + the related children (e.g. subjects) are also going to be deleted. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: team_id + schema: + type: integer + description: Deletes the team related to the provided value. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TEAM_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/teams/{team_id}/subjects/: + get: + operationId: list_team_subjects + description: Lists all team subjects in a given team. + parameters: + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TeamSubjectResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TEAM_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: '' + post: + operationId: create_subject + description: Creates a new team subject. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubject' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TeamSubject' + multipart/form-data: + schema: + $ref: '#/components/schemas/TeamSubject' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubjectResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + - ERROR_SUBJECT_BAD_REQUEST + 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_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_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/teams/{team_id}/subjects/{subject_id}/: + get: + operationId: get_subject + description: Returns the information related to the provided subject id + parameters: + - in: path + name: subject_id + schema: + type: integer + description: Returns the subject related to the provided value. + required: true + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubjectResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_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: '' + delete: + operationId: delete_subject + description: Deletes a subject if the authorized user is in the team's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: subject_id + schema: + type: integer + description: The subject id to remove from the team. + required: true + - in: path + name: team_id + schema: + type: integer + description: The team id which the subject will be removed from. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_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/teams/group/{group_id}/: + get: + operationId: group_list_teams + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_list_teams](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all teams in a given group. + parameters: + - in: path + name: group_id + schema: + type: integer + description: Lists all teams in a given group. + required: true + - in: query + name: search + schema: + type: string + description: Search for teams by their name. + - in: query + name: sorts + schema: + type: string + description: Sort teams by name or subjects. + tags: + - Teams + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TeamResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_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: '' + post: + operationId: group_create_team + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_create_team](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new team in a given group. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + 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_SUBJECT_BAD_REQUEST + - ERROR_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + 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_GROUP_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_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/teams/workspace/{workspace_id}/: + get: + operationId: workspace_list_teams + description: Lists all teams in a given workspace. + parameters: + - in: query + name: search + schema: + type: string + description: Search for teams by their name. + - in: query + name: sorts + schema: + type: string + description: Sort teams by name or subjects. + - in: path + name: workspace_id + schema: + type: integer + description: Lists all teams in a given workspace. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TeamResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_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: '' + post: + operationId: workspace_create_team + description: Creates a new team. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workspace_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + 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_SUBJECT_BAD_REQUEST + - ERROR_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + 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_GROUP_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_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/templates/: + get: + operationId: list_templates + description: >- + Lists all the template categories and the related templates that are in + that category. The template's `workspace_id` can be used for previewing + purposes because that workspace contains the applications that are in + the template. All the `get` and `list` endpoints related to that + workspace are publicly accessible. + tags: + - Templates + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TemplateCategories' + description: '' + /api/templates/install/{group_id}/{template_id}/: + post: + operationId: group_install_template + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_install_template](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Installs the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: >- + The id related to the group where the template applications must be + installed into. + required: true + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + tags: + - Templates + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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_TEMPLATE_FILE_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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/templates/install/{group_id}/{template_id}/async/: + post: + operationId: group_install_template_async + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_install_template_async](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Start an async job to install the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: >- + The id related to the group where the template applications must be + installed into. + required: true + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + tags: + - Templates + security: + - JWT: [] + deprecated: true + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleInstallTemplateJobType' + 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_TEMPLATE_FILE_DOES_NOT_EXIST + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/templates/install/{workspace_id}/{template_id}/: + post: + operationId: install_template + description: >- + (Deprecated) Installs the applications of the given template into the + given workspace if the user has access to that workspace. The response + contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + - in: path + name: workspace_id + schema: + type: integer + description: >- + The id related to the workspace where the template applications must + be installed into. + required: true + tags: + - Templates + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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_TEMPLATE_FILE_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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/templates/install/{workspace_id}/{template_id}/async/: + post: + operationId: install_template_async + description: >- + Start an async job to install the applications of the given template + into the given workspace if the user has access to that workspace. The + response contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + - in: path + name: workspace_id + schema: + type: integer + description: >- + The id related to the workspace where the template applications must + be installed into. + required: true + tags: + - Templates + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleInstallTemplateJobType' + 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_TEMPLATE_FILE_DOES_NOT_EXIST + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/trash/: + get: + operationId: get_trash_structure + description: >- + Responds with the workspaces and applications available for the + requesting user to inspect the trash contents of. + tags: + - Trash + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TrashStructure' + description: '' + /api/trash/group/{group_id}/: + get: + operationId: group_get_contents + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_get_contents](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Responds with trash contents for a group optionally filtered to a specific application. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to only items for this application + in the group. + - in: path + name: group_id + schema: + type: integer + description: Returns the trash for the group with this id. + required: true + - in: query + name: page + schema: + type: integer + description: Selects which page of trash contents should be returned. + tags: + - Trash + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerTrashContents' + 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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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: '' + delete: + operationId: group_empty_contents + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_empty_contents](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Empties the specified group and/or application of trash, including the group and application themselves if they are trashed also. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to delete to only items for this + application in the group. + - in: path + name: group_id + schema: + type: integer + description: >- + The group whose trash contents to empty, including the group itself + if it is also trashed. + required: true + tags: + - Trash + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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/trash/restore/: + patch: + operationId: restore + description: Restores the specified trashed item back into baserow. + tags: + - Trash + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + security: + - JWT: [] + responses: + '204': + description: No response body + '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_TRASH_ITEM_DOES_NOT_EXIST + - ERROR_CANNOT_RESTORE_PARENT_BEFORE_CHILD + - ERROR_PARENT_ID_MUST_NOT_BE_PROVIDED + - ERROR_PARENT_ID_MUST_BE_PROVIDED + - ERROR_CANT_RESTORE_AS_RELATED_TABLE_TRASHED + - ERROR_CANNOT_RESTORE_ITEM_NOT_OWNED_BY_USER + 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/trash/workspace/{workspace_id}/: + get: + operationId: workspace_get_contents + description: >- + Responds with trash contents for a workspace optionally filtered to a + specific application. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to only items for this application + in the workspace. + - in: query + name: page + schema: + type: integer + description: Selects which page of trash contents should be returned. + - in: path + name: workspace_id + schema: + type: integer + description: Returns the trash for the workspace with this id. + required: true + tags: + - Trash + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerTrashContents' + 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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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: '' + delete: + operationId: workspace_empty_contents + description: >- + Empties the specified workspace and/or application of trash, including + the workspace and application themselves if they are trashed also. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to delete to only items for this + application in the workspace. + - in: path + name: workspace_id + schema: + type: integer + description: >- + The workspace whose trash contents to empty, including the workspace + itself if it is also trashed. + required: true + tags: + - Trash + security: + - JWT: [] + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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/user/: + post: + operationId: create_user + description: >- + Creates a new user based on the provided values. If desired an + authentication JWT can be generated right away. After creating an + account the initial workspace containing a database is created. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Register' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Register' + multipart/form-data: + schema: + $ref: '#/components/schemas/Register' + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_ALREADY_EXISTS + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + - ERROR_REQUEST_BODY_VALIDATION + - BAD_TOKEN_SIGNATURE + 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_GROUP_INVITATION_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/user-files/upload-file/: + post: + operationId: upload_file + description: >- + Uploads a file to Baserow by uploading the file contents directly. A + `file` multipart is expected containing the file contents. + tags: + - User files + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + 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/user-files/upload-via-url/: + post: + operationId: upload_via_url + description: Uploads a file to Baserow by downloading it from the provided URL. + tags: + - User files + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + required: true + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + - ERROR_FILE_URL_COULD_NOT_BE_REACHED + - ERROR_INVALID_FILE_URL + 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/user-source-auth-refresh/: + post: + operationId: user_source_token_refresh + description: >- + Generate a new access_token that can be used to continue operating on + Baserow with a user source user starting from a valid refresh token. + tags: + - User sources + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + description: '' + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user-source-token-blacklist/: + post: + operationId: user_source_token_blacklist + description: >- + Blacklists the provided user source token. This can be used the sign the + user off. + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenBlacklist' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenBlacklist' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenBlacklist' + required: true + responses: + '204': + description: No response body + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user-source/{user_source_id}/: + patch: + operationId: update_application_user_source + description: Updates an existing user_source. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_USER_SOURCE_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: '' + delete: + operationId: delete_application_user_source + description: Deletes the user_source related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_USER_SOURCE_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/user-source/{user_source_id}/force-token-auth: + post: + operationId: user_source_force_token_auth + description: >- + Force authenticates an existing user based on their ID. If successful, + an access token and a refresh token will be returned. + parameters: + - in: path + name: user_source_id + schema: + type: integer + description: The user source to use to authenticate the user. + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: object + properties: + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '401': + content: + application/json: + schema: + description: An active user with the provided ID could not be found. + description: '' + /api/user-source/{user_source_id}/move/: + patch: + operationId: move_application_user_source + description: >- + Moves the user_source in the application before another user_source or + at the end of the application if no before user_source is given. The + user_sources must belong to the same application. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source to move + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_USER_SOURCE_NOT_IN_SAME_APPLICATION + 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_USER_SOURCE_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/user-source/{user_source_id}/token-auth: + post: + operationId: user_source_token_auth + description: >- + Authenticates an existing user against a user source based on their + credentials. If successful, an access token and a refresh token will be + returned. + parameters: + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source to move + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenObtainPair' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenObtainPair' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenObtainPair' + required: true + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '401': + content: + application/json: + schema: + description: >- + An active user with the provided email and password could not + be found. + description: '' + /api/user/account/: + patch: + operationId: update_account + description: Updates the account information of the authenticated user. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedAccount' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedAccount' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedAccount' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Account' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/user/change-password/: + post: + operationId: change_password + description: >- + Changes the password of an authenticated user, but only if the old + password matches. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_OLD_PASSWORD + - ERROR_REQUEST_BODY_VALIDATION + 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/user/dashboard/: + get: + operationId: dashboard + description: >- + Lists all the relevant user information that for example could be shown + on a dashboard. It will contain all the pending workspace invitations + for that user. + tags: + - User + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Dashboard' + description: '' + /api/user/redo/: + patch: + operationId: redo + description: >- + Redoes the latest redoable action performed by the user making the + request. a ClientSessionId header must be provided and only actions + which were performed the same user with the same ClientSessionId value + set on the api request that performed the action will be + redone.Additionally the ClientSessionId header must be between 1 and 256 + characters long and must only contain alphanumeric or the - characters. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + The particular client session to redo actions for. The actions must + have been performed with this same header set with the same value + for them to be redoable by this endpoint. + required: true + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UndoRedoResponse' + description: '' + /api/user/reset-password/: + post: + operationId: reset_password + description: >- + Changes the password of a user if the reset token is valid. The + **send_password_reset_email** endpoint sends an email to the user + containing the token. That token can be used to change the password here + without providing the old password. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + required: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - BAD_TOKEN_SIGNATURE + - EXPIRED_TOKEN_SIGNATURE + - ERROR_USER_NOT_FOUND + - ERROR_REQUEST_BODY_VALIDATION + 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/user/schedule-account-deletion/: + post: + operationId: schedule_account_deletion + description: >- + Schedules the account deletion of the authenticated user. The user will + be permanently deleted after the grace delay defined by the instance + administrator. + tags: + - User + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/user/send-reset-password-email/: + post: + operationId: send_password_reset_email + description: >- + Sends an email containing the password reset link to the email address + of the user. This will only be done if a user is found with the given + email address. The endpoint will not fail if the email address is not + found. The link is going to the valid for 48 hours. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + required: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_HOSTNAME_IS_NOT_ALLOWED + 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/user/token-auth/: + post: + operationId: token_auth + description: >- + Authenticates an existing user based on their email and their password. + If successful, an access token and a refresh token will be returned. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '401': + content: + application/json: + schema: + description: >- + An active user with the provided email and password could not + be found. + description: '' + /api/user/token-blacklist/: + post: + operationId: token_blacklist + description: Blacklists the provided token. This can be used the sign the user off. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenBlacklist' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenBlacklist' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenBlacklist' + required: true + responses: + '204': + description: No response body + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user/token-refresh/: + post: + operationId: token_refresh + description: >- + Generate a new access_token that can be used to continue operating on + Baserow starting from a valid refresh token. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + description: '' + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user/token-verify/: + post: + operationId: token_verify + description: >- + Verifies if the refresh token is valid and can be used to generate a new + access_token. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + description: '' + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user/undo/: + patch: + operationId: undo + description: >- + undoes the latest undoable action performed by the user making the + request. a ClientSessionId header must be provided and only actions + which were performed the same user with the same ClientSessionId value + set on the api request that performed the action will be + undone.Additionally the ClientSessionId header must be between 1 and 256 + characters long and must only contain alphanumeric or the - characters. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + The particular client session to undo actions for. The actions must + have been performed with this same header set with the same value + for them to be undoable by this endpoint. + required: true + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UndoRedoResponse' + description: '' + /api/workspaces/: + get: + operationId: list_workspaces + description: >- + Lists all the workspaces of the authorized user. A workspace can contain + multiple applications like a database. Multiple users can have access to + a workspace. For example each company could have their own workspace + containing databases related to that company. The order of the + workspaces are custom for each user. The order is configurable via the + **order_workspaces** endpoint. + tags: + - Workspaces + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + post: + operationId: create_workspace + description: >- + Creates a new workspace where only the authorized user has access to. No + initial data like database applications are added, they have to be + created via other endpoints. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Workspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/Workspace' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + /api/workspaces/{workspace_id}/: + patch: + operationId: update_workspace + description: >- + Updates the existing workspace related to the provided `workspace_id` + parameter if the authorized user belongs to the workspace. It is not yet + possible to add additional users to a workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: Updates the workspace related to the provided value. + required: true + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + 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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + delete: + operationId: delete_workspace + description: >- + Deletes an existing workspace if the authorized user belongs to the + workspace. All the applications, databases, tables etc that were in the + workspace are going to be deleted also. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: Deletes the workspace related to the provided value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_GROUP_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/workspaces/{workspace_id}/leave/: + post: + operationId: leave_workspace + description: >- + Makes the authenticated user leave the workspace related to the provided + `workspace_id` if the user is in that workspace. If the user is the last + admin in the workspace, they will not be able to leave it. There must + always be one admin in the workspace, otherwise it will be left without + control. If that is the case, they must either delete the workspace or + give another member admin permissions first. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: Leaves the workspace related to the value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '204': + description: No response body + '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_GROUP_USER_IS_LAST_ADMIN + 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_GROUP_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/workspaces/{workspace_id}/permissions/: + get: + operationId: workspace_permissions + description: >- + Returns a the permission data necessary to determine the permissions of + a specific user over a specific workspace. + + See `core.handler.CoreHandler.get_permissions()` for more details. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace id we want the permission object for. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PermissionObject' + description: '' + '404': + 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_GROUP_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/workspaces/invitations/{workspace_invitation_id}/: + get: + operationId: get_workspace_invitation + description: >- + Returns the requested workspace invitation if the authorized user has + admin right to the related workspace + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Returns the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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: '' + patch: + operationId: update_workspace_invitation + description: >- + Updates the existing workspace invitation related to the provided + `workspace_invitation_id` param if the authorized user has admin rights + to the related workspace. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Updates the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_INVITATION_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: '' + delete: + operationId: delete_workspace_invitation + description: >- + Deletes a workspace invitation if the authorized user has admin rights + to the related workspace. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Deletes the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/workspaces/invitations/{workspace_invitation_id}/accept/: + post: + operationId: accept_workspace_invitation + description: >- + Accepts a workspace invitation with the given id if the email address of + the user matches that of the invitation. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Accepts the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/workspaces/invitations/{workspace_invitation_id}/reject/: + post: + operationId: reject_workspace_invitation + description: >- + Rejects a workspace invitation with the given id if the email address of + the user matches that of the invitation. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Rejects the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/workspaces/invitations/token/{token}/: + get: + operationId: get_workspace_invitation_by_token + description: >- + Responds with the serialized workspace invitation if an invitation with + the provided token is found. + parameters: + - in: path + name: token + schema: + type: string + description: Returns the workspace invitation related to the provided token. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserWorkspaceInvitation' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - BAD_TOKEN_SIGNATURE + 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_GROUP_INVITATION_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/workspaces/invitations/workspace/{workspace_id}/: + get: + operationId: list_workspace_invitations + description: >- + Lists all the workspace invitations of the workspace related to the + provided `workspace_id` parameter if the authorized user has admin + rights to that workspace. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: >- + Returns only invitations that are in the workspace related to the + provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + post: + operationId: create_workspace_invitation + description: >- + Creates a new workspace invitations for an email address if the + authorized user has admin rights to the related workspace. An email + containing a sign up link will be send to the user. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: >- + Creates a workspace invitation to the workspace related to the + provided value. + required: true + tags: + - Workspace invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_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/workspaces/order/: + post: + operationId: order_workspaces + description: >- + Changes the order of the provided workspace ids to the matching position + that the id has in the list. If the authorized user does not belong to + the workspace it will be ignored. The order will be custom for each + user. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + /api/workspaces/users/{workspace_user_id}/: + patch: + operationId: update_workspace_user + description: >- + Updates the existing workspace user related to the provided + `workspace_user_id` param if the authorized user has admin rights to the + related workspace. + parameters: + - in: path + name: workspace_user_id + schema: + type: integer + description: Updates the workspace user related to the provided value. + required: true + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUser' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_USER_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: '' + delete: + operationId: delete_workspace_user + description: >- + Deletes a workspace user if the authorized user has admin rights to the + related workspace. + parameters: + - in: path + name: workspace_user_id + schema: + type: integer + description: Deletes the workspace user related to the provided value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/workspaces/users/workspace/{workspace_id}/: + get: + operationId: list_workspace_users + description: >- + Lists all the users that are in a workspace if the authorized user has + admin permissions to the related workspace. To add a user to a workspace + an invitation must be sent first. + parameters: + - in: query + name: search + schema: + type: string + description: Search for workspace users by username, or email. + - in: query + name: sorts + schema: + type: string + description: Sort workspace users by name, email or role. + - in: path + name: workspace_id + schema: + type: integer + description: Lists workspace users related to the provided workspace value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ListWorkspaceUsersWithMemberData' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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_GROUP_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: + Account: + type: object + description: This serializer must be kept in sync with `UserSerializer`. + properties: + first_name: + type: string + maxLength: 150 + minLength: 2 + language: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + maxLength: 10 + minLength: 2 + email_notification_frequency: + allOf: + - $ref: '#/components/schemas/EmailNotificationFrequencyEnum' + description: >- + The maximum frequency at which the user wants to receive email + notifications. + + + * `instant` - instant + + * `daily` - daily + + * `weekly` - weekly + + * `never` - never + ActionScopes: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + root: + type: boolean + nullable: true + description: >- + If set to true then actions registered in the root scope will be + included when undoing or redoing. + workspace: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a workspaces id then any actions directly related to that + workspace will be be included when undoing or redoing. + group: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a workspaces id then any actions directly related to that + workspace will be be included when undoing or redoing. + application: + type: integer + minimum: 0 + nullable: true + description: >- + If set to an applications id then any actions directly related to + that application will be be included when undoing or redoing. + table: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a table id then any actions directly related to that table + will be be included when undoing or redoing. + view: + type: integer + minimum: 0 + nullable: true + description: >- + If set to an view id then any actions directly related to that view + will be be included when undoing or redoing. + teams_in_workspace: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a workspace id then any actions directly related to that + workspace will be be included when undoing or redoing. + AdminDashboard: + type: object + properties: + total_users: + type: integer + total_groups: + type: integer + total_workspaces: + type: integer + total_applications: + type: integer + new_users_last_24_hours: + type: integer + new_users_last_7_days: + type: integer + new_users_last_30_days: + type: integer + previous_new_users_last_24_hours: + type: integer + previous_new_users_last_7_days: + type: integer + previous_new_users_last_30_days: + type: integer + active_users_last_24_hours: + type: integer + active_users_last_7_days: + type: integer + active_users_last_30_days: + type: integer + previous_active_users_last_24_hours: + type: integer + previous_active_users_last_7_days: + type: integer + previous_active_users_last_30_days: + type: integer + new_users_per_day: + type: array + items: + $ref: '#/components/schemas/AdminDashboardPerDay' + active_users_per_day: + type: array + items: + $ref: '#/components/schemas/AdminDashboardPerDay' + required: + - active_users_last_24_hours + - active_users_last_30_days + - active_users_last_7_days + - active_users_per_day + - new_users_last_24_hours + - new_users_last_30_days + - new_users_last_7_days + - new_users_per_day + - previous_active_users_last_24_hours + - previous_active_users_last_30_days + - previous_active_users_last_7_days + - previous_new_users_last_24_hours + - previous_new_users_last_30_days + - previous_new_users_last_7_days + - total_applications + - total_groups + - total_users + - total_workspaces + AdminDashboardPerDay: + type: object + properties: + date: + type: string + format: date + count: + type: integer + required: + - count + - date + AggregationRawTypeEnum: + enum: + - empty_count + - not_empty_count + - unique_count + - min + - max + - sum + - average + - median + - decile + - variance + - std_dev + type: string + description: |- + * `empty_count` - empty_count + * `not_empty_count` - not_empty_count + * `unique_count` - unique_count + * `min` - min + * `max` - max + * `sum` - sum + * `average` - average + * `median` - median + * `decile` - decile + * `variance` - variance + * `std_dev` - std_dev + AirtableImportJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + group_id: + type: integer + description: The group ID where the Airtable base must be imported into. + workspace_id: + type: integer + description: The workspace ID where the Airtable base must be imported into. + airtable_share_url: + type: string + format: uri + description: >- + The publicly shared URL of the Airtable base (e.g. + https://airtable.com/shrxxxxxxxxxxxxxx) + required: + - airtable_share_url + - type + AirtableImportJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + group_id: + type: integer + description: The group ID where the Airtable base must be imported into. + workspace_id: + type: integer + description: The workspace ID where the Airtable base must be imported into. + database: + $ref: '#/components/schemas/Application' + airtable_share_id: + type: string + format: uri + description: Public ID of the shared Airtable base that must be imported. + maxLength: 200 + required: + - airtable_share_id + - database + - group_id + - id + - progress_percentage + - state + - type + - workspace_id + Alignment0e8Enum: + enum: + - top + - center + - bottom + type: string + description: |- + * `top` - Top + * `center` - Center + * `bottom` - Bottom + Alignment675Enum: + enum: + - left + - center + - right + type: string + description: |- + * `left` - Left + * `center` - Center + * `right` - Right + App_Auth_ProviderAppAuthProvider: + oneOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderAppAuthProvider + discriminator: + propertyName: type + mapping: + local_baserow_password: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderAppAuthProvider + App_Auth_ProviderBaseAppAuthProvider: + oneOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider + discriminator: + propertyName: type + mapping: + local_baserow_password: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider + Application: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + description: The workspace that the application belongs to. + required: + - group + - id + - name + - order + - type + - workspace + ApplicationApplication: + oneOf: + - $ref: '#/components/schemas/DatabaseApplication' + - $ref: '#/components/schemas/BuilderApplication' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseApplication' + builder: '#/components/schemas/BuilderApplication' + ApplicationBaseApplicationCreatePolymorphic: + oneOf: + - $ref: '#/components/schemas/DatabaseBaseApplicationCreatePolymorphic' + - $ref: '#/components/schemas/BuilderBaseApplicationCreatePolymorphic' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseBaseApplicationCreatePolymorphic' + builder: '#/components/schemas/BuilderBaseApplicationCreatePolymorphic' + ArrayFormulaTypeEnum: + enum: + - invalid + - text + - char + - button + - link + - date_interval + - duration + - date + - boolean + - number + - single_select + - multiple_select + - single_file + type: string + description: |- + * `invalid` - invalid + * `text` - text + * `char` - char + * `button` - button + * `link` - link + * `date_interval` - date_interval + * `duration` - duration + * `date` - date + * `boolean` - boolean + * `number` - number + * `single_select` - single_select + * `multiple_select` - multiple_select + * `single_file` - single_file + AuditLog: + type: object + properties: + id: + type: integer + readOnly: true + action_type: + type: string + readOnly: true + user: + type: string + readOnly: true + group: + type: string + readOnly: true + workspace: + type: string + readOnly: true + type: + type: string + readOnly: true + description: + type: string + readOnly: true + timestamp: + type: string + format: date-time + ip_address: + type: string + readOnly: true + nullable: true + required: + - action_type + - description + - group + - id + - ip_address + - timestamp + - type + - user + - workspace + AuditLogActionType: + type: object + properties: + id: + $ref: '#/components/schemas/IdEnum' + value: + type: string + description: |- + Given the *incoming* primitive data, return the value for this field + that should be validated and transformed to a native value. + readOnly: true + required: + - id + - value + AuditLogExportJobCreateJob: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + url: + type: string + format: uri + readOnly: true + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + required: + - type + - url + AuditLogExportJobJob: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + created_on: + type: string + format: date-time + readOnly: true + description: The date and time when the export job was created. + exported_file_name: + type: string + readOnly: true + description: The name of the file that was created by the export job. + url: + type: string + format: uri + readOnly: true + description: The URL to download the exported file. + required: + - created_on + - exported_file_name + - id + - progress_percentage + - state + - type + - url + AuditLogUser: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + required: + - id + - value + AuditLogWorkspace: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + required: + - id + - value + AuthFormElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + required: + - order + - type + AuthFormElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + required: + - id + - order + - page_id + - parent_element_id + - type + AuthFormElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + required: + - id + - order + - parent_element_id + - type + AuthFormElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + Authentication_ProviderAuthProvider: + oneOf: + - $ref: '#/components/schemas/PasswordAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/SamlAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GoogleAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/FacebookAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GitHubAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GitLabAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/OpenIdConnectAuthProviderModelAuthProvider' + discriminator: + propertyName: type + mapping: + password: '#/components/schemas/PasswordAuthProviderModelAuthProvider' + saml: '#/components/schemas/SamlAuthProviderModelAuthProvider' + google: '#/components/schemas/GoogleAuthProviderModelAuthProvider' + facebook: '#/components/schemas/FacebookAuthProviderModelAuthProvider' + github: '#/components/schemas/GitHubAuthProviderModelAuthProvider' + gitlab: '#/components/schemas/GitLabAuthProviderModelAuthProvider' + openid_connect: '#/components/schemas/OpenIdConnectAuthProviderModelAuthProvider' + AutonumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + view_id: + type: integer + nullable: true + description: The id of the view to use for the initial ordering. + required: + - name + - type + AutonumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + AutonumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + AutonumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + view_id: + type: integer + nullable: true + description: The id of the view to use for the initial ordering. + BaseExporterOptions: + type: object + properties: + view_id: + type: integer + minimum: 0 + nullable: true + description: >- + Optional: The view for this table to export using its filters, sorts + and other view specific settings. + exporter_type: + allOf: + - $ref: '#/components/schemas/ExporterTypeEnum' + description: |- + The file type to export to. + + * `csv` - csv + * `json` - json + * `xml` - xml + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + required: + - exporter_type + BaserowImpersonateAuthToken: + type: object + description: Serializer used for impersonation. + properties: + user: + type: integer + required: + - user + BatchCreateRoleAssignment: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/CreateRoleAssignment' + required: + - items + BatchDeleteRows: + type: object + properties: + items: + type: array + items: + type: integer + maxItems: 200 + minItems: 1 + required: + - items + BlankEnum: + enum: + - '' + BooleanFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + BooleanFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + BooleanFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + BooleanFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + BuilderApplication: + type: object + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + description: The workspace that the application belongs to. + pages: + type: array + items: + $ref: '#/components/schemas/Page' + readOnly: true + description: >- + This field is specific to the `builder` application and contains an + array of pages that are in the builder. + theme: + allOf: + - $ref: '#/components/schemas/CombinedThemeConfigBlocks' + readOnly: true + description: >- + This field is specific to the `builder` application and contains the + theme settings. + required: + - group + - id + - name + - order + - pages + - theme + - type + - workspace + BuilderBaseApplicationCreatePolymorphic: + type: object + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + properties: + name: + type: string + maxLength: 160 + type: + $ref: '#/components/schemas/TypeF4fEnum' + init_with_data: + type: boolean + default: false + required: + - name + - type + BuilderBaseApplicationUpdatePolymorphic: + type: object + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + properties: + name: + type: string + maxLength: 160 + required: + - name + BuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + required: + - element_id + - event + - id + - order + - type + Builder_Workflow_Action_TypeBuilderWorkflowAction: + oneOf: + - $ref: '#/components/schemas/NotificationWorkflowActionBuilderWorkflowAction' + - $ref: '#/components/schemas/OpenPageWorkflowActionBuilderWorkflowAction' + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction + - $ref: '#/components/schemas/LogoutWorkflowActionBuilderWorkflowAction' + discriminator: + propertyName: type + mapping: + notification: '#/components/schemas/NotificationWorkflowActionBuilderWorkflowAction' + open_page: '#/components/schemas/OpenPageWorkflowActionBuilderWorkflowAction' + create_row: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction + update_row: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction + logout: '#/components/schemas/LogoutWorkflowActionBuilderWorkflowAction' + Builder_Workflow_Action_TypeCreateBuilderWorkflowAction: + oneOf: + - $ref: >- + #/components/schemas/NotificationWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/OpenPageWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction + - $ref: '#/components/schemas/LogoutWorkflowActionCreateBuilderWorkflowAction' + discriminator: + propertyName: type + mapping: + notification: >- + #/components/schemas/NotificationWorkflowActionCreateBuilderWorkflowAction + open_page: >- + #/components/schemas/OpenPageWorkflowActionCreateBuilderWorkflowAction + create_row: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction + update_row: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction + logout: '#/components/schemas/LogoutWorkflowActionCreateBuilderWorkflowAction' + ButtonElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + ButtonElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + ButtonElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + ButtonElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + CalendarViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + date_field: + type: integer + nullable: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + 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 + 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. + CalendarViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + date_field: + type: integer + nullable: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + ChangePasswordBodyValidation: + type: object + properties: + old_password: + type: string + new_password: + type: string + required: + - new_password + - old_password + CheckboxElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + required: + - order + - type + CheckboxElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + required: + - id + - order + - page_id + - parent_element_id + - type + CheckboxElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + required: + - id + - order + - parent_element_id + - type + CheckboxElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + Collaborator: + type: object + properties: + id: + type: integer + name: + type: string + readOnly: true + required: + - id + - name + CollectionField: + type: object + description: >- + This serializer transform the flat properties object from/to a config + dict property. + + This allows us to see the field on the frontend side as a simple + polymorphic + + object. + properties: + id: + type: integer + readOnly: true + name: + type: string + description: The name of the field. + maxLength: 225 + type: + type: string + description: The type of the field. + maxLength: 225 + required: + - id + - name + - type + ColumnElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - order + - type + ColumnElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - id + - order + - page_id + - parent_element_id + - type + ColumnElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - id + - order + - parent_element_id + - type + ColumnElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + CombinedThemeConfigBlocks: + type: object + properties: + primary_color: + type: string + maxLength: 9 + secondary_color: + type: string + maxLength: 9 + border_color: + type: string + maxLength: 9 + heading_1_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_1_color: + type: string + maxLength: 9 + heading_2_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_2_color: + type: string + maxLength: 9 + heading_3_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_3_color: + type: string + maxLength: 9 + ConditionTypeEnum: + enum: + - AND + - OR + type: string + description: |- + * `AND` - And + * `OR` - Or + ConditionalColorValueProviderConfColor: + type: object + properties: + id: + type: string + description: A unique identifier for this condition. + color: + type: string + description: The color the decorator should take if the defined conditions apply. + filters: + type: array + items: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColorFilter' + description: >- + A list of conditions that the row must meet to get the selected + color. This list of conditions can be empty, in that case, this + color will always match the row values. + filter_groups: + type: array + items: + $ref: >- + #/components/schemas/ConditionalColorValueProviderConfColorFilterGroup + description: >- + A list of filter groups that the row must meet to get the selected + color. + operator: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + default: AND + description: |- + The boolean operator used to group all conditions. + + * `AND` - And + * `OR` - Or + required: + - color + - filters + - id + ConditionalColorValueProviderConfColorFilter: + type: object + properties: + id: + type: string + description: A unique identifier for this condition. + field: + type: integer + nullable: true + description: The field of which the value must be compared to the filter value. + type: + nullable: true + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + oneOf: + - $ref: '#/components/schemas/Type880Enum' + - $ref: '#/components/schemas/NullEnum' + value: + type: string + default: '' + description: The field of which the value must be compared to the filter value. + group: + type: string + nullable: true + description: >- + The id of the filter group this filter belongs to. If this is null, + the filter is not part of a filter group. + required: + - field + - id + - type + ConditionalColorValueProviderConfColorFilterGroup: + type: object + properties: + id: + type: string + description: A unique identifier for this condition. + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + default: AND + description: |- + The boolean operator used to group all conditions. + + * `AND` - And + * `OR` - Or + required: + - id + ConditionalColorValueProviderConfColors: + type: object + properties: + colors: + type: array + items: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColor' + description: >- + A list of color items. For each row, the value provider try to match + the defined colors one by one in the given order. The first matching + color is returned to the decorator. + required: + - colors + CountFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + CountFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + CountFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + CountFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + CreatePage: + type: object + properties: + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + required: + - name + - path + CreateRoleAssignment: + type: object + description: The create role assignment serializer. + properties: + subject_id: + type: integer + minimum: 1 + description: The subject ID. A subject is an actor that can do operations. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectTypeB9aEnum' + description: |- + The subject type. + + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + role: + type: string + nullable: true + description: >- + The uid of the role you want to assign to the user or team in the + given workspace. You can omit this property if you want to remove + the role. + scope_id: + type: integer + minimum: 1 + description: >- + The ID of the scope object. The scope object limit the role + assignment to this scope and all its descendants. + scope_type: + allOf: + - $ref: '#/components/schemas/ScopeTypeEnum' + description: |- + The scope object type. + + * `core` - core + * `application` - application + * `workspace` - workspace + * `workspace_invitation` - workspace_invitation + * `snapshot` - snapshot + * `workspace_user` - workspace_user + * `integration` - integration + * `user_source` - user_source + * `database` - database + * `database_table` - database_table + * `database_field` - database_field + * `database_view` - database_view + * `database_view_decoration` - database_view_decoration + * `database_view_sort` - database_view_sort + * `database_view_group` - database_view_group + * `database_view_filter` - database_view_filter + * `database_view_filter_group` - database_view_filter_group + * `token` - token + * `builder` - builder + * `builder_page` - builder_page + * `builder_element` - builder_element + * `builder_domain` - builder_domain + * `builder_data_source` - builder_data_source + * `builder_workflow_action` - builder_workflow_action + * `team` - team + * `team_subject` - team_subject + * `license` - license + required: + - role + - scope_id + - scope_type + - subject_id + - subject_type + CreateSnapshotJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + CreateSnapshotJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + CreateViewFilter: + type: object + properties: + field: + type: integer + description: The field of which the value must be compared to the filter value. + type: + allOf: + - $ref: '#/components/schemas/Type880Enum' + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + value: + type: string + default: '' + description: The filter value that must be compared to the field's value. + maxLength: 255 + group: + type: integer + nullable: true + description: >- + The id of the filter group the new filter will belong to. If this is + null, the filter will not be part of a filter group, but directly + part of the view. + required: + - field + - type + CreateViewFilterGroup: + type: object + properties: + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + CreateViewGroupBy: + type: object + properties: + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + default: ASC + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + default: 200 + description: The pixel width of the group by in the related view. + required: + - field + CreateViewSort: + type: object + properties: + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + default: ASC + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + CreateWorkspaceInvitation: + type: object + properties: + email: + type: string + format: email + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + maxLength: 254 + permissions: + type: string + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + maxLength: 32 + message: + type: string + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + maxLength: 250 + base_url: + type: string + format: uri + description: >- + The base URL where the user can publicly accept his invitation.The + accept token is going to be appended to the base_url (base_url + '/token'). + required: + - base_url + - email + CreatedByFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + CreatedByFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + CreatedByFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + CreatedByFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + CreatedOnFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + required: + - type + CreatedOnFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + CreatedOnFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + CreatedOnFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + CsvColumnSeparatorEnum: + enum: + - ',' + - ; + - '|' + - tab + - record_separator + - unit_separator + type: string + description: "* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + CsvExporterOptions: + type: object + properties: + view_id: + type: integer + minimum: 0 + nullable: true + description: >- + Optional: The view for this table to export using its filters, sorts + and other view specific settings. + exporter_type: + allOf: + - $ref: '#/components/schemas/ExporterTypeEnum' + description: |- + The file type to export to. + + * `csv` - csv + * `json` - json + * `xml` - xml + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_include_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + required: + - exporter_type + CustomDomainCreateDomain: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type0a6Enum' + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + domain_name: + type: string + maxLength: 255 + required: + - domain_name + - type + CustomDomainDomain: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the domain. + domain_name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + builder_id: + type: integer + readOnly: true + last_published: + type: string + format: date-time + nullable: true + description: Last publication date of this domain + required: + - builder_id + - domain_name + - id + - order + - type + Dashboard: + type: object + properties: + group_invitations: + type: array + items: + $ref: '#/components/schemas/UserWorkspaceInvitation' + workspace_invitations: + type: array + items: + $ref: '#/components/schemas/UserWorkspaceInvitation' + required: + - group_invitations + - workspace_invitations + DatabaseApplication: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + description: The workspace that the application belongs to. + tables: + type: array + items: + $ref: '#/components/schemas/TableSerializerWithFields' + description: >- + This field is specific to the `database` application and contains an + array of tables that are in the database. + views: + type: array + items: + $ref: '#/components/schemas/LocalBaserowView' + description: >- + This field is specific to the `database` application and contains an + array of views that are in the tables. + required: + - group + - id + - name + - order + - tables + - type + - views + - workspace + DatabaseBaseApplicationCreatePolymorphic: + type: object + properties: + name: + type: string + maxLength: 160 + type: + $ref: '#/components/schemas/TypeF4fEnum' + init_with_data: + type: boolean + default: false + required: + - name + - type + DatabaseBaseApplicationUpdatePolymorphic: + type: object + properties: + name: + type: string + maxLength: 160 + required: + - name + DateFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + required: + - type + DateFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + DateFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + DateFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + DateFormatEnum: + enum: + - EU + - US + - ISO + type: string + description: |- + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + DateTimeFormatEnum: + enum: + - '24' + - '12' + type: string + description: |- + * `24` - 24 hour + * `12` - 12 hour + Decorator_Value_Provider_TypeCreateViewDecoration: + oneOf: + - $ref: >- + #/components/schemas/GeneratedSingle_select_colorCreateViewDecoration + - $ref: '#/components/schemas/GeneratedConditional_colorCreateViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: >- + #/components/schemas/GeneratedSingle_select_colorCreateViewDecoration + conditional_color: '#/components/schemas/GeneratedConditional_colorCreateViewDecoration' + Decorator_Value_Provider_TypeViewDecoration: + oneOf: + - $ref: '#/components/schemas/GeneratedSingle_select_colorViewDecoration' + - $ref: '#/components/schemas/GeneratedConditional_colorViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: '#/components/schemas/GeneratedSingle_select_colorViewDecoration' + conditional_color: '#/components/schemas/GeneratedConditional_colorViewDecoration' + Domain_TypeCreateDomain: + oneOf: + - $ref: '#/components/schemas/CustomDomainCreateDomain' + - $ref: '#/components/schemas/SubDomainCreateDomain' + discriminator: + propertyName: type + mapping: + custom: '#/components/schemas/CustomDomainCreateDomain' + sub_domain: '#/components/schemas/SubDomainCreateDomain' + Domain_TypeDomain: + oneOf: + - $ref: '#/components/schemas/CustomDomainDomain' + - $ref: '#/components/schemas/SubDomainDomain' + discriminator: + propertyName: type + mapping: + custom: '#/components/schemas/CustomDomainDomain' + sub_domain: '#/components/schemas/SubDomainDomain' + DropdownElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - order + - type + DropdownElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - id + - order + - page_id + - parent_element_id + - type + DropdownElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - id + - order + - parent_element_id + - type + DropdownElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + DropdownOption: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + description: The value of the option + name: + type: string + description: The display name of the option + required: + - id + DuplicateApplicationJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + application_id: + type: integer + description: The application ID to duplicate. + required: + - application_id + - type + DuplicateApplicationJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + duplicated_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + required: + - duplicated_application + - id + - original_application + - progress_percentage + - state + - type + DuplicateElement: + type: object + properties: + elements: + type: array + items: + $ref: '#/components/schemas/Element' + readOnly: true + description: The duplicated elements. + workflow_actions: + type: array + items: + $ref: '#/components/schemas/BuilderWorkflowAction' + readOnly: true + description: The duplicated workflow actions + required: + - elements + - workflow_actions + DuplicateFieldJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + field_id: + type: integer + description: The ID of the field to duplicate. + duplicate_data: + type: boolean + default: false + description: Whether to duplicate the data of the field. + required: + - field_id + - type + DuplicateFieldJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_field: + allOf: + - $ref: '#/components/schemas/Field' + readOnly: true + duplicated_field: + allOf: + - $ref: '#/components/schemas/FieldSerializerWithRelatedFields' + readOnly: true + required: + - duplicated_field + - id + - original_field + - progress_percentage + - state + - type + DuplicatePageJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + page_id: + type: integer + description: The ID of the page to duplicate. + required: + - page_id + - type + DuplicatePageJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + duplicated_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + required: + - duplicated_page + - id + - original_page + - progress_percentage + - state + - type + DuplicateTableJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + table_id: + type: integer + description: The ID of the table to duplicate. + required: + - table_id + - type + DuplicateTableJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + duplicated_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + required: + - duplicated_table + - id + - original_table + - progress_percentage + - state + - type + DurationFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + required: + - name + - type + DurationFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + required: + - id + - name + - order + - read_only + - table_id + - type + DurationFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + DurationFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + DurationFormatEnum: + enum: + - h:mm + - h:mm:ss + - h:mm:ss.s + - h:mm:ss.ss + - h:mm:ss.sss + - d h + - d h:mm + - d h:mm:ss + type: string + description: |- + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + Element: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + required: + - id + - order + - page_id + - parent_element_id + - type + Element_TypeCreateElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementCreateElement' + - $ref: '#/components/schemas/TextElementCreateElement' + - $ref: '#/components/schemas/LinkElementCreateElement' + - $ref: '#/components/schemas/ImageElementCreateElement' + - $ref: '#/components/schemas/InputTextElementCreateElement' + - $ref: '#/components/schemas/ColumnElementCreateElement' + - $ref: '#/components/schemas/ButtonElementCreateElement' + - $ref: '#/components/schemas/TableElementCreateElement' + - $ref: '#/components/schemas/FormContainerElementCreateElement' + - $ref: '#/components/schemas/DropdownElementCreateElement' + - $ref: '#/components/schemas/CheckboxElementCreateElement' + - $ref: '#/components/schemas/IFrameElementCreateElement' + - $ref: '#/components/schemas/AuthFormElementCreateElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementCreateElement' + text: '#/components/schemas/TextElementCreateElement' + link: '#/components/schemas/LinkElementCreateElement' + image: '#/components/schemas/ImageElementCreateElement' + input_text: '#/components/schemas/InputTextElementCreateElement' + column: '#/components/schemas/ColumnElementCreateElement' + button: '#/components/schemas/ButtonElementCreateElement' + table: '#/components/schemas/TableElementCreateElement' + form_container: '#/components/schemas/FormContainerElementCreateElement' + dropdown: '#/components/schemas/DropdownElementCreateElement' + checkbox: '#/components/schemas/CheckboxElementCreateElement' + iframe: '#/components/schemas/IFrameElementCreateElement' + auth_form: '#/components/schemas/AuthFormElementCreateElement' + Element_TypeElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementElement' + - $ref: '#/components/schemas/TextElementElement' + - $ref: '#/components/schemas/LinkElementElement' + - $ref: '#/components/schemas/ImageElementElement' + - $ref: '#/components/schemas/InputTextElementElement' + - $ref: '#/components/schemas/ColumnElementElement' + - $ref: '#/components/schemas/ButtonElementElement' + - $ref: '#/components/schemas/TableElementElement' + - $ref: '#/components/schemas/FormContainerElementElement' + - $ref: '#/components/schemas/DropdownElementElement' + - $ref: '#/components/schemas/CheckboxElementElement' + - $ref: '#/components/schemas/IFrameElementElement' + - $ref: '#/components/schemas/AuthFormElementElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementElement' + text: '#/components/schemas/TextElementElement' + link: '#/components/schemas/LinkElementElement' + image: '#/components/schemas/ImageElementElement' + input_text: '#/components/schemas/InputTextElementElement' + column: '#/components/schemas/ColumnElementElement' + button: '#/components/schemas/ButtonElementElement' + table: '#/components/schemas/TableElementElement' + form_container: '#/components/schemas/FormContainerElementElement' + dropdown: '#/components/schemas/DropdownElementElement' + checkbox: '#/components/schemas/CheckboxElementElement' + iframe: '#/components/schemas/IFrameElementElement' + auth_form: '#/components/schemas/AuthFormElementElement' + Element_TypePublicElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementPublicElement' + - $ref: '#/components/schemas/TextElementPublicElement' + - $ref: '#/components/schemas/LinkElementPublicElement' + - $ref: '#/components/schemas/ImageElementPublicElement' + - $ref: '#/components/schemas/InputTextElementPublicElement' + - $ref: '#/components/schemas/ColumnElementPublicElement' + - $ref: '#/components/schemas/ButtonElementPublicElement' + - $ref: '#/components/schemas/TableElementPublicElement' + - $ref: '#/components/schemas/FormContainerElementPublicElement' + - $ref: '#/components/schemas/DropdownElementPublicElement' + - $ref: '#/components/schemas/CheckboxElementPublicElement' + - $ref: '#/components/schemas/IFrameElementPublicElement' + - $ref: '#/components/schemas/AuthFormElementPublicElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementPublicElement' + text: '#/components/schemas/TextElementPublicElement' + link: '#/components/schemas/LinkElementPublicElement' + image: '#/components/schemas/ImageElementPublicElement' + input_text: '#/components/schemas/InputTextElementPublicElement' + column: '#/components/schemas/ColumnElementPublicElement' + button: '#/components/schemas/ButtonElementPublicElement' + table: '#/components/schemas/TableElementPublicElement' + form_container: '#/components/schemas/FormContainerElementPublicElement' + dropdown: '#/components/schemas/DropdownElementPublicElement' + checkbox: '#/components/schemas/CheckboxElementPublicElement' + iframe: '#/components/schemas/IFrameElementPublicElement' + auth_form: '#/components/schemas/AuthFormElementPublicElement' + EmailFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + EmailFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + EmailFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + EmailFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + EmailNotificationFrequencyEnum: + enum: + - instant + - daily + - weekly + - never + type: string + description: |- + * `instant` - instant + * `daily` - daily + * `weekly` - weekly + * `never` - never + EmailTesterRequest: + type: object + properties: + target_email: + type: string + format: email + required: + - target_email + EmailTesterResponse: + type: object + properties: + succeeded: + type: boolean + description: Whether or not the test email was sent successfully. + error_stack: + type: string + nullable: true + description: The full stack trace and error message if the test email failed. + error_type: + type: string + nullable: true + description: The type of error that occurred if the test email failed. + error: + type: string + nullable: true + description: >- + A short message describing the error that occured if the test email + failed + required: + - succeeded + EventEnum: + enum: + - click + - submit + - after_login + type: string + description: |- + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + EventTypeEnum: + enum: + - rows.created + - row.created + - rows.updated + - row.updated + - rows.deleted + - row.deleted + type: string + description: |- + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + EventTypesEnum: + enum: + - rows.created + - rows.updated + - rows.deleted + type: string + description: |- + * `rows.created` - rows.created + * `rows.updated` - rows.updated + * `rows.deleted` - rows.deleted + Events3eaEnum: + enum: + - rows.created + - row.created + - rows.updated + - row.updated + - rows.deleted + - row.deleted + type: string + description: |- + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + ExampleBatchRowsRequest: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/ExampleRowRequestSerializerWithUserFieldNames' + maxItems: 200 + minItems: 1 + required: + - items + ExampleBatchRowsResponse: + type: object + properties: + items: + type: array + items: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + maxItems: 200 + minItems: 1 + required: + - items + ExampleBatchUpdateRowRequestSerializerWithUserFieldNames: + type: object + properties: + id: + type: integer + description: The unique identifier of the row in the table. + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + nullable: true + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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/FileFieldRequest' + nullable: true + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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: + type: integer + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + maxLength: 100 + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + required: + - id + ExampleRowRequest: + type: object + properties: + 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_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: + type: integer + nullable: true + 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. + 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/FileFieldRequest' + nullable: true + 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: + type: integer + 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: + type: integer + 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. The response represents + chosen field, but also the value and color is exposed. + 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. 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_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 list of objects representing the chosen + collaborators through the object's `id` property. The id is Baserow + user id. The response objects also contains the collaborator name + directly along with its id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. Allows + setting a write only password value. Providing a string will set the + password, `null` will unset it, `true` will be ignored. The response + will respond with `true` is a password is set, but will never expose + the password itself. + ExampleRowRequestSerializerWithUserFieldNames: + type: object + properties: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + nullable: true + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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/FileFieldRequest' + nullable: true + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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: + type: integer + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + maxLength: 100 + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + 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. + 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. + 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. 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 list of objects representing the chosen + collaborators through the object's `id` property. The id is Baserow + user id. The response objects also contains the collaborator name + directly along with its id. + field_24: + type: string + format: uuid + description: >- + This field represents the `uuid` field. The number in field_24 is in + a normal request or response the id of the field. Contains a unique + and persistent UUID for every row. + field_25: + type: integer + description: >- + This field represents the `autonumber` field. The number in field_25 + is in a normal request or response the id of the field. Contains a + unique and persistent incremental integer number for every row. + field_26: + type: boolean + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. Allows + setting a write only password value. Providing a string will set the + password, `null` will unset it, `true` will be ignored. The response + will respond with `true` is a password is set, but will never expose + the password itself. + required: + - id + ExampleRowResponseSerializerWithUserFieldNames: + 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. + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_24: + type: string + format: uuid + description: >- + This field represents the `uuid` field. The number in field_24 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Contains a unique and persistent + UUID for every row. + field_25: + type: integer + description: >- + This field represents the `autonumber` field. The number in field_25 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Contains a unique and persistent + incremental integer number for every row. + field_26: + type: boolean + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + required: + - id + Export: + oneOf: + - $ref: '#/components/schemas/CsvExporterOptions' + - $ref: '#/components/schemas/BaseExporterOptions' + - $ref: '#/components/schemas/BaseExporterOptions' + discriminator: + propertyName: exporter_type + mapping: + csv: '#/components/schemas/CsvExporterOptions' + json: '#/components/schemas/BaseExporterOptions' + xml: '#/components/schemas/BaseExporterOptions' + ExportCharsetEnum: + enum: + - utf-8 + - iso-8859-6 + - windows-1256 + - iso-8859-4 + - windows-1257 + - iso-8859-14 + - iso-8859-2 + - windows-1250 + - gbk + - gb18030 + - big5 + - koi8-r + - koi8-u + - iso-8859-5 + - windows-1251 + - x-mac-cyrillic + - iso-8859-7 + - windows-1253 + - iso-8859-8 + - windows-1255 + - euc-jp + - iso-2022-jp + - shift-jis + - euc-kr + - macintosh + - iso-8859-10 + - iso-8859-16 + - windows-874 + - windows-1254 + - windows-1258 + - iso-8859-1 + - windows-1252 + - iso-8859-3 + type: string + description: |- + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + ExportJob: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + id: + type: integer + readOnly: true + table: + type: integer + nullable: true + view: + type: integer + nullable: true + exporter_type: + type: string + state: + $ref: '#/components/schemas/StateEnum' + status: + type: string + readOnly: true + description: 'DEPRECATED: Use state instead' + exported_file_name: + type: string + nullable: true + created_at: + type: string + format: date-time + readOnly: true + progress_percentage: + type: number + format: double + url: + type: string + format: uri + readOnly: true + required: + - created_at + - exporter_type + - id + - state + - status + - url + ExporterTypeEnum: + enum: + - csv + - json + - xml + type: string + description: |- + * `csv` - csv + * `json` - json + * `xml` - xml + FacebookAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + Field: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + FieldCreateField: + oneOf: + - $ref: '#/components/schemas/TextFieldCreateField' + - $ref: '#/components/schemas/LongTextFieldCreateField' + - $ref: '#/components/schemas/URLFieldCreateField' + - $ref: '#/components/schemas/EmailFieldCreateField' + - $ref: '#/components/schemas/NumberFieldCreateField' + - $ref: '#/components/schemas/RatingFieldCreateField' + - $ref: '#/components/schemas/BooleanFieldCreateField' + - $ref: '#/components/schemas/DateFieldCreateField' + - $ref: '#/components/schemas/LastModifiedFieldCreateField' + - $ref: '#/components/schemas/LastModifiedByFieldCreateField' + - $ref: '#/components/schemas/CreatedOnFieldCreateField' + - $ref: '#/components/schemas/CreatedByFieldCreateField' + - $ref: '#/components/schemas/DurationFieldCreateField' + - $ref: '#/components/schemas/LinkRowFieldCreateField' + - $ref: '#/components/schemas/FileFieldCreateField' + - $ref: '#/components/schemas/SingleSelectFieldCreateField' + - $ref: '#/components/schemas/MultipleSelectFieldCreateField' + - $ref: '#/components/schemas/PhoneNumberFieldCreateField' + - $ref: '#/components/schemas/FormulaFieldCreateField' + - $ref: '#/components/schemas/CountFieldCreateField' + - $ref: '#/components/schemas/RollupFieldCreateField' + - $ref: '#/components/schemas/LookupFieldCreateField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldCreateField' + - $ref: '#/components/schemas/UUIDFieldCreateField' + - $ref: '#/components/schemas/AutonumberFieldCreateField' + - $ref: '#/components/schemas/PasswordFieldCreateField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldCreateField' + long_text: '#/components/schemas/LongTextFieldCreateField' + url: '#/components/schemas/URLFieldCreateField' + email: '#/components/schemas/EmailFieldCreateField' + number: '#/components/schemas/NumberFieldCreateField' + rating: '#/components/schemas/RatingFieldCreateField' + boolean: '#/components/schemas/BooleanFieldCreateField' + date: '#/components/schemas/DateFieldCreateField' + last_modified: '#/components/schemas/LastModifiedFieldCreateField' + last_modified_by: '#/components/schemas/LastModifiedByFieldCreateField' + created_on: '#/components/schemas/CreatedOnFieldCreateField' + created_by: '#/components/schemas/CreatedByFieldCreateField' + duration: '#/components/schemas/DurationFieldCreateField' + link_row: '#/components/schemas/LinkRowFieldCreateField' + file: '#/components/schemas/FileFieldCreateField' + single_select: '#/components/schemas/SingleSelectFieldCreateField' + multiple_select: '#/components/schemas/MultipleSelectFieldCreateField' + phone_number: '#/components/schemas/PhoneNumberFieldCreateField' + formula: '#/components/schemas/FormulaFieldCreateField' + count: '#/components/schemas/CountFieldCreateField' + rollup: '#/components/schemas/RollupFieldCreateField' + lookup: '#/components/schemas/LookupFieldCreateField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldCreateField' + uuid: '#/components/schemas/UUIDFieldCreateField' + autonumber: '#/components/schemas/AutonumberFieldCreateField' + password: '#/components/schemas/PasswordFieldCreateField' + FieldField: + oneOf: + - $ref: '#/components/schemas/TextFieldField' + - $ref: '#/components/schemas/LongTextFieldField' + - $ref: '#/components/schemas/URLFieldField' + - $ref: '#/components/schemas/EmailFieldField' + - $ref: '#/components/schemas/NumberFieldField' + - $ref: '#/components/schemas/RatingFieldField' + - $ref: '#/components/schemas/BooleanFieldField' + - $ref: '#/components/schemas/DateFieldField' + - $ref: '#/components/schemas/LastModifiedFieldField' + - $ref: '#/components/schemas/LastModifiedByFieldField' + - $ref: '#/components/schemas/CreatedOnFieldField' + - $ref: '#/components/schemas/CreatedByFieldField' + - $ref: '#/components/schemas/DurationFieldField' + - $ref: '#/components/schemas/LinkRowFieldField' + - $ref: '#/components/schemas/FileFieldField' + - $ref: '#/components/schemas/SingleSelectFieldField' + - $ref: '#/components/schemas/MultipleSelectFieldField' + - $ref: '#/components/schemas/PhoneNumberFieldField' + - $ref: '#/components/schemas/FormulaFieldField' + - $ref: '#/components/schemas/CountFieldField' + - $ref: '#/components/schemas/RollupFieldField' + - $ref: '#/components/schemas/LookupFieldField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldField' + - $ref: '#/components/schemas/UUIDFieldField' + - $ref: '#/components/schemas/AutonumberFieldField' + - $ref: '#/components/schemas/PasswordFieldField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldField' + long_text: '#/components/schemas/LongTextFieldField' + url: '#/components/schemas/URLFieldField' + email: '#/components/schemas/EmailFieldField' + number: '#/components/schemas/NumberFieldField' + rating: '#/components/schemas/RatingFieldField' + boolean: '#/components/schemas/BooleanFieldField' + date: '#/components/schemas/DateFieldField' + last_modified: '#/components/schemas/LastModifiedFieldField' + last_modified_by: '#/components/schemas/LastModifiedByFieldField' + created_on: '#/components/schemas/CreatedOnFieldField' + created_by: '#/components/schemas/CreatedByFieldField' + duration: '#/components/schemas/DurationFieldField' + link_row: '#/components/schemas/LinkRowFieldField' + file: '#/components/schemas/FileFieldField' + single_select: '#/components/schemas/SingleSelectFieldField' + multiple_select: '#/components/schemas/MultipleSelectFieldField' + phone_number: '#/components/schemas/PhoneNumberFieldField' + formula: '#/components/schemas/FormulaFieldField' + count: '#/components/schemas/CountFieldField' + rollup: '#/components/schemas/RollupFieldField' + lookup: '#/components/schemas/LookupFieldField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldField' + uuid: '#/components/schemas/UUIDFieldField' + autonumber: '#/components/schemas/AutonumberFieldField' + password: '#/components/schemas/PasswordFieldField' + FieldFieldSerializerWithRelatedFields: + oneOf: + - $ref: '#/components/schemas/TextFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LongTextFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/URLFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/EmailFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/NumberFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/RatingFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/BooleanFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/DateFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/LastModifiedFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/LastModifiedByFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/CreatedOnFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/CreatedByFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/DurationFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LinkRowFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/FileFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/SingleSelectFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/MultipleSelectFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/PhoneNumberFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/FormulaFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/CountFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/RollupFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LookupFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/MultipleCollaboratorsFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/UUIDFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/AutonumberFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/PasswordFieldFieldSerializerWithRelatedFields' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldFieldSerializerWithRelatedFields' + long_text: '#/components/schemas/LongTextFieldFieldSerializerWithRelatedFields' + url: '#/components/schemas/URLFieldFieldSerializerWithRelatedFields' + email: '#/components/schemas/EmailFieldFieldSerializerWithRelatedFields' + number: '#/components/schemas/NumberFieldFieldSerializerWithRelatedFields' + rating: '#/components/schemas/RatingFieldFieldSerializerWithRelatedFields' + boolean: '#/components/schemas/BooleanFieldFieldSerializerWithRelatedFields' + date: '#/components/schemas/DateFieldFieldSerializerWithRelatedFields' + last_modified: >- + #/components/schemas/LastModifiedFieldFieldSerializerWithRelatedFields + last_modified_by: >- + #/components/schemas/LastModifiedByFieldFieldSerializerWithRelatedFields + created_on: '#/components/schemas/CreatedOnFieldFieldSerializerWithRelatedFields' + created_by: '#/components/schemas/CreatedByFieldFieldSerializerWithRelatedFields' + duration: '#/components/schemas/DurationFieldFieldSerializerWithRelatedFields' + link_row: '#/components/schemas/LinkRowFieldFieldSerializerWithRelatedFields' + file: '#/components/schemas/FileFieldFieldSerializerWithRelatedFields' + single_select: >- + #/components/schemas/SingleSelectFieldFieldSerializerWithRelatedFields + multiple_select: >- + #/components/schemas/MultipleSelectFieldFieldSerializerWithRelatedFields + phone_number: >- + #/components/schemas/PhoneNumberFieldFieldSerializerWithRelatedFields + formula: '#/components/schemas/FormulaFieldFieldSerializerWithRelatedFields' + count: '#/components/schemas/CountFieldFieldSerializerWithRelatedFields' + rollup: '#/components/schemas/RollupFieldFieldSerializerWithRelatedFields' + lookup: '#/components/schemas/LookupFieldFieldSerializerWithRelatedFields' + multiple_collaborators: >- + #/components/schemas/MultipleCollaboratorsFieldFieldSerializerWithRelatedFields + uuid: '#/components/schemas/UUIDFieldFieldSerializerWithRelatedFields' + autonumber: '#/components/schemas/AutonumberFieldFieldSerializerWithRelatedFields' + password: '#/components/schemas/PasswordFieldFieldSerializerWithRelatedFields' + FieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + FileFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + FileFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + FileFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + FileFieldRequest: + type: object + properties: + visible_name: + type: string + description: A visually editable name for the field. + name: + type: string + description: Accepts the name of the already uploaded user file. + required: + - name + 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 + FileFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + FileImportJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + FileImportJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + database_id: + type: integer + description: Database id where the table will be created. + name: + type: string + description: The name of the new table. + maxLength: 255 + table_id: + type: integer + description: Table id where the data will be imported. + first_row_header: + type: boolean + default: false + report: + allOf: + - $ref: '#/components/schemas/Report' + description: Import error report. + required: + - database_id + - id + - progress_percentage + - report + - state + - type + FilterActionTypeEnum: + enum: + - create_group + - delete_group + - update_group + - order_groups + - create_application + - update_application + - delete_application + - order_applications + - duplicate_application + - install_template + - create_group_invitation + - delete_group_invitation + - accept_group_invitation + - reject_group_invitation + - update_group_invitation_permissions + - leave_group + - create_snapshot + - delete_snapshot + - restore_snapshot + - empty_trash + - restore_from_trash + - create_user + - update_user + - schedule_user_deletion + - cancel_user_deletion + - sign_in_user + - change_user_password + - send_reset_user_password + - reset_user_password + - create_db_token + - update_db_token_name + - update_db_token_permissions + - rotate_db_token_key + - delete_db_token_key + - create_webhook + - delete_webhook + - update_webhook + - export_table + - import_database_from_airtable + - create_table + - delete_table + - order_tables + - update_table + - duplicate_table + - create_row + - create_rows + - import_rows + - delete_row + - delete_rows + - move_row + - update_row + - update_rows + - create_view + - duplicate_view + - delete_view + - order_views + - update_view + - create_view_filter + - update_view_filter + - delete_view_filter + - create_view_sort + - update_view_sort + - delete_view_sort + - create_view_group + - update_view_group + - delete_view_group + - rotate_view_slug + - update_view_field_options + - create_decoration + - update_decoration + - delete_decoration + - create_view_filter_group + - update_view_filter_group + - delete_view_filter_group + - create_field + - delete_field + - update_field + - duplicate_field + - create_row_comment + - delete_row_comment + - update_row_comment + - create_team + - update_team + - delete_team + - create_team_subject + - delete_team_subject + - batch_assign_role + type: string + description: >- + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + FormContainerElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + FormContainerElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + FormContainerElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + FormContainerElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + FormViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The cover image that must be displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The logo image that must be displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + receive_notification_on_submit: + type: boolean + readOnly: true + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - receive_notification_on_submit + - slug + - type + FormViewFieldOptions: + type: object + properties: + name: + type: string + description: >- + By default, the name of the related field will be shown to the + visitor. Optionally another name can be used by setting this name. + maxLength: 255 + description: + type: string + description: If provided, then this value be will be shown under the field name. + enabled: + type: boolean + description: Indicates whether the field is included in the form. + required: + type: boolean + description: Indicates whether the field is required for the visitor to fill out. + show_when_matching_conditions: + type: boolean + description: Indicates whether this field is visible when the conditions are met. + condition_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all (AND) or any (OR) of the conditions should + match before shown. + + + * `AND` - And + + * `OR` - Or + order: + type: integer + maximum: 32767 + minimum: -32768 + description: The order that the field has in the form. Lower value is first. + conditions: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsCondition' + condition_groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + field_component: + type: string + description: >- + Indicates which field input component is used in the form. The value + is only used in the frontend, and can differ per field. + maxLength: 32 + FormViewFieldOptionsCondition: + type: object + properties: + id: + type: integer + field: + type: integer + type: + type: string + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + maxLength: 48 + value: + type: string + description: The filter value that must be compared to the field's value. + maxLength: 255 + group: + type: integer + nullable: true + required: + - field + - id + - type + FormViewFieldOptionsConditionGroup: + type: object + properties: + id: + type: integer + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + required: + - id + FormViewSubmitted: + type: object + properties: + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + row_id: + type: integer + required: + - row_id + FormViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The cover image that must be displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The logo image that must be displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + receive_notification_on_submit: + type: boolean + readOnly: true + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - receive_notification_on_submit + - slug + - table + - table_id + - type + FormatEnum: + enum: + - plain + - markdown + type: string + description: |- + * `plain` - Plain + * `markdown` - Markdown + FormulaFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - name + - nullable + - type + FormulaFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - id + - name + - nullable + - order + - read_only + - table_id + - type + FormulaFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + FormulaFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - nullable + FormulaTypeEnum: + enum: + - invalid + - text + - char + - button + - link + - date_interval + - duration + - date + - boolean + - number + - array + - single_select + - multiple_select + - single_file + type: string + description: |- + * `invalid` - invalid + * `text` - text + * `char` - char + * `button` - button + * `link` - link + * `date_interval` - date_interval + * `duration` - duration + * `date` - date + * `boolean` - boolean + * `number` - number + * `array` - array + * `single_select` - single_select + * `multiple_select` - multiple_select + * `single_file` - single_file + FullHealthCheck: + type: object + properties: + passing: + type: boolean + readOnly: true + description: >- + False if any of the critical service health checks are failing, true + otherwise. + checks: + type: object + additionalProperties: + type: string + readOnly: true + description: >- + An object keyed by the name of the health check and the value being + the result. + required: + - checks + - passing + GalleryViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + GalleryViewFieldOptions: + 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 form. Lower value is first. + GalleryViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + GeneratedConditional_colorCreateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + default: '' + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - type + GeneratedConditional_colorUpdateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + GeneratedConditional_colorViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: + type: string + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + maxLength: 255 + value_provider_type: + type: string + description: The value provider type that gives the value to the decorator. + maxLength: 255 + value_provider_conf: + allOf: + - $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - id + GeneratedSingle_select_colorCreateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + default: '' + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/SelectColorValueProviderConf' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - type + GeneratedSingle_select_colorUpdateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/SelectColorValueProviderConf' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + GeneratedSingle_select_colorViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: + type: string + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + maxLength: 255 + value_provider_type: + type: string + description: The value provider type that gives the value to the decorator. + maxLength: 255 + value_provider_conf: + allOf: + - $ref: '#/components/schemas/SelectColorValueProviderConf' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - id + GitHubAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + GitLabAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + base_url: + type: string + format: uri + description: Base URL of the authorization server + maxLength: 200 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - base_url + - client_id + - id + - name + - secret + - type + GoogleAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + GridViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + GridViewFieldOptions: + type: object + properties: + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The width of the table field in the related view. + hidden: + type: boolean + description: Whether or not the field should be hidden in the current view. + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position that the field has within the view, lowest first. If + there is another field with the same order value then the field with + the lowest id must be shown first. + aggregation_type: + type: string + description: >- + Indicates how the field value is aggregated. This value is different + from the `aggregation_raw_type`. The `aggregation_raw_type` is the + value extracted from the database, while the `aggregation_type` can + implies further calculations. For example: if you want to compute an + average, `sum` is going to be the `aggregation_raw_type`, the value + extracted from database, and `sum / row_count` will be the + aggregation result displayed to the user. This aggregation_type + should be used by the client to compute the final value. + maxLength: 48 + aggregation_raw_type: + description: >- + Indicates how to compute the raw aggregation value from database. + This type must be registered in the backend prior to use it. + + + * `empty_count` - empty_count + + * `not_empty_count` - not_empty_count + + * `unique_count` - unique_count + + * `min` - min + + * `max` - max + + * `sum` - sum + + * `average` - average + + * `median` - median + + * `decile` - decile + + * `variance` - variance + + * `std_dev` - std_dev + oneOf: + - $ref: '#/components/schemas/AggregationRawTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + GridViewFilter: + type: object + properties: + field_ids: + type: array + items: + type: integer + description: >- + Only the fields related to the provided ids are added to the + response. If None are provided all fields will be returned. + row_ids: + type: array + items: + type: integer + description: Only rows related to the provided ids are added to the response. + required: + - row_ids + GridViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + HeadingElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - order + - type + HeadingElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - id + - order + - page_id + - parent_element_id + - type + HeadingElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - id + - order + - parent_element_id + - type + HeadingElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + IFrameElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + required: + - order + - type + IFrameElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + required: + - id + - order + - page_id + - parent_element_id + - type + IFrameElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + required: + - id + - order + - parent_element_id + - type + IFrameElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + IdEnum: + enum: + - create_group + - delete_group + - update_group + - order_groups + - create_application + - update_application + - delete_application + - order_applications + - duplicate_application + - install_template + - create_group_invitation + - delete_group_invitation + - accept_group_invitation + - reject_group_invitation + - update_group_invitation_permissions + - leave_group + - create_snapshot + - delete_snapshot + - restore_snapshot + - empty_trash + - restore_from_trash + - create_user + - update_user + - schedule_user_deletion + - cancel_user_deletion + - sign_in_user + - change_user_password + - send_reset_user_password + - reset_user_password + - create_db_token + - update_db_token_name + - update_db_token_permissions + - rotate_db_token_key + - delete_db_token_key + - create_webhook + - delete_webhook + - update_webhook + - export_table + - import_database_from_airtable + - create_table + - delete_table + - order_tables + - update_table + - duplicate_table + - create_row + - create_rows + - import_rows + - delete_row + - delete_rows + - move_row + - update_row + - update_rows + - create_view + - duplicate_view + - delete_view + - order_views + - update_view + - create_view_filter + - update_view_filter + - delete_view_filter + - create_view_sort + - update_view_sort + - delete_view_sort + - create_view_group + - update_view_group + - delete_view_group + - rotate_view_slug + - update_view_field_options + - create_decoration + - update_decoration + - delete_decoration + - create_view_filter_group + - update_view_filter_group + - delete_view_filter_group + - create_field + - delete_field + - update_field + - duplicate_field + - create_row_comment + - delete_row_comment + - update_row_comment + - create_team + - update_team + - delete_team + - create_team_subject + - delete_team_subject + - batch_assign_role + type: string + description: >- + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + ImageElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The image file + image_url: + type: string + description: A link to the image file + maxLength: 1000 + alt_text: + type: string + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + nullable: true + default: 100 + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + required: + - order + - type + ImageElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + $ref: '#/components/schemas/UserFile' + image_url: + type: string + default: '' + description: A link to the image file + alt_text: + type: string + default: '' + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + maximum: 100 + minimum: 0 + nullable: true + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + required: + - id + - order + - page_id + - parent_element_id + - type + ImageElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + $ref: '#/components/schemas/UserFile' + image_url: + type: string + default: '' + description: A link to the image file + alt_text: + type: string + default: '' + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + maximum: 100 + minimum: 0 + nullable: true + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + required: + - id + - order + - parent_element_id + - type + ImageElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The image file + image_url: + type: string + description: A link to the image file + maxLength: 1000 + alt_text: + type: string + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + nullable: true + default: 100 + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + ImageSourceTypeEnum: + enum: + - upload + - url + type: string + description: |- + * `upload` - Upload + * `url` - Url + InputTextElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + required: + - order + - type + InputTextElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + required: + - id + - order + - page_id + - parent_element_id + - type + InputTextElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + required: + - id + - order + - parent_element_id + - type + InputTextElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + InstallTemplateJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + group_id: + type: integer + description: The ID of the group where the template will be installed. + workspace_id: + type: integer + description: The ID of the workspace where the template will be installed. + template_id: + type: integer + description: The template ID that will be installed. + required: + - template_id + - type + InstallTemplateJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + template: + allOf: + - $ref: '#/components/schemas/Template' + readOnly: true + installed_applications: + type: object + additionalProperties: {} + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + required: + - group + - id + - installed_applications + - progress_percentage + - state + - template + - type + - workspace + InstanceId: + type: object + properties: + instance_id: + type: string + readOnly: true + pattern: ^[-a-zA-Z0-9_]+$ + required: + - instance_id + IntegrationCreateIntegration: + oneOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationCreateIntegration' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowIntegrationCreateIntegration' + IntegrationIntegration: + oneOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationIntegration' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowIntegrationIntegration' + Integration_Service: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRow' + - $ref: '#/components/schemas/LocalBaserowListRows' + - $ref: '#/components/schemas/LocalBaserowUpsertRow' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRow' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRows' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRow' + Integration_ServiceCreateDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowCreateDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsCreateDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowCreateDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowCreateDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsCreateDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowCreateDataSource' + Integration_ServiceDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowDataSource' + Integration_ServicePublicDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowPublicDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsPublicDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowPublicDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowPublicDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsPublicDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowPublicDataSource' + Integration_ServiceService: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowService' + - $ref: '#/components/schemas/LocalBaserowListRowsService' + - $ref: '#/components/schemas/LocalBaserowUpsertRowService' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowService' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsService' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowService' + Job: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + Job_TypeCreateJob: + oneOf: + - $ref: '#/components/schemas/DuplicateApplicationJobCreateJob' + - $ref: '#/components/schemas/InstallTemplateJobCreateJob' + - $ref: '#/components/schemas/CreateSnapshotJobCreateJob' + - $ref: '#/components/schemas/RestoreSnapshotJobCreateJob' + - $ref: '#/components/schemas/AirtableImportJobCreateJob' + - $ref: '#/components/schemas/FileImportJobCreateJob' + - $ref: '#/components/schemas/DuplicateTableJobCreateJob' + - $ref: '#/components/schemas/DuplicateFieldJobCreateJob' + - $ref: '#/components/schemas/DuplicatePageJobCreateJob' + - $ref: '#/components/schemas/PublishDomainJobCreateJob' + - $ref: '#/components/schemas/AuditLogExportJobCreateJob' + discriminator: + propertyName: type + mapping: + duplicate_application: '#/components/schemas/DuplicateApplicationJobCreateJob' + install_template: '#/components/schemas/InstallTemplateJobCreateJob' + create_snapshot: '#/components/schemas/CreateSnapshotJobCreateJob' + restore_snapshot: '#/components/schemas/RestoreSnapshotJobCreateJob' + airtable: '#/components/schemas/AirtableImportJobCreateJob' + file_import: '#/components/schemas/FileImportJobCreateJob' + duplicate_table: '#/components/schemas/DuplicateTableJobCreateJob' + duplicate_field: '#/components/schemas/DuplicateFieldJobCreateJob' + duplicate_page: '#/components/schemas/DuplicatePageJobCreateJob' + publish_domain: '#/components/schemas/PublishDomainJobCreateJob' + audit_log_export: '#/components/schemas/AuditLogExportJobCreateJob' + Job_TypeJob: + oneOf: + - $ref: '#/components/schemas/DuplicateApplicationJobJob' + - $ref: '#/components/schemas/InstallTemplateJobJob' + - $ref: '#/components/schemas/CreateSnapshotJobJob' + - $ref: '#/components/schemas/RestoreSnapshotJobJob' + - $ref: '#/components/schemas/AirtableImportJobJob' + - $ref: '#/components/schemas/FileImportJobJob' + - $ref: '#/components/schemas/DuplicateTableJobJob' + - $ref: '#/components/schemas/DuplicateFieldJobJob' + - $ref: '#/components/schemas/DuplicatePageJobJob' + - $ref: '#/components/schemas/PublishDomainJobJob' + - $ref: '#/components/schemas/AuditLogExportJobJob' + discriminator: + propertyName: type + mapping: + duplicate_application: '#/components/schemas/DuplicateApplicationJobJob' + install_template: '#/components/schemas/InstallTemplateJobJob' + create_snapshot: '#/components/schemas/CreateSnapshotJobJob' + restore_snapshot: '#/components/schemas/RestoreSnapshotJobJob' + airtable: '#/components/schemas/AirtableImportJobJob' + file_import: '#/components/schemas/FileImportJobJob' + duplicate_table: '#/components/schemas/DuplicateTableJobJob' + duplicate_field: '#/components/schemas/DuplicateFieldJobJob' + duplicate_page: '#/components/schemas/DuplicatePageJobJob' + publish_domain: '#/components/schemas/PublishDomainJobJob' + audit_log_export: '#/components/schemas/AuditLogExportJobJob' + KanbanViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + single_select_field: + type: integer + nullable: true + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + KanbanViewExampleResponse: + type: object + properties: + rows: + type: object + additionalProperties: + $ref: '#/components/schemas/KanbanViewExampleResponseStack' + description: >- + Every select option related to the view's single select field can + have its own entry like this. + field_options: + type: array + items: + $ref: '#/components/schemas/KanbanViewFieldOptions' + 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 + KanbanViewExampleResponseStack: + 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 related with the provided + `limit` and `offset`. + required: + - count + - results + KanbanViewFieldOptions: + 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. + KanbanViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + single_select_field: + type: integer + nullable: true + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + LastModifiedByFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + LastModifiedByFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + LastModifiedByFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + LastModifiedByFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + LastModifiedFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + required: + - type + LastModifiedFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + LastModifiedFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + LastModifiedFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + License: + type: object + properties: + id: + type: integer + readOnly: true + license_id: + type: string + description: Unique identifier of the license. + is_active: + type: boolean + description: Indicates if the backend deems the license valid. + last_check: + type: string + format: date-time + nullable: true + valid_from: + type: string + format: date-time + description: From which timestamp the license becomes active. + valid_through: + type: string + format: date-time + description: Until which timestamp the license is active. + free_users_count: + type: integer + readOnly: true + description: The amount of free users that are currently using the license. + seats_taken: + type: integer + readOnly: true + description: The amount of users that are currently using the license. + seats: + type: integer + description: The maximum amount of users that can use the license. + product_code: + type: string + description: The product code that indicates what the license unlocks. + issued_on: + type: string + format: date-time + description: >- + The date when the license was issued. It could be that a new license + is issued with the same `license_id` because it was updated. In that + case, the one that has been issued last should be used. + issued_to_email: + type: string + format: email + description: Indicates to which email address the license has been issued. + issued_to_name: + type: string + description: Indicates to whom the license has been issued. + required: + - free_users_count + - id + - is_active + - issued_on + - issued_to_email + - issued_to_name + - license_id + - product_code + - seats + - seats_taken + - valid_from + - valid_through + LicenseUser: + type: object + properties: + id: + type: integer + readOnly: true + first_name: + type: string + maxLength: 150 + email: + type: string + format: email + title: Email address + maxLength: 254 + required: + - id + LicenseUserLookup: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + description: The name and the email address of the user. + readOnly: true + required: + - id + - value + LicenseWithUsers: + type: object + properties: + id: + type: integer + readOnly: true + license_id: + type: string + description: Unique identifier of the license. + is_active: + type: boolean + description: Indicates if the backend deems the license valid. + last_check: + type: string + format: date-time + nullable: true + valid_from: + type: string + format: date-time + description: From which timestamp the license becomes active. + valid_through: + type: string + format: date-time + description: Until which timestamp the license is active. + free_users_count: + type: integer + readOnly: true + description: The amount of free users that are currently using the license. + seats_taken: + type: integer + readOnly: true + description: The amount of users that are currently using the license. + seats: + type: integer + description: The maximum amount of users that can use the license. + product_code: + type: string + description: The product code that indicates what the license unlocks. + issued_on: + type: string + format: date-time + description: >- + The date when the license was issued. It could be that a new license + is issued with the same `license_id` because it was updated. In that + case, the one that has been issued last should be used. + issued_to_email: + type: string + format: email + description: Indicates to which email address the license has been issued. + issued_to_name: + type: string + description: Indicates to whom the license has been issued. + users: + type: array + items: + $ref: '#/components/schemas/LicenseUser' + readOnly: true + required: + - free_users_count + - id + - is_active + - issued_on + - issued_to_email + - issued_to_name + - license_id + - product_code + - seats + - seats_taken + - users + - valid_from + - valid_through + LinkElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + LinkElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + LinkElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + LinkElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + LinkRowFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + has_related_field: + type: boolean + required: + - name + - type + LinkRowFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_related_field_id: + type: integer + nullable: true + description: The id of the related field. + readOnly: true + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + link_row_related_field: + type: integer + readOnly: true + description: (Deprecated) The id of the related field. + required: + - id + - link_row_related_field + - link_row_related_field_id + - name + - order + - read_only + - table_id + - type + LinkRowFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_related_field_id: + type: integer + nullable: true + description: The id of the related field. + readOnly: true + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + link_row_related_field: + type: integer + readOnly: true + description: (Deprecated) The id of the related field. + required: + - id + - link_row_related_field + - link_row_related_field_id + - name + - order + - read_only + - related_fields + - table_id + - type + LinkRowFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + has_related_field: + type: boolean + 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. + required: + - id + ListWorkspaceUsersWithMemberData: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + id: + type: integer + readOnly: true + name: + type: string + readOnly: true + description: User defined name. + email: + type: string + readOnly: true + description: User email. + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: The workspace that the user has access to. + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + created_on: + type: string + format: date-time + readOnly: true + user_id: + type: integer + description: The user that has access to the workspace. + readOnly: true + to_be_deleted: + type: boolean + description: True if user account is pending deletion. + teams: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserEnterpriseTeam' + description: >- + Enterprise only: a list of team IDs and names, which this workspace + user belongs to in this workspace. + role_uid: + type: string + nullable: true + description: >- + Enterprise or advanced only: the uid of the role that is assigned to + this workspace user in this workspace. + highest_role_uid: + type: string + nullable: true + description: >- + Enterprise or advanced only: the highest role uid assigned to this + user in this workspace on anything, including roles from teams. + required: + - created_on + - email + - group + - id + - name + - to_be_deleted + - user_id + - workspace + LocalBaserowContextData: + type: object + properties: + databases: + type: array + items: + $ref: '#/components/schemas/DatabaseApplication' + required: + - databases + LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_ServiceService' + description: The service which this workflow action is associated with. + required: + - element_id + - event + - id + - order + - service + - type + LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + required: + - event + - id + - type + LocalBaserowCreateRowWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + LocalBaserowField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + type: + type: string + readOnly: true + description: The type of the related field. + required: + - id + - name + - table_id + - type + LocalBaserowGetRow: + type: object + properties: + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + LocalBaserowGetRowCreateDataSource: + type: object + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC03Enum' + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + name: + type: string + nullable: true + description: Human name for this data source. + page_id: + type: integer + nullable: true + description: Page this data source is linked to. + before_id: + type: integer + description: >- + If provided, creates the data_source before the data_source with the + given id. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - row_id + - table_id + - view_id + LocalBaserowGetRowDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the data source. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - name + - order + - page_id + - row_id + - schema + - table_id + - type + - view_id + LocalBaserowGetRowPublicDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + type: + type: string + readOnly: true + description: The type of the data source. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - name + - order + - page_id + - row_id + - table_id + - type + - view_id + LocalBaserowGetRowService: + type: object + description: Basic service serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the service. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - row_id + - schema + - table_id + - type + - view_id + LocalBaserowGetRowUpdateDataSource: + type: object + properties: + integration_id: + type: integer + nullable: true + description: The related integration id. + name: + type: string + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - row_id + - table_id + - view_id + LocalBaserowIntegrationCreateIntegration: + type: object + description: >- + This serializer allow to set the type of an integration and the + integration id + + before which we want to insert the new integration. + properties: + before_id: + type: integer + description: >- + If provided, creates the integration before the integration with the + given id. + type: + allOf: + - $ref: '#/components/schemas/Type5f7Enum' + description: |- + The type of the integration. + + * `local_baserow` - local_baserow + name: + type: string + maxLength: 255 + context_data: + allOf: + - $ref: '#/components/schemas/LocalBaserowContextData' + readOnly: true + authorized_user: + allOf: + - $ref: '#/components/schemas/SubjectUser' + readOnly: true + required: + - authorized_user + - context_data + - name + - type + LocalBaserowIntegrationIntegration: + type: object + description: Basic integration serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + application_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the integration. + name: + type: string + readOnly: true + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + context_data: + allOf: + - $ref: '#/components/schemas/LocalBaserowContextData' + readOnly: true + authorized_user: + allOf: + - $ref: '#/components/schemas/SubjectUser' + readOnly: true + required: + - application_id + - authorized_user + - context_data + - id + - name + - order + - type + LocalBaserowIntegrationUpdateIntegration: + type: object + properties: + name: + type: string + maxLength: 255 + context_data: + allOf: + - $ref: '#/components/schemas/LocalBaserowContextData' + readOnly: true + authorized_user: + allOf: + - $ref: '#/components/schemas/SubjectUser' + readOnly: true + required: + - authorized_user + - context_data + LocalBaserowListRows: + type: object + properties: + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + LocalBaserowListRowsCreateDataSource: + type: object + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC03Enum' + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + name: + type: string + nullable: true + description: Human name for this data source. + page_id: + type: integer + nullable: true + description: Page this data source is linked to. + before_id: + type: integer + description: >- + If provided, creates the data_source before the data_source with the + given id. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - table_id + - view_id + LocalBaserowListRowsDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the data source. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - name + - order + - page_id + - schema + - table_id + - type + - view_id + LocalBaserowListRowsPublicDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + type: + type: string + readOnly: true + description: The type of the data source. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - name + - order + - page_id + - table_id + - type + - view_id + LocalBaserowListRowsService: + type: object + description: Basic service serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the service. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - schema + - table_id + - type + - view_id + LocalBaserowListRowsUpdateDataSource: + type: object + properties: + integration_id: + type: integer + nullable: true + description: The related integration id. + name: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - table_id + - view_id + LocalBaserowPasswordAppAuthProviderAppAuthProvider: + type: object + description: Basic app_auth_provider serializer mostly for returned values. + properties: + type: + type: string + readOnly: true + description: The type of the app_auth_provider. + id: + type: integer + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + password_field_id: + type: integer + nullable: true + description: The id of the field to use as password for the user account. + required: + - id + - type + LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider: + type: object + description: >- + This serializer allow to set the type of an app_auth_provider and the + + app_auth_provider id before which we want to insert the new + app_auth_provider. + properties: + type: + allOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProviderTypeEnum + description: |- + The type of the app_auth_provider. + + * `local_baserow_password` - local_baserow_password + user_source_id: + type: integer + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + password_field_id: + type: integer + nullable: true + description: The id of the field to use as password for the user account. + required: + - type + - user_source_id + LocalBaserowPasswordAppAuthProviderBaseAppAuthProviderTypeEnum: + enum: + - local_baserow_password + type: string + description: '* `local_baserow_password` - local_baserow_password' + LocalBaserowTableServiceFieldMapping: + type: object + properties: + field_id: + type: integer + description: The primary key of the associated database table field. + value: + type: string + required: + - field_id + - value + LocalBaserowTableServiceFilter: + type: object + properties: + id: + type: integer + readOnly: true + order: + type: integer + readOnly: true + field: + type: integer + description: >- + The database Field, in the LocalBaserowTableService, which we would + like to filter upon. + type: + type: string + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + maxLength: 48 + value: + type: string + description: A formula for the filter's value. + value_is_formula: + type: boolean + default: false + description: Indicates whether the value is a formula or not. + required: + - field + - id + - order + - type + - value + LocalBaserowTableServiceSort: + type: object + properties: + id: + type: integer + readOnly: true + field: + type: integer + description: >- + The database Field, in the LocalBaserowTableService service, which + we would like to sort upon. + order: + type: integer + readOnly: true + order_by: + allOf: + - $ref: '#/components/schemas/OrderByEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + - id + - order + LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_ServiceService' + description: The service which this workflow action is associated with. + required: + - element_id + - event + - id + - order + - service + - type + LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + required: + - event + - id + - type + LocalBaserowUpdateRowWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + LocalBaserowUpsertRow: + type: object + properties: + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + LocalBaserowUpsertRowCreateDataSource: + type: object + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC03Enum' + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + name: + type: string + nullable: true + description: Human name for this data source. + page_id: + type: integer + nullable: true + description: Page this data source is linked to. + before_id: + type: integer + description: >- + If provided, creates the data_source before the data_source with the + given id. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + LocalBaserowUpsertRowDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + type: + type: string + readOnly: true + description: The type of the data source. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + required: + - id + - name + - order + - page_id + - schema + - type + LocalBaserowUpsertRowPublicDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + type: + type: string + readOnly: true + description: The type of the data source. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + required: + - id + - name + - order + - page_id + - type + LocalBaserowUpsertRowService: + type: object + description: Basic service serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + type: + type: string + readOnly: true + description: The type of the service. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + required: + - id + - schema + - type + LocalBaserowUpsertRowUpdateDataSource: + type: object + properties: + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + name: + type: string + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + LocalBaserowUserSourceBasePublicUserSource: + type: object + description: Basic user source serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the user_source. + name: + type: string + readOnly: true + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + required: + - id + - name + - order + - type + LocalBaserowUserSourceCreateUserSource: + type: object + description: >- + This serializer allow to set the type of an user_source and the + user_source id + + before which we want to insert the new user_source. + properties: + before_id: + type: integer + description: >- + If provided, creates the user_source before the user_source with the + given id. + type: + allOf: + - $ref: '#/components/schemas/Type5f7Enum' + description: |- + The type of the user_source. + + * `local_baserow` - local_baserow + name: + type: string + maxLength: 255 + integration_id: + type: integer + description: The related integration id. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderBaseAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + required: + - integration_id + - name + - type + LocalBaserowUserSourceUpdateUserSource: + type: object + description: A serializer to update a user source. + properties: + name: + type: string + maxLength: 255 + integration_id: + type: integer + description: The related integration id. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderBaseAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + LocalBaserowUserSourceUserSource: + type: object + description: Basic user_source serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + application_id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The Integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the user_source. + name: + type: string + readOnly: true + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + required: + - application_id + - id + - integration_id + - name + - order + - type + LocalBaserowView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + required: + - id + - name + - table_id + LogoutWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + required: + - element_id + - event + - id + - order + - type + LogoutWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + required: + - event + - id + - type + LogoutWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + LongTextFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + required: + - name + - type + LongTextFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + required: + - id + - name + - order + - read_only + - table_id + - type + LongTextFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + LongTextFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + LookupFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + LookupFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + LookupFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + LookupFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + ModeC5eEnum: + enum: + - form + - survey + type: string + description: |- + * `form` - form + * `survey` - survey + ModeFf8Enum: + enum: + - all + - mentions + type: string + description: |- + * `all` - all + * `mentions` - mentions + MultipleCollaboratorsFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + notify_user_when_added: + type: boolean + required: + - name + - type + MultipleCollaboratorsFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + notify_user_when_added: + type: boolean + required: + - id + - name + - order + - read_only + - table_id + - type + MultipleCollaboratorsFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + notify_user_when_added: + type: boolean + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + MultipleCollaboratorsFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + notify_user_when_added: + type: boolean + MultipleSelectFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - name + - type + MultipleSelectFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - table_id + - type + MultipleSelectFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + MultipleSelectFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + NavigationTypeEnum: + enum: + - page + - custom + type: string + description: |- + * `page` - Page + * `custom` - Custom + NotificationRecipient: + type: object + description: >- + Serialize notification data along with the recipient information about + the + + read status for the given user. + properties: + id: + type: integer + description: The id of the notification. + type: + type: string + description: The type of notification + sender: + allOf: + - $ref: '#/components/schemas/Sender' + description: The user that sent the notification. + workspace: + type: string + readOnly: true + description: The workspace that the notification is in (if any). + created_on: + type: string + format: date-time + description: The date and time that the notification was created. + read: + type: boolean + description: 'If True, then the notification has been read by the user. ' + data: + type: object + additionalProperties: {} + description: The data associated with the notification. + required: + - created_on + - data + - id + - sender + - type + - workspace + NotificationWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + required: + - element_id + - event + - id + - order + - type + NotificationWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + required: + - event + - id + - type + NotificationWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + NullEnum: + enum: + - null + NumberDecimalPlacesEnum: + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + type: integer + description: |- + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + NumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + required: + - name + - type + NumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + required: + - id + - name + - order + - read_only + - table_id + - type + NumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + NumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + OpenApiRoleAssignment: + type: object + description: Serializer for RoleAssignment used for the Open API spec + properties: + id: + type: integer + readOnly: true + role: + type: string + description: >- + The uid of the role assigned to the user or team in the given + workspace. + subject: + allOf: + - $ref: '#/components/schemas/OpenApiSubjectField' + description: >- + The structure of the subject field depends on the subject + typereturned and will have additional fields accordingly + subject_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The subject ID. + scope_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The unique scope ID. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectTypeB9aEnum' + description: |- + The subject type. + + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + scope_type: + allOf: + - $ref: '#/components/schemas/ScopeTypeEnum' + description: >- + The type of the scope object. The scope object limit the role + assignment to this scope and all its descendants. + + + * `core` - core + + * `application` - application + + * `workspace` - workspace + + * `workspace_invitation` - workspace_invitation + + * `snapshot` - snapshot + + * `workspace_user` - workspace_user + + * `integration` - integration + + * `user_source` - user_source + + * `database` - database + + * `database_table` - database_table + + * `database_field` - database_field + + * `database_view` - database_view + + * `database_view_decoration` - database_view_decoration + + * `database_view_sort` - database_view_sort + + * `database_view_group` - database_view_group + + * `database_view_filter` - database_view_filter + + * `database_view_filter_group` - database_view_filter_group + + * `token` - token + + * `builder` - builder + + * `builder_page` - builder_page + + * `builder_element` - builder_element + + * `builder_domain` - builder_domain + + * `builder_data_source` - builder_data_source + + * `builder_workflow_action` - builder_workflow_action + + * `team` - team + + * `team_subject` - team_subject + + * `license` - license + required: + - id + - role + - scope_id + - scope_type + - subject + - subject_id + - subject_type + OpenApiSubjectField: + type: object + properties: + id: + type: integer + required: + - id + OpenIdConnectAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + base_url: + type: string + format: uri + description: Base URL of the authorization server + maxLength: 200 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - base_url + - client_id + - id + - name + - secret + - type + OpenPageWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + url: + type: string + default: '' + description: The url to open. Must be an formula. + required: + - element_id + - event + - id + - order + - type + OpenPageWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + url: + type: string + default: '' + description: The url to open. Must be an formula. + required: + - event + - id + - type + OpenPageWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + url: + type: string + default: '' + description: The url to open. Must be an formula. + OrderApplications: + type: object + properties: + application_ids: + type: array + items: + type: integer + description: Application ids in the desired order. + required: + - application_ids + OrderByEnum: + enum: + - ASC + - DESC + type: string + description: |- + * `ASC` - Ascending + * `DESC` - Descending + OrderDomains: + type: object + properties: + domain_ids: + type: array + items: + type: integer + description: The ids of the domains in the order they are supposed to be set in + required: + - domain_ids + OrderEnum: + enum: + - ASC + - DESC + type: string + description: |- + * `ASC` - Ascending + * `DESC` - Descending + OrderPages: + type: object + properties: + page_ids: + type: array + items: + type: integer + description: The ids of the pages in the order they are supposed to be set in + required: + - page_ids + OrderTables: + type: object + properties: + table_ids: + type: array + items: + type: integer + description: Table ids in the desired order. + required: + - table_ids + OrderViews: + type: object + properties: + view_ids: + type: array + items: + type: integer + description: View ids in the desired order. + minItems: 1 + required: + - view_ids + OrderWorkflowActions: + type: object + properties: + workflow_action_ids: + type: array + items: + type: integer + description: >- + The ids of the workflow actions in the order they are supposed to be + set in + element_id: + type: integer + description: The element the workflow actions belong to + required: + - workflow_action_ids + OrderWorkspaces: + type: object + properties: + workspaces: + type: array + items: + type: integer + description: Workspace ids in the desired order. + required: + - workspaces + OwnershipTypeEnum: + enum: + - collaborative + - personal + type: string + description: |- + * `collaborative` - collaborative + * `personal` - personal + Page: + type: object + description: |- + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicPageSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + builder_id: + type: integer + readOnly: true + required: + - builder_id + - id + - name + - order + - path + PageParameterValue: + type: object + properties: + name: + type: string + value: + type: string + required: + - name + - value + PaginationSerializerAuditLog: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/AuditLog' + required: + - count + - next + - previous + - results + PaginationSerializerAuditLogUser: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/AuditLogUser' + required: + - count + - next + - previous + - results + PaginationSerializerAuditLogWorkspace: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/AuditLogWorkspace' + required: + - count + - next + - previous + - results + PaginationSerializerExampleRowResponseSerializerWithUserFieldNames: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + required: + - count + - next + - previous + - results + PaginationSerializerLicenseUserLookup: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/LicenseUserLookup' + required: + - count + - next + - previous + - results + PaginationSerializerLinkRowValue: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/LinkRowValue' + required: + - count + - next + - previous + - results + PaginationSerializerNotificationRecipient: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/NotificationRecipient' + required: + - count + - next + - previous + - results + PaginationSerializerRowComment: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/RowComment' + required: + - count + - next + - previous + - results + PaginationSerializerRowHistory: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/RowHistory' + required: + - count + - next + - previous + - results + PaginationSerializerTrashContents: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/TrashContents' + required: + - count + - next + - previous + - results + PaginationSerializerUserAdminResponse: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/UserAdminResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + 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. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWithGridViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + 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. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWorkspacesAdminResponse: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/WorkspacesAdminResponse' + required: + - count + - next + - previous + - results + PasswordAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + description: The email domain (if any) registered with this password provider. + enabled: + type: boolean + description: Whether the provider is enabled or not. + required: + - id + - type + PasswordFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + PasswordFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + PasswordFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + PasswordFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + PatchedAccount: + type: object + description: This serializer must be kept in sync with `UserSerializer`. + properties: + first_name: + type: string + maxLength: 150 + minLength: 2 + language: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + maxLength: 10 + minLength: 2 + email_notification_frequency: + allOf: + - $ref: '#/components/schemas/EmailNotificationFrequencyEnum' + description: >- + The maximum frequency at which the user wants to receive email + notifications. + + + * `instant` - instant + + * `daily` - daily + + * `weekly` - weekly + + * `never` - never + PatchedApplicationBaseApplicationUpdatePolymorphic: + oneOf: + - $ref: '#/components/schemas/DatabaseBaseApplicationUpdatePolymorphic' + - $ref: '#/components/schemas/BuilderBaseApplicationUpdatePolymorphic' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseBaseApplicationUpdatePolymorphic' + builder: '#/components/schemas/BuilderBaseApplicationUpdatePolymorphic' + PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions: + anyOf: + - $ref: >- + #/components/schemas/NotificationWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/OpenPageWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LogoutWorkflowActionUpdateBuilderWorkflowActions + PatchedCombinedThemeConfigBlocks: + type: object + properties: + primary_color: + type: string + maxLength: 9 + secondary_color: + type: string + maxLength: 9 + border_color: + type: string + maxLength: 9 + heading_1_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_1_color: + type: string + maxLength: 9 + heading_2_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_2_color: + type: string + maxLength: 9 + heading_3_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_3_color: + type: string + maxLength: 9 + PatchedDecorator_Value_Provider_TypeUpdateViewDecoration: + oneOf: + - $ref: >- + #/components/schemas/GeneratedSingle_select_colorUpdateViewDecoration + - $ref: '#/components/schemas/GeneratedConditional_colorUpdateViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: >- + #/components/schemas/GeneratedSingle_select_colorUpdateViewDecoration + conditional_color: '#/components/schemas/GeneratedConditional_colorUpdateViewDecoration' + PatchedElement_TypeUpdateElement: + anyOf: + - $ref: '#/components/schemas/HeadingElementUpdateElement' + - $ref: '#/components/schemas/TextElementUpdateElement' + - $ref: '#/components/schemas/LinkElementUpdateElement' + - $ref: '#/components/schemas/ImageElementUpdateElement' + - $ref: '#/components/schemas/InputTextElementUpdateElement' + - $ref: '#/components/schemas/ColumnElementUpdateElement' + - $ref: '#/components/schemas/ButtonElementUpdateElement' + - $ref: '#/components/schemas/TableElementUpdateElement' + - $ref: '#/components/schemas/FormContainerElementUpdateElement' + - $ref: '#/components/schemas/DropdownElementUpdateElement' + - $ref: '#/components/schemas/CheckboxElementUpdateElement' + - $ref: '#/components/schemas/IFrameElementUpdateElement' + - $ref: '#/components/schemas/AuthFormElementUpdateElement' + PatchedExampleBatchUpdateRowsRequest: + type: object + properties: + items: + type: array + items: + $ref: >- + #/components/schemas/ExampleBatchUpdateRowRequestSerializerWithUserFieldNames + maxItems: 200 + minItems: 1 + PatchedExampleUpdateRowRequestSerializerWithUserFieldNames: + type: object + properties: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + nullable: true + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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/FileFieldRequest' + nullable: true + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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: + type: integer + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + maxLength: 100 + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + PatchedFieldUpdateField: + oneOf: + - $ref: '#/components/schemas/TextFieldUpdateField' + - $ref: '#/components/schemas/LongTextFieldUpdateField' + - $ref: '#/components/schemas/URLFieldUpdateField' + - $ref: '#/components/schemas/EmailFieldUpdateField' + - $ref: '#/components/schemas/NumberFieldUpdateField' + - $ref: '#/components/schemas/RatingFieldUpdateField' + - $ref: '#/components/schemas/BooleanFieldUpdateField' + - $ref: '#/components/schemas/DateFieldUpdateField' + - $ref: '#/components/schemas/LastModifiedFieldUpdateField' + - $ref: '#/components/schemas/LastModifiedByFieldUpdateField' + - $ref: '#/components/schemas/CreatedOnFieldUpdateField' + - $ref: '#/components/schemas/CreatedByFieldUpdateField' + - $ref: '#/components/schemas/DurationFieldUpdateField' + - $ref: '#/components/schemas/LinkRowFieldUpdateField' + - $ref: '#/components/schemas/FileFieldUpdateField' + - $ref: '#/components/schemas/SingleSelectFieldUpdateField' + - $ref: '#/components/schemas/MultipleSelectFieldUpdateField' + - $ref: '#/components/schemas/PhoneNumberFieldUpdateField' + - $ref: '#/components/schemas/FormulaFieldUpdateField' + - $ref: '#/components/schemas/CountFieldUpdateField' + - $ref: '#/components/schemas/RollupFieldUpdateField' + - $ref: '#/components/schemas/LookupFieldUpdateField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldUpdateField' + - $ref: '#/components/schemas/UUIDFieldUpdateField' + - $ref: '#/components/schemas/AutonumberFieldUpdateField' + - $ref: '#/components/schemas/PasswordFieldUpdateField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldUpdateField' + long_text: '#/components/schemas/LongTextFieldUpdateField' + url: '#/components/schemas/URLFieldUpdateField' + email: '#/components/schemas/EmailFieldUpdateField' + number: '#/components/schemas/NumberFieldUpdateField' + rating: '#/components/schemas/RatingFieldUpdateField' + boolean: '#/components/schemas/BooleanFieldUpdateField' + date: '#/components/schemas/DateFieldUpdateField' + last_modified: '#/components/schemas/LastModifiedFieldUpdateField' + last_modified_by: '#/components/schemas/LastModifiedByFieldUpdateField' + created_on: '#/components/schemas/CreatedOnFieldUpdateField' + created_by: '#/components/schemas/CreatedByFieldUpdateField' + duration: '#/components/schemas/DurationFieldUpdateField' + link_row: '#/components/schemas/LinkRowFieldUpdateField' + file: '#/components/schemas/FileFieldUpdateField' + single_select: '#/components/schemas/SingleSelectFieldUpdateField' + multiple_select: '#/components/schemas/MultipleSelectFieldUpdateField' + phone_number: '#/components/schemas/PhoneNumberFieldUpdateField' + formula: '#/components/schemas/FormulaFieldUpdateField' + count: '#/components/schemas/CountFieldUpdateField' + rollup: '#/components/schemas/RollupFieldUpdateField' + lookup: '#/components/schemas/LookupFieldUpdateField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldUpdateField' + uuid: '#/components/schemas/UUIDFieldUpdateField' + autonumber: '#/components/schemas/AutonumberFieldUpdateField' + password: '#/components/schemas/PasswordFieldUpdateField' + PatchedIntegrationUpdateIntegration: + anyOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationUpdateIntegration' + PatchedIntegration_ServiceUpdateDataSource: + anyOf: + - $ref: '#/components/schemas/LocalBaserowGetRowUpdateDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsUpdateDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowUpdateDataSource' + PatchedMoveDataSource: + type: object + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the data_source is moved before the data_source with + this Id. Otherwise the data_source is placed last for this page. + PatchedMoveElement: + type: object + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the element is moved before the element with this Id. + Otherwise the element is placed at the end of the page. + parent_element_id: + type: integer + nullable: true + description: >- + If provided, the element is moved as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + PatchedMoveIntegration: + type: object + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the integration is moved before the integration with + this Id. Otherwise the integration is placed at the end of the page. + PatchedMoveUserSource: + type: object + description: Serializer used when moving a user source. + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the user_source is moved before the user_source with + this Id. Otherwise the user_source is placed at the end of the page. + PatchedSettings: + type: object + properties: + allow_new_signups: + type: boolean + description: >- + Indicates whether new users can create a new account when signing + up. + allow_signups_via_workspace_invitations: + type: boolean + description: >- + Indicates whether invited users can create an account when signing + up, even if allow_new_signups is disabled. + allow_signups_via_group_invitations: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_signups_via_workspace_invitations` instead as this attribute + is being removed in the future. + allow_reset_password: + type: boolean + description: Indicates whether users can request a password reset link. + allow_global_workspace_creation: + type: boolean + description: Indicates whether all users can create workspaces, or just staff. + allow_global_group_creation: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_global_workspace_creation` instead as this attribute is being + removed in the future. + account_deletion_grace_delay: + type: integer + maximum: 32767 + minimum: 0 + description: >- + Number of days after the last login for an account pending deletion + to be deleted + show_admin_signup_page: + type: boolean + description: >- + Indicates that there are no admin users in the database yet, so in + the frontend the signup form will be shown instead of the login + page. + track_workspace_usage: + type: boolean + description: >- + Runs a job once per day which calculates per workspace row counts + and file storage usage, displayed on the admin workspace page. + show_baserow_help_request: + type: boolean + description: >- + Indicates whether the `We need your help!` message will be shown on + the dashboard + co_branding_logo: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: Co-branding logo that's placed next to the Baserow logo (176x29). + PatchedTableUpdate: + type: object + properties: + name: + type: string + maxLength: 255 + PatchedTableWebhookUpdateRequest: + type: object + properties: + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + include_all_events: + type: boolean + description: Indicates whether this webhook should listen to all events. + events: + type: array + items: + $ref: '#/components/schemas/EventTypesEnum' + description: A list containing the events that will trigger this webhook. + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + headers: + type: object + additionalProperties: {} + description: >- + The additional headers as an object where the key is the name and + the value the value. + name: + type: string + description: An internal name of the webhook. + maxLength: 255 + active: + type: boolean + description: >- + Indicates whether the web hook is active. When a webhook has failed + multiple times, it will automatically be deactivated. + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + PatchedTokenUpdate: + type: object + properties: + name: + type: string + description: The human readable name of the database token for the user. + maxLength: 100 + permissions: + type: object + description: >- + Indicates per operation which permissions the database token has + within the whole workspace. If the value of for example `create` is + `true`, then the token can create rows in all tables related to the + workspace. If a list is provided with for example `[["table", 1]]` + then the token only has create permissions for the table with id 1. + Same goes for if a database references is provided. `[['database', + 1]]` means create permissions for all tables in the database with id + 1. + + + Example: + + ```json + + { + "create": true// Allows creating rows in all tables. + // Allows reading rows from database 1 and table 10. + "read": [["database", 1], ["table", 10]], + "update": false // Denies updating rows in all tables. + "delete": [] // Denies deleting rows in all tables. + } + ``` + properties: + create: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + read: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + update: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + delete: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + rotate_key: + type: boolean + default: false + description: Indicates if a new key must be generated. + PatchedTrashEntryRequest: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + trash_item_id: + type: integer + minimum: 0 + parent_trash_item_id: + type: integer + minimum: 0 + nullable: true + trash_item_type: + $ref: '#/components/schemas/TrashItemTypeEnum' + PatchedUndoRedoRequest: + type: object + properties: + scopes: + allOf: + - $ref: '#/components/schemas/ActionScopes' + description: >- + A JSON object with keys and values representing the various action + scopes to include when undoing or redoing. Every action in Baserow + will be associated with a action scope, when undoing/redoing only + actions which match any of the provided scope key:value pairs will + included when this endpoint picks the next action to undo/redo. If + no scopes are provided then all actions performed in the client + session will be included when undoing/redoing. + PatchedUpdateDomain: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type0a6Enum' + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + domain_name: + type: string + PatchedUpdatePage: + type: object + properties: + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + PatchedUpdatePremiumViewAttributes: + type: object + properties: + show_logo: + type: boolean + PatchedUpdateViewFilter: + type: object + properties: + field: + type: integer + description: The field of which the value must be compared to the filter value. + type: + allOf: + - $ref: '#/components/schemas/Type880Enum' + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + value: + type: string + description: The filter value that must be compared to the field's value. + maxLength: 255 + PatchedUpdateViewFilterGroup: + type: object + properties: + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + PatchedUpdateViewGroupBy: + type: object + properties: + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The pixel width of the group by in the related view. + PatchedUpdateViewSort: + type: object + properties: + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + PatchedUpdateWorkspaceInvitation: + type: object + properties: + permissions: + type: string + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + maxLength: 32 + PatchedUpdateWorkspaceUser: + type: object + properties: + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + PatchedUserAdminUpdate: + type: object + description: >- + Serializes a request body for updating a given user. Do not use for + returning user + + data as the password will be returned also. + properties: + username: + type: string + format: email + name: + type: string + maxLength: 150 + is_active: + type: boolean + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + is_staff: + type: boolean + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + password: + type: string + PatchedUser_SourceUpdateUserSource: + anyOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceUpdateUserSource' + PatchedViewFieldOptions: + anyOf: + - $ref: '#/components/schemas/grid_view_field_options' + - $ref: '#/components/schemas/gallery_view_field_options' + - $ref: '#/components/schemas/form_view_field_options' + - $ref: '#/components/schemas/kanban_view_field_options' + - $ref: '#/components/schemas/calendar_view_field_options' + PatchedViewUpdateView: + anyOf: + - $ref: '#/components/schemas/grid_view_update' + - $ref: '#/components/schemas/gallery_view_update' + - $ref: '#/components/schemas/form_view_update' + - $ref: '#/components/schemas/kanban_view_update' + - $ref: '#/components/schemas/calendar_view_update' + PatchedWorkspace: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + PathParam: + type: object + properties: + name: + type: string + description: The name of the parameter. + maxLength: 255 + type: + allOf: + - $ref: '#/components/schemas/PathParamTypeEnum' + description: |- + The type of the parameter. + + * `text` - text + * `numeric` - numeric + required: + - name + - type + PathParamTypeEnum: + enum: + - text + - numeric + type: string + description: |- + * `text` - text + * `numeric` - numeric + PermissionObject: + type: object + properties: + name: + type: string + description: The permission manager name. + permissions: + type: object + additionalProperties: {} + description: The content of the permission object for this permission manager. + required: + - name + - permissions + PhoneNumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + PhoneNumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + PhoneNumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + PhoneNumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + PublicBuilder: + type: object + description: >- + A public version of the builder serializer with less data to prevent + data leaks. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + pages: + type: array + items: + $ref: '#/components/schemas/PublicPage' + readOnly: true + description: >- + This field is specific to the `builder` application and contains an + array of pages that are in the builder. + type: + type: string + readOnly: true + description: The type of the object. + theme: + allOf: + - $ref: '#/components/schemas/CombinedThemeConfigBlocks' + readOnly: true + description: >- + This field is specific to the `builder` application and contains the + theme settings. + user_sources: + type: array + items: + $ref: '#/components/schemas/User_SourceBasePublicUserSource' + readOnly: true + description: The user sources related with this builder. + required: + - id + - name + - pages + - theme + - type + - user_sources + PublicField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + PublicFormView: + type: object + properties: + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The user file cover image that is displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The user file logo image that is displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + fields: + type: array + items: + $ref: '#/components/schemas/PublicFormViewFieldOptions' + show_logo: + type: boolean + required: + - fields + PublicFormViewField: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + required: + - id + - type + PublicFormViewFieldOptions: + type: object + properties: + name: + type: string + readOnly: true + description: If provided, then this value will be visible above the field input. + description: + type: string + description: If provided, then this value be will be shown under the field name. + required: + type: boolean + description: Indicates whether the field is required for the visitor to fill out. + order: + type: integer + maximum: 32767 + minimum: -32768 + description: The order that the field has in the form. Lower value is first. + field: + allOf: + - $ref: '#/components/schemas/PublicFormViewField' + readOnly: true + description: >- + The properties of the related field. These can be used to construct + the correct input. Additional properties could be added depending on + the field type. + show_when_matching_conditions: + type: boolean + description: Indicates whether this field is visible when the conditions are met. + condition_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all (AND) or any (OR) of the conditions should + match before shown. + + + * `AND` - And + + * `OR` - Or + conditions: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsCondition' + condition_groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + field_component: + type: string + description: >- + Indicates which field input component is used in the form. The value + is only used in the frontend, and can differ per field. + maxLength: 32 + required: + - field + - name + PublicNone: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + required: + - element_id + - event + - id + - order + - type + PublicPage: + type: object + description: >- + A public version of the page serializer with less data to prevent data + leaks. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + required: + - id + - name + - path + PublicPaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PublicPaginationSerializerWithGridViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PublicView: + type: object + properties: + id: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + table: + $ref: '#/components/schemas/PublicViewTable' + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + sortings: + type: array + items: + $ref: '#/components/schemas/PublicViewSort' + readOnly: true + group_bys: + type: array + items: + $ref: '#/components/schemas/PublicViewGroupBy' + readOnly: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug where the view can be accessed publicly on. + pattern: ^[-a-zA-Z0-9_]+$ + show_logo: + type: boolean + required: + - group_bys + - id + - name + - order + - slug + - sortings + - table + - type + PublicViewAuthRequest: + type: object + properties: + password: + type: string + required: + - password + PublicViewAuthResponse: + type: object + properties: + access_token: + type: string + required: + - access_token + PublicViewGroupBy: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The pixel width of the group by in the related view. + required: + - field + - id + - view + PublicViewInfo: + type: object + properties: + fields: + type: array + items: + $ref: '#/components/schemas/PublicField' + readOnly: true + view: + allOf: + - $ref: '#/components/schemas/PublicView' + readOnly: true + required: + - fields + - view + PublicViewSort: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + - id + - view + PublicViewTable: + type: object + properties: + id: + type: integer + readOnly: true + database_id: + type: integer + readOnly: true + required: + - database_id + - id + PublishDomainJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + PublishDomainJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + RatingFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + required: + - name + - type + RatingFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + required: + - id + - name + - order + - read_only + - table_id + - type + RatingFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + RatingFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + Register: + type: object + properties: + name: + type: string + maxLength: 150 + minLength: 2 + email: + type: string + format: email + description: The email address is also going to be the username. + password: + type: string + language: + type: string + default: en + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + maxLength: 10 + minLength: 2 + authenticate: + type: boolean + default: false + description: >- + Indicates whether an authentication JWT should be generated and be + included in the response. + group_invitation_token: + type: string + description: >- + DEPRECATED: Please use `workspace_invitation_token` which this + attribute is being renamed to in 2024. + workspace_invitation_token: + type: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after signing up. + template_id: + type: integer + description: >- + The id of the template that must be installed after creating the + account. This only works if the `workspace_invitation_token` param + is not provided. + required: + - email + - name + - password + RegisterLicense: + type: object + properties: + license: + type: string + description: The license that you want to register. + required: + - license + RelatedFields: + type: object + properties: + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - related_fields + Report: + type: object + properties: + failing_rows: + type: object + additionalProperties: + type: object + additionalProperties: + type: array + items: + type: string + description: Error messages for this field. + description: >- + An object containing error messages by fields. The key is the + field name and the value is an array of error messages for this + field. These messages are localized for the user who has created + the job when the translation is available. + description: >- + An object containing field in error by rows. The keys are the row + indexes from original file and values are objects of errors by + fields. + required: + - failing_rows + RequestMethodEnum: + enum: + - POST + - GET + - PUT + - PATCH + - DELETE + type: string + description: |- + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + ResetPasswordBodyValidation: + type: object + properties: + token: + type: string + password: + type: string + required: + - password + - token + RestoreSnapshotJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + RestoreSnapshotJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + RollupFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + RollupFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + RollupFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + RollupFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + RowComment: + type: object + properties: + id: + type: integer + readOnly: true + user_id: + type: integer + nullable: true + description: The user who made the comment. + readOnly: true + first_name: + type: string + maxLength: 32 + table_id: + type: integer + description: 'The table the row this comment is for is found in. ' + readOnly: true + row_id: + type: integer + maximum: 2147483647 + minimum: 0 + description: The id of the row the comment is for. + message: + type: string + readOnly: true + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + edited: + type: string + readOnly: true + trashed: + type: boolean + required: + - created_on + - edited + - id + - message + - row_id + - table_id + - updated_on + - user_id + RowCommentCreate: + type: object + properties: + message: + type: object + additionalProperties: {} + description: The rich text comment content. + required: + - message + RowCommentsNotificationMode: + type: object + properties: + mode: + allOf: + - $ref: '#/components/schemas/ModeFf8Enum' + description: >- + The mode to use to receive notifications for new comments on a table + row. + + + * `all` - all + + * `mentions` - mentions + required: + - mode + RowCommentsNotificationModeEnum: + enum: + - all + - mentions + type: string + description: |- + * `all` - all + * `mentions` - mentions + RowHistory: + type: object + properties: + id: + type: integer + readOnly: true + action_type: + type: string + description: The type of the action that was performed. + user: + allOf: + - $ref: '#/components/schemas/RowHistoryUser' + description: The user that performed the action. + timestamp: + type: string + format: date-time + description: The timestamp of the action that was performed. + before: + type: object + additionalProperties: {} + description: >- + The mapping between field_ids and values for the row before the + action was performed. + after: + type: object + additionalProperties: {} + description: >- + The mapping between field_ids and values for the row after the + action was performed. + fields_metadata: + type: object + additionalProperties: {} + description: The metadata of the fields that were changed. + required: + - action_type + - after + - before + - fields_metadata + - id + - timestamp + - user + RowHistoryUser: + type: object + properties: + id: + type: integer + description: The id of the user. + name: + type: string + description: The first name of the user. + required: + - id + - name + RowIdentifierTypeEnum: + enum: + - id + - count + type: string + description: |- + * `id` - Id + * `count` - Count + 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' + SAMLResponse: + type: object + properties: + SAMLResponse: + type: string + description: The encoded SAML response from the IdP. + RelayState: + type: string + description: The frontend URL where redirect the authenticated user. + required: + - RelayState + - SAMLResponse + SamlAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + description: The email domain registered with this provider. + enabled: + type: boolean + description: Whether the provider is enabled or not. + metadata: + type: string + description: The SAML metadata XML provided by the IdP. + is_verified: + type: boolean + readOnly: true + description: Whether or not a user sign in correctly with this SAML provider. + required: + - domain + - id + - is_verified + - metadata + - type + ScopeTypeEnum: + enum: + - core + - application + - workspace + - workspace_invitation + - snapshot + - workspace_user + - integration + - user_source + - database + - database_table + - database_field + - database_view + - database_view_decoration + - database_view_sort + - database_view_group + - database_view_filter + - database_view_filter_group + - token + - builder + - builder_page + - builder_element + - builder_domain + - builder_data_source + - builder_workflow_action + - team + - team_subject + - license + type: string + description: |- + * `core` - core + * `application` - application + * `workspace` - workspace + * `workspace_invitation` - workspace_invitation + * `snapshot` - snapshot + * `workspace_user` - workspace_user + * `integration` - integration + * `user_source` - user_source + * `database` - database + * `database_table` - database_table + * `database_field` - database_field + * `database_view` - database_view + * `database_view_decoration` - database_view_decoration + * `database_view_sort` - database_view_sort + * `database_view_group` - database_view_group + * `database_view_filter` - database_view_filter + * `database_view_filter_group` - database_view_filter_group + * `token` - token + * `builder` - builder + * `builder_page` - builder_page + * `builder_element` - builder_element + * `builder_domain` - builder_domain + * `builder_data_source` - builder_data_source + * `builder_workflow_action` - builder_workflow_action + * `team` - team + * `team_subject` - team_subject + * `license` - license + SelectColorValueProviderConf: + type: object + properties: + field_id: + type: integer + nullable: true + description: >- + An id of a select field of the table. The value provider return the + color of the selected option for each row. + required: + - field_id + SelectOption: + type: object + properties: + id: + type: integer + value: + type: string + maxLength: 255 + color: + type: string + maxLength: 255 + required: + - color + - value + SendResetPasswordEmailBodyValidation: + type: object + properties: + email: + type: string + format: email + description: The email address of the user that has requested a password reset. + base_url: + type: string + format: uri + description: >- + The base URL where the user can reset his password. The reset token + is going to be appended to the base_url (base_url '/token'). + required: + - base_url + - email + Sender: + type: object + properties: + id: + type: integer + readOnly: true + username: + type: string + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + pattern: ^[\w.@+-]+$ + maxLength: 150 + first_name: + type: string + maxLength: 150 + required: + - id + - username + Settings: + type: object + properties: + allow_new_signups: + type: boolean + description: >- + Indicates whether new users can create a new account when signing + up. + allow_signups_via_workspace_invitations: + type: boolean + description: >- + Indicates whether invited users can create an account when signing + up, even if allow_new_signups is disabled. + allow_signups_via_group_invitations: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_signups_via_workspace_invitations` instead as this attribute + is being removed in the future. + allow_reset_password: + type: boolean + description: Indicates whether users can request a password reset link. + allow_global_workspace_creation: + type: boolean + description: Indicates whether all users can create workspaces, or just staff. + allow_global_group_creation: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_global_workspace_creation` instead as this attribute is being + removed in the future. + account_deletion_grace_delay: + type: integer + maximum: 32767 + minimum: 0 + description: >- + Number of days after the last login for an account pending deletion + to be deleted + show_admin_signup_page: + type: boolean + description: >- + Indicates that there are no admin users in the database yet, so in + the frontend the signup form will be shown instead of the login + page. + track_workspace_usage: + type: boolean + description: >- + Runs a job once per day which calculates per workspace row counts + and file storage usage, displayed on the admin workspace page. + show_baserow_help_request: + type: boolean + description: >- + Indicates whether the `We need your help!` message will be shown on + the dashboard + co_branding_logo: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: Co-branding logo that's placed next to the Baserow logo (176x29). + SingleAuditLogExportJobRequest: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + url: + type: string + format: uri + readOnly: true + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + required: + - url + SingleAuditLogExportJobResponse: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + url: + type: string + format: uri + readOnly: true + description: The URL to download the exported file. + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + created_on: + type: string + format: date-time + readOnly: true + description: The date and time when the export job was created. + exported_file_name: + type: string + readOnly: true + description: The name of the file that was created by the export job. + required: + - created_on + - exported_file_name + - url + SingleDuplicateApplicationJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + duplicated_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + required: + - duplicated_application + - id + - original_application + - progress_percentage + - state + - type + SingleDuplicateFieldJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_field: + allOf: + - $ref: '#/components/schemas/Field' + readOnly: true + duplicated_field: + allOf: + - $ref: '#/components/schemas/FieldSerializerWithRelatedFields' + readOnly: true + required: + - duplicated_field + - id + - original_field + - progress_percentage + - state + - type + SingleDuplicatePageJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + duplicated_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + required: + - duplicated_page + - id + - original_page + - progress_percentage + - state + - type + SingleDuplicateTableJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + duplicated_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + required: + - duplicated_table + - id + - original_table + - progress_percentage + - state + - type + SingleFileImportJobSerializerClass: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + database_id: + type: integer + description: Database id where the table will be created. + name: + type: string + description: The name of the new table. + maxLength: 255 + table_id: + type: integer + description: Table id where the data will be imported. + first_row_header: + type: boolean + default: false + report: + allOf: + - $ref: '#/components/schemas/Report' + description: Import error report. + required: + - database_id + - id + - progress_percentage + - report + - state + - type + SingleInstallTemplateJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + template: + allOf: + - $ref: '#/components/schemas/Template' + readOnly: true + installed_applications: + type: object + additionalProperties: {} + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + required: + - group + - id + - installed_applications + - progress_percentage + - state + - template + - type + - workspace + SingleSelectFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - name + - type + SingleSelectFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - table_id + - type + SingleSelectFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + SingleSelectFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + Snapshot: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + snapshot_from_application: + type: integer + readOnly: true + created_by: + allOf: + - $ref: '#/components/schemas/User' + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + required: + - created_at + - created_by + - id + - name + - snapshot_from_application + SourceTypeEnum: + enum: + - url + - embed + type: string + description: |- + * `url` - Url + * `embed` - Embed + StateEnum: + enum: + - pending + - exporting + - cancelled + - finished + - failed + - expired + type: string + description: |- + * `pending` - pending + * `exporting` - exporting + * `cancelled` - cancelled + * `finished` - finished + * `failed` - failed + * `expired` - expired + StyleBackgroundEnum: + enum: + - none + - color + type: string + description: |- + * `none` - None + * `color` - Color + StyleEnum: + enum: + - star + - heart + - thumbs-up + - flag + - smile + type: string + description: |- + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + StyleImageConstraintEnum: + enum: + - cover + - contain + - full-width + type: string + description: |- + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + StyleWidthEnum: + enum: + - full + - normal + - medium + - small + type: string + description: |- + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + SubDomainCreateDomain: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type0a6Enum' + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + domain_name: + type: string + maxLength: 255 + required: + - domain_name + - type + SubDomainDomain: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the domain. + domain_name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + builder_id: + type: integer + readOnly: true + last_published: + type: string + format: date-time + nullable: true + description: Last publication date of this domain + required: + - builder_id + - domain_name + - id + - order + - type + SubjectType3ffEnum: + enum: + - auth.User + type: string + description: '* `auth.User` - auth.User' + SubjectTypeB9aEnum: + enum: + - auth.User + - anonymous + - user_source.user + - core.Token + - baserow_enterprise.Team + type: string + description: |- + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + SubjectUser: + type: object + properties: + id: + type: integer + readOnly: true + username: + type: string + readOnly: true + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + first_name: + type: string + readOnly: true + email: + type: string + format: email + readOnly: true + title: Email address + required: + - email + - first_name + - id + - username + SubmitActionEnum: + enum: + - MESSAGE + - REDIRECT + type: string + description: |- + * `MESSAGE` - Message + * `REDIRECT` - Redirect + Table: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + database_id: + type: integer + readOnly: true + required: + - database_id + - id + - name + - order + TableCreate: + type: object + properties: + name: + type: string + maxLength: 255 + data: + type: array + items: {} + description: >- + A list of rows that needs to be created as initial table data. Each + row is a list of values that are going to be added in the new table + in the same order as provided. + + + Ex: + + ```json + + [ + ["row1_field1_value", "row1_field2_value"], + ["row2_field1_value", "row2_field2_value"], + ] + + ``` + + for creating a two rows table with two fields. + + + If not provided, some example data is going to be created. + minItems: 1 + first_row_header: + type: boolean + default: false + description: >- + Indicates if the first provided row is the header. If true the field + names are going to be the values of the first row. Otherwise they + will be called "Field N" + required: + - name + TableElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + TableElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + TableElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + TableElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + TableImport: + type: object + properties: + data: + type: array + items: {} + description: >- + A list of rows you want to add to the specified table. Each row is a + list of values, one for each **writable** field. The field values + must be ordered according to the field order in the table. All + values must be compatible with the corresponding field type. + + + Ex: + + ```json + + [ + ["row1_field1_value", "row1_field2_value"], + ["row2_field1_value", "row2_field2_value"], + ] + + ``` + + for adding two rows to a table with two writable fields. + minItems: 1 + required: + - data + TableSerializerWithFields: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + database_id: + type: integer + readOnly: true + fields: + type: array + items: + $ref: '#/components/schemas/LocalBaserowField' + description: Fields of this table + required: + - database_id + - fields + - id + - name + - order + TableWebhook: + type: object + properties: + id: + type: integer + readOnly: true + events: + type: object + additionalProperties: {} + readOnly: true + description: A list containing the events that will trigger this webhook. + headers: + type: object + additionalProperties: {} + readOnly: true + description: >- + The additional headers as an object where the key is the name and + the value the value. + calls: + type: array + items: + $ref: '#/components/schemas/TableWebhookCall' + description: All the calls that this webhook made. + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + name: + type: string + description: An internal name of the webhook. + maxLength: 255 + include_all_events: + type: boolean + description: Indicates whether this webhook should listen to all events. + failed_triggers: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The amount of failed webhook calls. + active: + type: boolean + description: >- + Indicates whether the web hook is active. When a webhook has failed + multiple times, it will automatically be deactivated. + required: + - calls + - created_on + - events + - headers + - id + - name + - updated_on + - url + TableWebhookCall: + type: object + properties: + id: + type: integer + readOnly: true + event_id: + type: string + format: uuid + readOnly: true + description: Event ID where the call originated from. + event_type: + type: string + maxLength: 50 + called_time: + type: string + format: date-time + nullable: true + called_url: + type: string + maxLength: 2000 + request: + type: string + nullable: true + description: A text copy of the request headers and body. + response: + type: string + nullable: true + description: A text copy of the response headers and body. + response_status: + type: integer + maximum: 2147483647 + minimum: -2147483648 + nullable: true + description: The HTTP response status code. + error: + type: string + nullable: true + description: An internal error reflecting what went wrong. + required: + - called_url + - event_id + - event_type + - id + TableWebhookCreateRequest: + type: object + properties: + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + include_all_events: + type: boolean + description: Indicates whether this webhook should listen to all events. + events: + type: array + items: + $ref: '#/components/schemas/Events3eaEnum' + description: A list containing the events that will trigger this webhook. + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + headers: + type: object + additionalProperties: {} + description: >- + The additional headers as an object where the key is the name and + the value the value. + name: + type: string + description: An internal name of the webhook. + maxLength: 255 + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + required: + - name + - url + TableWebhookTestCallRequest: + type: object + properties: + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + event_type: + allOf: + - $ref: '#/components/schemas/EventTypeEnum' + description: |- + The event type that must be used for the test call. + + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + headers: + type: object + additionalProperties: {} + description: >- + The additional headers as an object where the key is the name and + the value the value. + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + required: + - event_type + - url + TableWebhookTestCallResponse: + type: object + properties: + request: + type: string + readOnly: true + description: A text copy of the request headers and body. + response: + type: string + readOnly: true + description: A text copy of the response headers and body. + status_code: + type: integer + readOnly: true + description: The HTTP response status code. + is_unreachable: + type: boolean + readOnly: true + description: Indicates whether the provided URL could be reached. + required: + - is_unreachable + - request + - response + - status_code + TargetEnum: + enum: + - self + - blank + type: string + description: |- + * `self` - Self + * `blank` - Blank + Team: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + name: + type: string + description: A human friendly name for this team. + maxLength: 160 + default_role: + type: string + nullable: true + description: >- + The uid of the role you want to assign to the team in the given + workspace. You can omit this property if you want to remove the + role. + subjects: + type: array + items: + $ref: '#/components/schemas/TeamSubject' + default: [] + description: >- + An array of subject ID/type objects to be used during team create + and update. + required: + - name + TeamResponse: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + description: A human friendly name for this team. + maxLength: 160 + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: The workspace that this team belongs to. + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + default_role: + type: string + description: The uid of the role this team has in its workspace. + subject_count: + type: integer + description: >- + The amount of subjects (e.g. users) that are currently assigned to + this team. + subject_sample: + type: array + items: + $ref: '#/components/schemas/TeamSampleSubject' + description: >- + A sample, by default 10, of the most recent subjects to join this + team. + required: + - created_on + - group + - id + - name + - subject_count + - updated_on + - workspace + TeamSampleSubject: + type: object + properties: + subject_id: + type: integer + description: The subject's unique identifier. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectType3ffEnum' + description: |- + The type of subject who belongs to the team. + + * `auth.User` - auth.User + subject_label: + type: string + description: The subject's label. Defaults to a user's first name. + team_subject_id: + type: integer + description: The team subject unique identifier. + required: + - subject_id + - subject_label + - subject_type + - team_subject_id + TeamSubject: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + id: + type: integer + readOnly: true + subject_id: + type: integer + description: The subject's unique identifier. + subject_user_email: + type: string + format: email + description: The user subject's email address. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectType3ffEnum' + description: |- + The type of subject that is being invited. + + * `auth.User` - auth.User + required: + - id + - subject_type + TeamSubjectResponse: + type: object + properties: + id: + type: integer + readOnly: true + subject_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The unique subject ID. + subject_type: + type: string + description: |- + Returns the TeamSubject's `subject_type` natural key. + + :param obj: The TeamSubject record. + :return: The subject's content type natural key. + readOnly: true + team: + type: integer + description: The team this subject belongs to. + required: + - id + - subject_id + - subject_type + - team + Template: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 64 + icon: + type: string + description: The icon class name that can be used for displaying purposes. + maxLength: 32 + keywords: + type: string + description: Keywords related to the template that can be used for search. + group_id: + type: string + readOnly: true + workspace_id: + type: integer + nullable: true + description: >- + The group containing the applications related to the template. The + read endpoints related to that group are publicly accessible for + preview purposes. + readOnly: true + is_default: + type: string + readOnly: true + description: >- + Indicates if the template must be selected by default. The + web-frontend automatically selects the first `is_default` template + that it can find. + required: + - group_id + - icon + - id + - is_default + - name + - workspace_id + TemplateCategories: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 32 + templates: + type: array + items: + $ref: '#/components/schemas/Template' + readOnly: true + required: + - id + - name + - templates + TextElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + required: + - order + - type + TextElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + required: + - id + - order + - page_id + - parent_element_id + - type + TextElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + required: + - id + - order + - parent_element_id + - type + TextElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + TextFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + required: + - name + - type + TextFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + TextFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + TextFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + Token: + type: object + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + properties: + id: + type: integer + readOnly: true + name: + type: string + description: The human readable name of the database token for the user. + maxLength: 100 + group: + type: string + readOnly: true + workspace: + type: integer + description: Only the tables of the workspace can be accessed. + key: + type: string + description: >- + The unique token key that can be used to authorize for the table row + endpoints. + maxLength: 32 + permissions: + type: object + description: >- + Indicates per operation which permissions the database token has + within the whole workspace. If the value of for example `create` is + `true`, then the token can create rows in all tables related to the + workspace. If a list is provided with for example `[["table", 1]]` + then the token only has create permissions for the table with id 1. + Same goes for if a database references is provided. `[['database', + 1]]` means create permissions for all tables in the database with id + 1. + + + Example: + + ```json + + { + "create": true// Allows creating rows in all tables. + // Allows reading rows from database 1 and table 10. + "read": [["database", 1], ["table", 10]], + "update": false // Denies updating rows in all tables. + "delete": [] // Denies deleting rows in all tables. + } + ``` + properties: + create: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + read: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + update: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + delete: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + required: + - group + - id + - key + - name + - permissions + - workspace + TokenBlacklist: + type: object + properties: + refresh: + type: string + required: + - refresh + TokenCreate: + type: object + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + properties: + name: + type: string + description: The human readable name of the database token for the user. + maxLength: 100 + group: + type: string + readOnly: true + workspace: + type: integer + description: Only the tables of the workspace can be accessed. + required: + - group + - name + - workspace + TokenObtainPair: + type: object + properties: + username: + type: string + writeOnly: true + password: + type: string + writeOnly: true + access: + type: string + readOnly: true + refresh: + type: string + readOnly: true + required: + - access + - password + - refresh + - username + TokenObtainPairWithUser: + type: object + properties: + email: + type: string + format: email + username: + type: string + format: email + description: Deprecated. Use `email` instead. + deprecated: true + password: + type: string + writeOnly: true + required: + - password + TokenRefreshWithUser: + type: object + properties: + access: + type: string + readOnly: true + refresh_token: + type: string + token: + type: string + description: Deprecated. Use `refresh_token` instead. + deprecated: true + required: + - access + TokenVerifyWithUser: + type: object + properties: + token: + type: string + description: Deprecated. Use `refresh_token` instead. + deprecated: true + refresh_token: + type: string + required: + - refresh_token + TrashContents: + type: object + properties: + id: + type: integer + readOnly: true + user_who_trashed: + type: string + readOnly: true + trash_item_type: + type: string + description: |- + If an API consumer hasn't yet adopted the "workspace" + `trash_item_type`, give them the option to return "group" + by testing the `respond_with_workspace_rename` querystring. + readOnly: true + trash_item_id: + type: integer + maximum: 2147483647 + minimum: 0 + parent_trash_item_id: + type: integer + maximum: 2147483647 + minimum: 0 + nullable: true + trashed_at: + type: string + format: date-time + readOnly: true + application: + type: integer + nullable: true + group: + type: integer + workspace: + type: integer + name: + type: string + names: + type: array + items: + type: string + nullable: true + parent_name: + type: string + nullable: true + required: + - group + - id + - name + - trash_item_id + - trash_item_type + - trashed_at + - user_who_trashed + - workspace + TrashItemTypeEnum: + enum: + - workspace + - application + - group + - table + - field + - row + - rows + - view + - builder_domain + - row_comment + - team + type: string + description: |- + * `workspace` - workspace + * `application` - application + * `group` - group + * `table` - table + * `field` - field + * `row` - row + * `rows` - rows + * `view` - view + * `builder_domain` - builder_domain + * `row_comment` - row_comment + * `team` - team + TrashStructure: + type: object + properties: + groups: + type: array + items: + $ref: '#/components/schemas/TrashStructureGroup' + description: >- + An array of group trash structure records. Deprecated, please use + `workspaces`. + workspaces: + type: array + items: + $ref: '#/components/schemas/TrashStructureGroup' + description: An array of workspace trash structure records + required: + - groups + - workspaces + TrashStructureApplication: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + trashed: + type: boolean + required: + - id + - name + TrashStructureGroup: + type: object + properties: + id: + type: integer + minimum: 0 + trashed: + type: boolean + name: + type: string + applications: + type: array + items: + $ref: '#/components/schemas/TrashStructureApplication' + required: + - applications + - id + - name + - trashed + Type0a6Enum: + enum: + - custom + - sub_domain + type: string + description: |- + * `custom` - custom + * `sub_domain` - sub_domain + Type2a6Enum: + enum: + - heading + - text + - link + - image + - input_text + - column + - button + - table + - form_container + - dropdown + - checkbox + - iframe + - auth_form + type: string + description: |- + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + Type5f7Enum: + enum: + - local_baserow + type: string + description: '* `local_baserow` - local_baserow' + Type60cEnum: + enum: + - notification + - open_page + - create_row + - update_row + - logout + type: string + description: |- + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + Type880Enum: + enum: + - 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 + - lower_than + - 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 + - single_select_equal + - single_select_not_equal + - 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 + type: string + description: |- + * `equal` - equal + * `not_equal` - not_equal + * `filename_contains` - filename_contains + * `files_lower_than` - files_lower_than + * `has_file_type` - has_file_type + * `contains` - contains + * `contains_not` - contains_not + * `contains_word` - contains_word + * `doesnt_contain_word` - doesnt_contain_word + * `length_is_lower_than` - length_is_lower_than + * `higher_than` - higher_than + * `lower_than` - lower_than + * `is_even_and_whole` - is_even_and_whole + * `date_equal` - date_equal + * `date_before` - date_before + * `date_before_or_equal` - date_before_or_equal + * `date_after_days_ago` - date_after_days_ago + * `date_after` - date_after + * `date_after_or_equal` - date_after_or_equal + * `date_not_equal` - date_not_equal + * `date_equals_today` - date_equals_today + * `date_before_today` - date_before_today + * `date_after_today` - date_after_today + * `date_within_days` - date_within_days + * `date_within_weeks` - date_within_weeks + * `date_within_months` - date_within_months + * `date_equals_days_ago` - date_equals_days_ago + * `date_equals_months_ago` - date_equals_months_ago + * `date_equals_years_ago` - date_equals_years_ago + * `date_equals_week` - date_equals_week + * `date_equals_month` - date_equals_month + * `date_equals_day_of_month` - date_equals_day_of_month + * `date_equals_year` - date_equals_year + * `single_select_equal` - single_select_equal + * `single_select_not_equal` - single_select_not_equal + * `link_row_has` - link_row_has + * `link_row_has_not` - link_row_has_not + * `link_row_contains` - link_row_contains + * `link_row_not_contains` - link_row_not_contains + * `boolean` - boolean + * `empty` - empty + * `not_empty` - not_empty + * `multiple_select_has` - multiple_select_has + * `multiple_select_has_not` - multiple_select_has_not + * `multiple_collaborators_has` - multiple_collaborators_has + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + * `user_is` - user_is + * `user_is_not` - user_is_not + TypeC03Enum: + enum: + - local_baserow_get_row + - local_baserow_list_rows + - local_baserow_upsert_row + type: string + description: |- + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + TypeC5eEnum: + enum: + - duplicate_application + - install_template + - create_snapshot + - restore_snapshot + - airtable + - file_import + - duplicate_table + - duplicate_field + - duplicate_page + - publish_domain + - audit_log_export + type: string + description: |- + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + TypeD64Enum: + enum: + - text + - long_text + - url + - email + - number + - rating + - boolean + - date + - last_modified + - last_modified_by + - created_on + - created_by + - duration + - link_row + - file + - single_select + - multiple_select + - phone_number + - formula + - count + - rollup + - lookup + - multiple_collaborators + - uuid + - autonumber + - password + type: string + description: |- + * `text` - text + * `long_text` - long_text + * `url` - url + * `email` - email + * `number` - number + * `rating` - rating + * `boolean` - boolean + * `date` - date + * `last_modified` - last_modified + * `last_modified_by` - last_modified_by + * `created_on` - created_on + * `created_by` - created_by + * `duration` - duration + * `link_row` - link_row + * `file` - file + * `single_select` - single_select + * `multiple_select` - multiple_select + * `phone_number` - phone_number + * `formula` - formula + * `count` - count + * `rollup` - rollup + * `lookup` - lookup + * `multiple_collaborators` - multiple_collaborators + * `uuid` - uuid + * `autonumber` - autonumber + * `password` - password + TypeF4fEnum: + enum: + - database + - builder + type: string + description: |- + * `database` - database + * `builder` - builder + TypeFc4Enum: + enum: + - left_border_color + - background_color + type: string + description: |- + * `left_border_color` - left_border_color + * `background_color` - background_color + TypeFormulaRequest: + type: object + properties: + formula: + type: string + name: + type: string + maxLength: 255 + required: + - formula + - name + TypeFormulaResult: + type: object + properties: + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - formula + - nullable + URLFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + URLFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + URLFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + URLFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + UUIDFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + UUIDFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + UUIDFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + UUIDFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + UndoRedoAction: + type: object + properties: + action_type: + type: string + nullable: true + description: >- + If an action was undone/redone/skipped due to an error this field + will contain the type of the action that was undone/redone. + action_scope: + type: string + nullable: true + description: >- + If an action was undone/redone/skipped due to an error this field + will contain the scope of the action that was undone/redone. + UndoRedoResponse: + type: object + properties: + actions: + type: array + items: + $ref: '#/components/schemas/UndoRedoAction' + result_code: + type: string + description: >- + Indicates the result of the undo/redo operation. Will be 'SUCCESS' + on success, 'NOTHING_TO_DO' when there is no action to undo/redo and + 'SKIPPED_DUE_TO_ERROR' when the undo/redo failed due to a conflict + or error and was skipped over. + required: + - actions + - result_code + UniqueRowValues: + type: object + properties: + values: + type: array + items: + type: string + required: + - values + User: + type: object + properties: + username: + type: string + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + pattern: ^[\w.@+-]+$ + maxLength: 150 + required: + - username + UserAdminCreate: + type: object + description: >- + Serializes a request body for creating a new user. Do not use for + returning user + + data as the password will be returned also. + properties: + username: + type: string + format: email + name: + type: string + maxLength: 150 + is_active: + type: boolean + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + is_staff: + type: boolean + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + password: + type: string + required: + - name + - password + - username + UserAdminGroups: + type: object + properties: + id: + type: integer + name: + type: string + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + required: + - id + - name + UserAdminResponse: + type: object + description: >- + Serializes the safe user attributes to expose for a response back to the + user. + properties: + id: + type: integer + readOnly: true + username: + type: string + format: email + name: + type: string + maxLength: 150 + groups: + type: array + items: + $ref: '#/components/schemas/UserAdminGroups' + workspaces: + type: array + items: + $ref: '#/components/schemas/UserAdminGroups' + last_login: + type: string + format: date-time + nullable: true + date_joined: + type: string + format: date-time + is_active: + type: boolean + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + is_staff: + type: boolean + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + required: + - groups + - id + - name + - username + - workspaces + UserFile: + type: object + properties: + size: + type: integer + maximum: 2147483647 + minimum: 0 + mime_type: + type: string + maxLength: 127 + is_image: + type: boolean + image_width: + type: integer + maximum: 32767 + minimum: 0 + nullable: true + image_height: + type: integer + maximum: 32767 + minimum: 0 + nullable: true + uploaded_at: + type: string + format: date-time + readOnly: true + url: + type: string + format: uri + readOnly: true + thumbnails: + type: object + additionalProperties: {} + readOnly: true + name: + type: string + readOnly: true + original_name: + type: string + maxLength: 255 + required: + - name + - original_name + - size + - thumbnails + - uploaded_at + - url + UserFileUploadViaURLRequest: + type: object + properties: + url: + type: string + format: uri + required: + - url + UserSourceUser: + type: object + description: A serializer used to serialize a UserSourceUser object. + properties: + id: + type: integer + username: + type: string + email: + type: string + format: email + user_source_id: + type: integer + required: + - email + - id + - user_source_id + - username + UserWorkspaceInvitation: + type: object + description: >- + This serializer is used for displaying the invitation to the user that + doesn't + + have access to the workspace yet, so not for invitation management + purposes. + properties: + id: + type: integer + readOnly: true + invited_by: + type: string + readOnly: true + group: + type: string + readOnly: true + workspace: + type: string + readOnly: true + email: + type: string + format: email + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + maxLength: 254 + message: + type: string + readOnly: true + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + created_on: + type: string + format: date-time + readOnly: true + email_exists: + type: boolean + readOnly: true + required: + - created_on + - email + - email_exists + - group + - id + - invited_by + - message + - workspace + User_SourceBasePublicUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceBasePublicUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceBasePublicUserSource' + User_SourceCreateUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceCreateUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceCreateUserSource' + User_SourceUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceUserSource' + UsersPerUserSource: + type: object + description: The response of the list user source users endpoint. + properties: + users_per_user_sources: + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/UserSourceUser' + description: >- + An object keyed by the id of the user source and the value being the + list of users for this user source. + required: + - users_per_user_sources + ValueProviderTypeEnum: + enum: + - single_select_color + - conditional_color + type: string + description: |- + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + VariantEnum: + enum: + - link + - button + type: string + description: |- + * `link` - Link + * `button` - Button + View: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - table + - table_id + - type + ViewCreateView: + oneOf: + - $ref: '#/components/schemas/GridViewCreateView' + - $ref: '#/components/schemas/GalleryViewCreateView' + - $ref: '#/components/schemas/FormViewCreateView' + - $ref: '#/components/schemas/KanbanViewCreateView' + - $ref: '#/components/schemas/CalendarViewCreateView' + discriminator: + propertyName: type + mapping: + grid: '#/components/schemas/GridViewCreateView' + gallery: '#/components/schemas/GalleryViewCreateView' + form: '#/components/schemas/FormViewCreateView' + kanban: '#/components/schemas/KanbanViewCreateView' + calendar: '#/components/schemas/CalendarViewCreateView' + ViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: + type: string + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + maxLength: 255 + value_provider_type: + type: string + description: The value provider type that gives the value to the decorator. + maxLength: 255 + value_provider_conf: + type: object + additionalProperties: {} + description: The configuration consumed by the value provider. + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - id + ViewFieldOptions: + anyOf: + - $ref: '#/components/schemas/grid_view_field_options' + - $ref: '#/components/schemas/gallery_view_field_options' + - $ref: '#/components/schemas/form_view_field_options' + - $ref: '#/components/schemas/kanban_view_field_options' + - $ref: '#/components/schemas/calendar_view_field_options' + ViewFilter: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the filter applies. Each view can have his own + filters. + field: + type: integer + description: The field of which the value must be compared to the filter value. + type: + type: string + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + maxLength: 48 + value: + type: string + description: The filter value that must be compared to the field's value. + maxLength: 255 + preload_values: + type: object + additionalProperties: {} + readOnly: true + description: >- + Can contain unique preloaded values per filter. This is for example + used by the `link_row_has` filter to communicate the display name if + a value is provided. + group: + type: integer + nullable: true + description: >- + The id of the filter group this filter belongs to. If this is null, + the filter is not part of a filter group. + required: + - field + - id + - preload_values + - type + - view + ViewFilterGroup: + type: object + properties: + id: + type: integer + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + view: + type: integer + description: >- + The view to which the filter group applies to. Each view can have + its own filter groups. + required: + - id + - view + ViewGroupBy: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the group by applies. Each view can have his own + group bys. + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The pixel width of the group by in the related view. + required: + - field + - id + - view + ViewSort: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the sort applies. Each view can have his own + sortings. + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + - id + - view + ViewTypesEnum: + enum: + - grid + - gallery + - form + - kanban + - calendar + type: string + description: |- + * `grid` - grid + * `gallery` - gallery + * `form` - form + * `kanban` - kanban + * `calendar` - calendar + ViewView: + oneOf: + - $ref: '#/components/schemas/GridViewView' + - $ref: '#/components/schemas/GalleryViewView' + - $ref: '#/components/schemas/FormViewView' + - $ref: '#/components/schemas/KanbanViewView' + - $ref: '#/components/schemas/CalendarViewView' + discriminator: + propertyName: type + mapping: + grid: '#/components/schemas/GridViewView' + gallery: '#/components/schemas/GalleryViewView' + form: '#/components/schemas/FormViewView' + kanban: '#/components/schemas/KanbanViewView' + calendar: '#/components/schemas/CalendarViewView' + WidthEnum: + enum: + - auto + - full + type: string + description: |- + * `auto` - Auto + * `full` - Full + Workspace: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + required: + - id + - name + WorkspaceAdminUsers: + type: object + properties: + id: + type: integer + email: + type: string + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + required: + - email + - id + WorkspaceInvitation: + type: object + properties: + id: + type: integer + readOnly: true + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: >- + The workspace that the user will get access to once the invitation + is accepted. + email: + type: string + format: email + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + maxLength: 254 + permissions: + type: string + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + maxLength: 32 + message: + type: string + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + maxLength: 250 + created_on: + type: string + format: date-time + readOnly: true + required: + - created_on + - email + - group + - id + - workspace + WorkspaceUser: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + readOnly: true + description: User defined name. + email: + type: string + readOnly: true + description: User email. + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: The workspace that the user has access to. + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + created_on: + type: string + format: date-time + readOnly: true + user_id: + type: integer + description: The user that has access to the workspace. + readOnly: true + to_be_deleted: + type: boolean + description: True if user account is pending deletion. + required: + - created_on + - email + - group + - id + - name + - to_be_deleted + - user_id + - workspace + WorkspaceUserEnterpriseTeam: + type: object + description: A serializer for the `WorkspaceUserSerializer.teams` field. + properties: + id: + type: integer + readOnly: true + description: The unique identifier for this team. + name: + type: string + readOnly: true + description: The team name that this group user belongs to. + required: + - id + - name + WorkspaceUserWorkspace: + type: object + description: >- + This serializers includes relevant fields of the Workspace model, but + also + + some WorkspaceUser specific fields related to the workspace user + relation. + + + Additionally, the list of users are included for each workspace. + properties: + id: + type: integer + readOnly: true + description: Workspace id. + name: + type: string + readOnly: true + description: Workspace name. + users: + type: array + items: + $ref: '#/components/schemas/WorkspaceUser' + readOnly: true + description: List of all workspace users. + order: + type: integer + readOnly: true + description: The requesting user's order within the workspace users. + permissions: + type: string + readOnly: true + description: The requesting user's permissions for the workspace. + unread_notifications_count: + type: integer + readOnly: true + description: The number of unread notifications for the requesting user. + required: + - id + - name + - order + - permissions + - unread_notifications_count + - users + WorkspacesAdminResponse: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + users: + type: array + items: + $ref: '#/components/schemas/WorkspaceAdminUsers' + application_count: + type: integer + row_count: + type: integer + readOnly: true + storage_usage: + type: integer + maximum: 2147483647 + minimum: -2147483648 + nullable: true + seats_taken: + type: integer + free_users: + type: integer + readOnly: true + created_on: + type: string + format: date-time + readOnly: true + required: + - application_count + - created_on + - free_users + - id + - name + - row_count + - seats_taken + - users + calendar_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/CalendarViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + calendar_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + date_field: + type: integer + nullable: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + form_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/FormViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + form_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The cover image that must be displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The logo image that must be displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + receive_notification_on_submit: + type: boolean + readOnly: true + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - receive_notification_on_submit + - slug + gallery_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + gallery_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + grid_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + grid_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + kanban_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/KanbanViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + kanban_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + single_select_field: + type: integer + nullable: true + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + public_Builder_Workflow_Action_TypeBuilderWorkflowAction: + oneOf: + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + discriminator: + propertyName: type + mapping: + public_notification: '#/components/schemas/PublicNone' + public_open_page: '#/components/schemas/PublicNone' + public_create_row: '#/components/schemas/PublicNone' + public_update_row: '#/components/schemas/PublicNone' + public_logout: '#/components/schemas/PublicNone' + securitySchemes: + Database token: + type: http + scheme: bearer + bearerFormat: Token your_token + JWT: + type: http + scheme: bearer + bearerFormat: JWT your_token +tags: + - name: Settings + - name: User + - name: User files + - name: Groups + - name: Group invitations + - name: Workspaces + - name: Workspace invitations + - name: Templates + - name: Trash + - name: Applications + - name: Snapshots + - name: Jobs + - name: Integrations + - name: User sources + - name: Database tables + - name: Database table fields + - name: Database table views + - name: Database table view filters + - name: Database table view sortings + - name: Database table view decorations + - name: Database table view groupings + - name: Database table grid view + - name: Database table gallery view + - name: Database table form view + - name: Database table kanban view + - name: Database table calendar view + - name: Database table rows + - name: Database table export + - name: Database table webhooks + - name: Database tokens + - name: Builder pages + - name: Builder elements + - name: Builder domains + - name: Builder public + - name: Builder data sources + - name: Builder workflow actions + - name: Builder theme + - name: Admin +servers: + - url: api.baserow.io diff --git a/sdks/db/custom-request-specs/browse.ai.yaml b/sdks/db/custom-request-specs/browse.ai.yaml new file mode 100644 index 0000000000..3802b9aa8e --- /dev/null +++ b/sdks/db/custom-request-specs/browse.ai.yaml @@ -0,0 +1,8159 @@ +openapi: 3.1.0 +info: + title: Browse AI API Documentation + description: >- + If you are still using the deprecated API v1 version, you can see its + documentation [here](https://www.browse.ai/docs/api/v1). + version: v2 +servers: + - url: https://api.browse.ai/v2 +tags: + - name: internal + x-displayName: Internal + description: > + There are some endpoints that are only used by our integrations, so we + don't add this tag to our core resources + - name: system + x-displayName: System + description: > + This tag is used for endpoints that are used to check the status of Browse + AI infrastructure + - name: robots + x-displayName: Robots + description: > + A robot can be trained do almost anything you do manually on the web. For + example: + + - Open a webpage, + - Log in, + - Click on buttons, + - Fill out forms, + - Extract structured data from a webpage into a spreadsheet, + - Take screenshots, + - Monitor specific parts of webpages for visual or content changes. + + Robots are created either by using Prebuilt Robots or using Browse AI + Recorder and its click-and-extract interface. Every robot has a few input + parameters (like the webpage address) that you can adjust every time you + run it. + - name: tasks + x-displayName: Tasks + description: > + Each robot is trained to perform a certain task. Every time you run that + robot, it will perform that task and the details, including the extracted + data, will be stored under that task. + + + If you set up a monitoring robot to monitor a webpage for changes daily, + it will have to run a task every day or about 30 tasks per month for you. + - name: monitors + x-displayName: Monitors + description: > + Each robot on Browse AI can optionally have one or more monitors. + Monitoring robots come with one monitor by default. + + + For example, if you set up a monitoring robot to monitor a category page + on an e-commerce site for changes daily, you can set up additional + monitors to monitor other category pages on the same site using the same + robot. + + + Each monitor can have different input parameters and schedule. + - name: webhooks + x-displayName: Webhooks + description: | + After a robot finishes a task, its webhooks will be called. + - name: bulk runs + x-displayName: Bulk Runs + description: > + You can run up to 50,000 tasks at once using a robot with different input + parameters for each task. +x-tagGroups: + - name: Core Resources + tags: + - system + - robots + - tasks + - monitors + - webhooks + - bulk runs +paths: + /status: + get: + tags: + - system + summary: Endpoint for checking the status of Browse AI infrastructure + operationId: getSystemStatus + description: > + This endpoint provides you with real-time information regarding the + operational status of the Browse AI infrastructure. It gives insights + into the condition of the tasks queue, thus allowing you to understand + if the services are running smoothly or are under maintenance. + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/status"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/status\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/status") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/status", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/status', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/status"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/status", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/status", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/status" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/status") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/status \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/status + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/status")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON containing Browse AI infrastructure status + content: + application/json: + schema: + $ref: '#/components/schemas/getSystemStatus-200' + /teams: + get: + tags: + - internal + summary: Retrieve list of teams under user account + operationId: getUserTeams + description: > + this endpoint be used on Browse AI integrations to fetch all of the + teams by auth0 access token + parameters: + - $ref: '#/components/parameters/authorization' + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/teams"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/teams\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/teams") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/teams", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/teams', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/teams"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/teams", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/teams", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/teams" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/teams") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/teams \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/teams + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/teams")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON containing the total number of the user. + content: + application/json: + schema: + $ref: '#/components/schemas/getUserTeams-200' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + /robots: + get: + tags: + - robots + summary: Retrieve list of robots under your account + operationId: getRobots + description: > + If you have already created a few robots on [your + dashboard](https://dashboard.browse.ai), you can use this endpoint to + retrieve a list of them. + + You can then use other endpoints to retrieve more information about your + robots or run robots. + parameters: + - $ref: '#/components/parameters/authorization' + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/robots"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/robots", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: >- + A JSON containing the total number of robots and an array of robots + under this team. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobots-200' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + /robots/{robotId}: + get: + tags: + - robots + summary: Retrieve single robot by ID + operationId: getRobot + description: | + You can use this endpoint to retrieve a single robot by ID. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID You can find a robot's ID by opening it on the + dashboard and copying its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/robots/{robotId}", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: >- + A JSON containing the total number of robots and an array of robots + under this team. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobot-200' + '400': + description: A JSON containing an error code and message. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobot-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/cookies: + patch: + tags: + - robots + summary: Update a robot's cookies + operationId: upsertRobotCookies + description: Update a robot's cookies + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/RobotCookie' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.PATCH); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":false,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":16}\")\n\n\treq, _ := http.NewRequest(\"PATCH\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.patch("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "PATCH", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'PATCH', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @NO, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @16 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"PATCH"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "PATCH", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("PATCH", "/v2/robots/{robotId}/monitors/{monitorId}", + payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": False, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 16 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("PATCH", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Patch.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request PATCH \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method PATCH \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": false, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 16 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "PATCH" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the updated monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/upsertRobotCookies-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/upsertRobotCookies-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/tasks: + get: + tags: + - tasks + summary: Get all tasks by a robot + operationId: getRobotTasks + description: | + Get all of a robot's tasks + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + description: Page number + - in: query + name: pageSize + schema: + type: integer + minimum: 1 + maximum: 10 + default: 10 + example: 10 + required: false + description: Page size + - in: query + name: status + schema: + type: string + enum: + - failed + - successful + - in-progress + example: successful + required: false + description: Task status + - in: query + name: robotBulkRunId + schema: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + required: false + description: filter the result based on robot bulk run ID + - in: query + name: sort + schema: + type: string + example: '-createdAt,finishedAt' + required: false + description: >- + A comma separated list of fields to sort by. Default sorting is + ascending and prefixing field names with a hyphen '-' yields a + descending order. + - in: query + name: includeRetried + schema: + type: boolean + example: false + required: false + description: by passing false you can exclude the retried tasks + - in: query + name: fromDate + schema: + type: integer + example: 1678795867879 + required: false + description: From task creation date and time in the form of a Unix timestamp + - in: query + name: toDate + schema: + type: integer + example: 1678795867879 + required: false + description: To task creation date and time in the form of a Unix timestamp + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/tasks?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/tasks?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/tasks?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks?page=1")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTasks-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTasks-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + post: + tags: + - tasks + summary: Run a robot + operationId: newRobotTask + description: > + Run a robot on-demand with custom input parameters. + + + When you need to run a robot and get its captured data, you can use this + endpoint to run the task, and then use webhooks to receive the captured + data as soon as the task is finished. Alternatively, you can poll the + GET endpoint to retrieve a task's details as soon as it is finished. + requestBody: + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/NewRobotTaskBodyParams' + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks\"\n\n\tpayload := strings.NewReader(\"{\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/tasks") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + } + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + } + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"inputParameters": @{ @"originUrl": + @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" + } }; + + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/tasks", payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks" + + + payload = {"inputParameters": {"originUrl": + "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}} + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/tasks") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/tasks \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/tasks + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = ["inputParameters": ["originUrl": + "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"]] + as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/newRobotTask-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/newRobotTask-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: The request can not be processed + content: + application/json: + schema: + $ref: '#/components/schemas/CreditsLimitReachedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + '503': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/RobotUnderMaintenanceResponse' + /robots/{robotId}/tasks/{taskId}: + get: + tags: + - tasks + summary: Retrieve a task + operationId: getRobotTask + description: Retrieve a task's details and captured data. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: taskId + schema: + type: string + required: true + example: f3672790-4561-424b-8a7b-7b7df182b236 + description: Unique task ID + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks/{taskId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/tasks/{taskId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTask-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTask-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + /robots/{robotId}/monitors: + get: + tags: + - monitors + summary: Retrieve a robot's monitors + operationId: getMonitors + description: Retrieve a robot's monitors list. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/monitors", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including monitors list. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitors-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitors-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + post: + tags: + - monitors + summary: Create a new monitor on a robot + operationId: createNewMonitor + description: Create a new monitor on a robot. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNewMonitorRequestBody' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":true,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":15}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @YES, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @15 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/monitors", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": True, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 15 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": true, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 15 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the newly created monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorBadRequestResponse' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorForbiddenResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/monitors/{monitorId}: + get: + tags: + - monitors + summary: Retrieve a robot's monitor + operationId: getMonitor + description: Retrieve a robot's monitor. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/monitors/{monitorId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitor-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + patch: + tags: + - monitors + summary: Update a robot's monitor + operationId: updateMonitor + description: Update a robot's monitor + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitorUpdateBodyParams' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.PATCH); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":false,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":16}\")\n\n\treq, _ := http.NewRequest(\"PATCH\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.patch("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "PATCH", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'PATCH', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @NO, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @16 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"PATCH"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "PATCH", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("PATCH", "/v2/robots/{robotId}/monitors/{monitorId}", + payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": False, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 16 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("PATCH", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Patch.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request PATCH \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method PATCH \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": false, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 16 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "PATCH" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the updated monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/updateMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorBadRequestResponse' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorForbiddenResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + delete: + tags: + - monitors + summary: Delete a robot's monitor + operationId: deleteMonitor + description: Delete a robot's monitor. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.DELETE); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.delete("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "DELETE", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'DELETE', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"DELETE"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "DELETE", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("DELETE", "/v2/robots/{robotId}/monitors/{monitorId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("DELETE", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Delete.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request DELETE \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method DELETE \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "DELETE" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the deleted monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteMonitor-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/bulk-runs: + post: + tags: + - bulk runs + summary: Bulk run tasks + operationId: newBulkRun + description: Bulk run up to 1,000 tasks at a time using a robot. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BulkRunBodyParams' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs\"\n\n\tpayload := strings.NewReader(\"{\\\"title\\\":\\\"Bulk Run Title\\\",\\\"inputParameters\\\":[{\\\"originUrl\\\":\\\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\\\"},{\\\"originUrl\\\":\\\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\\\"}]}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/bulk-runs") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"title\":\"Bulk Run Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + title: 'Bulk Run Title', + inputParameters: [ + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories' + }, + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers' + } + ] + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + title: 'Bulk Run Title', + inputParameters: [ + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories' + }, + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers' + } + ] + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"title": @"Bulk Run Title", + @"inputParameters": @[ @{ @"originUrl": @"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories" }, @{ @"originUrl": @"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers" } ] }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"title\":\"Bulk Run Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/bulk-runs", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/bulk-runs" + + + payload = { + "title": "Bulk Run Title", + "inputParameters": [{"originUrl": "https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"}, {"originUrl": "https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}] + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/bulk-runs \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"title":"Bulk Run Title","inputParameters":[{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"},{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}]}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"title":"Bulk Run Title","inputParameters":[{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"},{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}]}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/bulk-runs + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "title": "Bulk Run Title", + "inputParameters": [["originUrl": "https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"], ["originUrl": "https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"]] + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the newly created Bulk run. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-403' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + '503': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/RobotUnderMaintenanceResponse' + get: + tags: + - bulk runs + summary: Retrieve a robot's bulk runs list + operationId: getBulkRuns + description: Retrieve a robot's bulk runs list. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + description: Page number + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/bulk-runs?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/bulk-runs" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1")! as + URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the bulk runs list. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRuns-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRuns-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + /robots/{robotId}/bulk-runs/{bulkRunId}: + get: + tags: + - bulk runs + summary: Retrieve a robot's bulk run + operationId: getBulkRun + description: >- + Retrieve a robot's bulk run along with a list of tasks run within the + bulk run. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: bulkRunId + schema: + type: string + required: true + example: 5aa4df52-25bb-48da-bf38-ce4f2bd98dd5 + description: | + Unique bulk run ID + - in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + description: Page number + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", + "/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: >- + A JSON object containing the bulk run information along with a + paginated list of all its tasks. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRun-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRun-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + /robots/{robotId}/webhooks: + get: + tags: + - webhooks + summary: Retrieve a robot's webhooks + operationId: getWebhooks + description: Retrieve a robot's webhook list. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/webhooks"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/webhooks\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/webhooks") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/webhooks", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/webhooks', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/webhooks"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/webhooks", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/webhooks", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/webhooks" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/webhooks") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/webhooks \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/webhooks + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/webhooks")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including monitors list. + content: + application/json: + schema: + $ref: '#/components/schemas/getWebhooks-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getWebhooks-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + post: + tags: + - webhooks + summary: Create a new webhook on a robot + operationId: createNewWebhook + description: Create a new webhook on a robot + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNewWebhookBodyParams' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":true,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":15}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @YES, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @15 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/monitors", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": True, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 15 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": true, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 15 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the newly created monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewWebhook-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewWebhook-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/webhooks/{webhookId}: + delete: + tags: + - webhooks + summary: Delete a robot's webhook + operationId: deleteWebhook + description: Delete a robot's webhook. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: webhookId + schema: + type: string + required: true + example: 6d7f1218-43fb-4735-ac71-21e81b1ab23e + description: | + Unique webhookId ID + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}"); + + var request = new RestRequest(Method.DELETE); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.delete("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "DELETE", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/webhooks/{webhookId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'DELETE', + url: 'https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"DELETE"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "DELETE", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("DELETE", "/v2/robots/{robotId}/webhooks/{webhookId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("DELETE", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Delete.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request DELETE \ + --url https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method DELETE \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "DELETE" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the deleted monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteWebhook-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteWebhook-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' +webhooks: + taskWebhook: + post: + summary: Task Finished + tags: + - webhooks + requestBody: + content: + application/json: + schema: + type: object + required: + - event + - task + properties: + event: + type: string + enum: + - task.finishedSuccessfully + - task.finishedWithError + - task.capturedDataChanged + example: task.finishedSuccessfully + description: The event type that triggered the webhook + task: + $ref: '#/components/schemas/RobotTaskWebhook' + responses: + '200': + description: >- + Your webhook URL is called only once – regardless of the response + status. This behavior may change in the future and we may introduce + automatic retries in cases where the response status is not 200 and + your software is having a downtime. At this time, however, you need + to make sure that the webhook URL is always available and set the + response status code to 200. + content: + application/json: + example: + status: success + tableExportWebhook: + post: + summary: Table Export Finished (Beta) + tags: + - webhooks + - Beta + description: > + This webhook is called when a table export is finished. The exported + file can be a CSV, JSON, or zip file. + + + Your webhook URL is called only once regardless of the response status. + requestBody: + content: + application/json: + schema: + type: object + required: + - exportId + - exportFile + - robotName + - robotId + - exportFinishedAt + - exportCreatedAt + properties: + exportId: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: The unique ID of the export + robotId: + type: string + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: The unique ID of the robot + fileTemporaryUrl: + type: string + example: https://s3.amazonaws.com/some-bucket/your-export.csv + description: The URL of the exported file + fileTemporaryUrlExpiresAt: + type: number + format: timestamp + example: 1678795867879 + description: >- + The unix timestamp of when the file URL expires in + milliseconds + exportFinishedAt: + type: number + format: timestamp + example: 1678795867879 + description: >- + The unix timestamp of when the export was finished in + milliseconds + exportCreatedAt: + type: number + format: timestamp + example: 1678795867879 + description: >- + The unix timestamp of when the export was created in + milliseconds + responses: + '200': + content: + application/json: + example: + status: success +components: + schemas: + getSystemStatus-200: + type: object + required: + - tasksQueueStatus + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + tasksQueueStatus: + type: string + enum: + - OK + - UNDER_MAINTENANCE + example: OK + Team: + type: object + required: + - id + - api + - createdAt + properties: + id: + type: string + example: b04eaafa-00c2-41a2-9c6a-7f7d32805a91 + description: Unique team ID + name: + type: string + nullable: true + example: Browse AI team + description: Team name + api: + type: boolean + example: true + description: API accessibility + createdAt: + type: integer + example: 1678795867879 + description: Team creation date and time in the form of a Unix timestamp + getUserTeams-200: + type: object + required: + - statusCode + - messageCode + - teams + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + teams: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of Team this user has. + items: + type: array + items: + $ref: '#/components/schemas/Team' + UnauthorizedResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 401 + messageCode: + type: string + enum: + - unauthorized + - no_api_access + example: unauthorized + CommonParameterPart: + type: object + required: + - name + - label + properties: + type: + type: string + description: Parameter type + name: + type: string + example: originUrl + description: Parameter name + label: + type: string + example: Origin URL + description: Parameter title + TextParameter: + title: Text Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - defaultValue + - encrypted + properties: + encrypted: + type: boolean + example: false + description: Whether parameter value and defaultValue are encrypted + defaultValue: + type: string + example: >- + https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines + description: > + Parameter default value that will be used as a fallback if you + do not specify a parameter's value when running a robot. If + `encrypted` is `true`, this will appear as an arbitrary string + like `******`. Parameter default values can be updated on robot + Settings page on your dashboard. + value: + type: string + nullable: true + example: null + description: > + Parameter value specified when running robot. If `encrypted` is + `true`, this will appear as an arbitrary string like `******`. + type: + type: string + enum: ["text"] + example: "text" + description: Parameter type + pattern: + type: string + description: Parameter Pattern + NumberParameter: + title: Numeric Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - type + - name + - label + - defaultValue + properties: + type: + type: string + enum: + - number + example: number + description: Parameter type + name: + type: string + example: limit + description: Parameter name + label: + type: string + example: Limit + description: Parameter title + defaultValue: + type: number + example: 10 + description: >- + Parameter default value that will be used if you do not specify + a parameter's value when running a robot. + value: + type: number + nullable: true + example: null + description: Parameter value specified when running robot. + min: + type: number + nullable: true + example: 0 + description: Minimum value this parameter accepts + max: + type: number + nullable: true + example: 200 + description: Maximum value this parameter accepts + URLParameter: + title: URL Parameter + allOf: + - $ref: '#/components/schemas/TextParameter' + - type: object + required: + - type + - encrypted + properties: + type: + type: string + enum: + - url + example: url + description: Parameter type + encrypted: + type: boolean + example: false + description: Whether parameter value and defaultValue are encrypted + SelectParameterOption: + type: object + required: + - label + - value + properties: + label: + type: string + example: Option 1 + description: The label for the select option + value: + type: string + example: option1 + description: The value for the select option + SelectParameter: + title: Select Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - type + - name + - label + - defaultValue + - options + properties: + type: + type: string + enum: + - select + example: select + description: Parameter type + name: + type: string + example: choice + description: Parameter name + label: + type: string + example: Choice + description: Parameter title + defaultValue: + type: array + items: + type: string + example: + - option_1 + - option_2 + description: > + Parameter default value that will be used as a fallback if you + do not specify a parameter's value when running a robot. + + It should be an array of string values. Each string value should + be one of the `value` or `label` of the `options` array. For + each string value, if there is a matching `value` in the + `options` array, it will be used as the default value. + Otherwise, it looks for the `label` in the `options` and uses + the `value` of the option with that `label`. If no matching + `value` or `label` is found, it throws an error. + value: + type: array + items: + type: string + nullable: true + example: + - option_1 + - option_2 + description: > + Parameter value specified when running robot. + + If it is specified, it should be an array of string values. Each + string value should be one of the `value` or `label` of the + `options` array. For each string value, if there is a matching + `value` in the `options` array, it will be used as the default + value. Otherwise, it looks for the `label` in the `options` and + uses the `value` of the option with that `label`. If no matching + `value` or `label` is found, it throws an error. + options: + type: array + items: + $ref: '#/components/schemas/SelectParameterOption' + example: + - label: Option 1 label + value: option_1 + - label: Option 2 label + value: option_2 + description: Available options for the select parameter + RobotInputParameters: + type: array + items: + oneOf: + - $ref: '#/components/schemas/TextParameter' + - $ref: '#/components/schemas/NumberParameter' + - $ref: '#/components/schemas/URLParameter' + - $ref: '#/components/schemas/SelectParameter' + Robot: + type: object + required: + - id + - createdAt + properties: + id: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + name: + type: string + example: Extract data from Realtor.com + description: Robot name + createdAt: + type: integer + example: 1678795867879 + description: Robot creation date and time in the form of a Unix timestamp + inputParameters: + $ref: '#/components/schemas/RobotInputParameters' + getRobots-200: + type: object + required: + - statusCode + - messageCode + - robots + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + robots: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of robots this team has. + items: + type: array + items: + $ref: '#/components/schemas/Robot' + getRobot-200: + type: object + required: + - statusCode + - messageCode + - robot + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + robot: + $ref: '#/components/schemas/Robot' + getRobot-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + NotFoundResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 404 + messageCode: + type: string + enum: + - not_found + InternalServerResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 500 + messageCode: + type: string + enum: + - internal_server_error + RobotCookie: + type: object + properties: + name: + type: string + description: The name of the cookie. + example: ACCOUNT_CHOOSER + value: + type: string + description: The value of the cookie. + example: 12341234 + domain: + type: string + description: >- + The domain associated with the cookie. Specifies the domains to + which the cookie should be sent. + example: .example.com + expirationDate: + type: number + format: int64 + description: >- + The expiration date of the cookie in seconds since the UNIX epoch + (e.g., POSIX time). If not provided, the cookie will be treated as a + session cookie. + example: 1723659417 + path: + type: string + description: >- + The URL path to which the cookie should be sent. If not provided, it + defaults to the current path of the document location. + example: /products/ + secure: + type: boolean + description: >- + Indicates whether the cookie should only be sent over secure (HTTPS) + connections. If true, the cookie will not be sent over unencrypted + HTTP connections. + example: true + httpOnly: + type: boolean + description: >- + If true, the cookie is accessible only through the HTTP(S) protocol + and cannot be accessed through JavaScript or other client-side + scripts. + example: true + hostOnly: + type: boolean + description: >- + If true, the cookie is only sent to the exact domain specified in + the "domain" property. If false, the cookie is sent to subdomains as + well, provided that the "domain" property allows it. + example: true + required: + - name + - value + upsertRobotCookies-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + cookies: + type: array + items: + $ref: '#/components/schemas/RobotCookie' + CookieError: + type: object + required: + - summary + - fields + properties: + name: + type: string + description: Name of the cookie + example: ACCOUNT_CHOOSER + summary: + type: string + description: Summary of the error + example: Errors found in existing cookie fields + fields: + type: array + items: + type: object + required: + - field + - message + properties: + field: + type: string + description: Field name with the error + example: value + message: + type: string + description: Error message for the field + example: Required + upsertRobotCookies-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + example: bad_request + errors: + type: array + items: + $ref: '#/components/schemas/CookieError' + InputParameters: + type: object + description: An object of input parameters to override default input parameters. + example: + originUrl: https://www.ycombinator.com/companies/airbnb + companies_skip: 0 + companies_limit: 10 + additionalProperties: + oneOf: + - type: string + - type: number + - type: array + items: + type: string + CapturedTexts: + type: object + description: Captured texts + example: + Product Name: Alexis + Width: '15' + Pattern Repeat: PATTERN REPEAT + Construction: Hand woven + Fiber: 100% Wool + Color: null + Main Image: >- + https://isteam.wsimg.com/ip/e31f7bba-252b-4669-9209-639d1c00765d/ols/258_original + additionalProperties: + type: string + nullable: true + CapturedScreenshots: + type: object + description: All screenshots captured in this task. + example: + top-ads: + id: b4d132f3-12d9-4770-ac7d-88e481fc5b47 + name: Top ads + src: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + width: 600 + height: 120 + x: 201 + 'y': 142 + deviceScaleFactor: 1.2 + full: page + comparedToScreenshotId: 29d742c2-6f45-4f29-9d48-ba6fe66e6e3d + diffImageSrc: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + changePercentage: 20 + diffThreshold: 5 + fileRemovedAt: 1678795867879 + additionalProperties: + type: object + required: + - id + - src + - width + - height + - x + - 'y' + - deviceScaleFactor + - changePercentage + - diffThreshold + properties: + id: + type: string + example: b4d132f3-12d9-4770-ac7d-88e481fc5b47 + description: Unique screenshot ID + name: + type: string + nullable: true + example: Top ads + description: Screenshot name + src: + type: string + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + description: Screenshot image link + width: + type: number + example: 600 + minimum: 0 + description: Screenshot rectangle width in pixels + height: + type: number + example: 120 + minimum: 0 + description: Screenshot rectangle height in pixels + x: + type: number + example: 201 + description: >- + Screenshot rectangle distance from the left edge of the page in + pixels + 'y': + type: number + example: 142 + description: >- + Screenshot rectangle distance from the top edge of the page in + pixels + deviceScaleFactor: + type: number + example: 1.2 + description: Device scale factor when screenshot was taken + full: + type: string + nullable: true + example: page + description: > + Whether this is a full *page* screenshot, a *viewport* screenshot, + or a different type of screenshot. + + + `null` means it is either an HTML element screenshot or a + particular rectangle (x, y, w, h) screenshot. + comparedToScreenshotId: + type: string + nullable: true + example: 29d742c2-6f45-4f29-9d48-ba6fe66e6e3d + description: >- + If screenshot was taken in a monitoring check, this is the ID of + the screenshot it was compared to. + diffImageSrc: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + description: >- + A transparent PNG highlighting changes compared to previous + screenshot in red + changePercentage: + type: number + example: 20 + minimum: 0 + description: How much screenshot changed compared to previous screenshot + diffThreshold: + type: integer + example: 5 + minimum: 0 + description: >- + The change percentage threshold above which the user would be + notified of the change, based on monitor settings. + fileRemovedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + After your account's data retention period, screenshots get + removed and this field will be screenshot removal date and time + in the form of a Unix timestamp. + CapturedLists: + type: object + description: All lists captured in this task. + example: + companies: + - Position: '1' + name: Airbnb + location: San Francisco, CA, USA + description: Book accommodations around the world. + - Position: '2' + name: Coin base + location: San Francisco, CA, USA + description: Buy, sell, and manage crypto currencies. + - Position: '3' + name: DoorDash + location: San Francisco, CA, USA + description: Restaurant delivery. + additionalProperties: + type: array + items: + $ref: '#/components/schemas/CapturedTexts' + RobotTask: + type: object + required: + - id + - inputParameters + - robotId + - createdAt + - runByAPI + - triedRecordingVideo + - capturedTexts + - capturedScreenshots + - capturedLists + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique task ID + inputParameters: + $ref: '#/components/schemas/InputParameters' + robotId: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + status: + type: string + enum: + - failed + - successful + - in-progress + example: successful + description: task status + runByUserId: + type: string + nullable: true + example: null + description: User ID who ran the robot on the dashboard + robotBulkRunId: + type: string + nullable: true + example: null + description: Robot bulk run ID associated with this task + runByTaskMonitorId: + type: string + nullable: true + example: null + description: Monitor ID that ran this check + runByAPI: + type: boolean + example: true + description: Whether the robot was ran through the API + createdAt: + type: integer + example: 1678795867879 + description: Task creation date and time in the form of a Unix timestamp + startedAt: + type: integer + nullable: true + example: 1678795867879 + description: Task start date and time in the form of a Unix timestamp + finishedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + Task finish date and time in the form of a Unix timestamp. + + + If `null`, it means robot is still running and capturing data. + + + Tasks time out with an error if they are not finished within 15 + minutes (or the maximum duration allowed on your plan). + userFriendlyError: + type: string + nullable: true + example: null + description: If task fails, a user-friendly error will be provided here. + triedRecordingVideo: + type: boolean + example: true + description: > + Whether the robot tried to record a video while performing this + task. + + + You can change a robot's video recording setting on its Settings + page. + + + Robots try to record a video when a task is failed and auto-retried + as well. + videoUrl: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4 + description: >- + If a video was recorded for this task, this is the link to the + video. + videoRemovedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + After your account's data retention period, task videos get removed + and this field will be video removal date and time in the form of a + Unix timestamp. + retriedOriginalTaskId: + type: string + nullable: true + example: 673da019-bf0c-476e-9c4f-d35252a151dc + description: >- + The ID of the original failed task this task was retrying. For + example, if task A failed and was retried by task B, and task B was + retried by task C, `retriedOriginalTaskId` will point to task A in + both task B and C. + retriedByTaskId: + type: string + nullable: true + example: null + description: > + The ID of the task that retried this task, if this task failed with + an error and was retried. + + + Failed tasks get retried if "Double Check" option is enabled on + robot Settings page. "Double Check" is enabled by default. + capturedDataTemporaryUrl: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host + description: >- + If your task's captured data exceeds 100KB, the data will be only + accessible through this link. There's a 24 hours expiration time for + this link (you need to call this API again to get a new link if it + expires). + capturedTexts: + $ref: '#/components/schemas/CapturedTexts' + capturedScreenshots: + $ref: '#/components/schemas/CapturedScreenshots' + capturedLists: + $ref: '#/components/schemas/CapturedLists' + getRobotTasks-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + required: + - robotTasks + properties: + robotTasks: + type: object + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of tasks this robot has. + pageNumber: + type: integer + example: 1 + description: Current page number. + hasMore: + type: boolean + example: true + description: Whether there are more tasks on the next page. + items: + type: array + items: + $ref: '#/components/schemas/RobotTask' + getRobotTasks-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - invalid_from_date + - invalid_to_date + example: invalid_robot_id + NewRobotTaskBodyParams: + type: object + properties: + recordVideo: + type: boolean + example: false + description: >- + Try to record a video while running the task. This is not guaranteed + to work as the robot might skip video recording if the site is too + heavy. + minLength: 1 + maxLength: 200 + required: false + inputParameters: + $ref: '#/components/schemas/InputParameters' + newRobotTask-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/RobotTask' + newRobotTask-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - body_parse_error + - invalid_robot_id + - invalid_input_parameters + example: bad_request + CreditsLimitReachedResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - credits_limit_reached + RobotUnderMaintenanceResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 503 + messageCode: + type: string + enum: + - robot_under_maintenance + getRobotTask-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/RobotTask' + getRobotTask-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + - invalid_task_id + example: bad_request + Schedules: + type: array + description: | + Array of schedules. + deprecated: true + items: + type: object + title: Fixed interval schedule + required: + - type + - everyMinutes + properties: + type: + type: string + enum: + - FIXED_INTERVAL + example: FIXED_INTERVAL + description: Schedule type + everyMinutes: + type: number + example: 60 + description: Schedule interval in minutes + example: + - type: FIXED_INTERVAL + everyMinutes: 60 + Schedule: + type: string + description: | + recurring schedule. + example: FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR + Monitor: + type: object + required: + - id + - name + - status + - pausedReason + - inputParameters + - notifyOnCapturedScreenshotChange + - notifyOnCapturedTextChange + - capturedScreenshotNotificationThreshold + - createdAt + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique robot monitor ID + name: + type: string + example: Monitor Products + description: Monitor name + status: + type: string + enum: + - active + - paused + example: active + description: >- + Represents the current state of the monitor. 'active' indicates that + the monitor is currently operational and performing its intended + functions, while 'paused' signifies that the monitor's activities + are temporarily suspended. The 'paused' state may be due to reasons + specified in the 'pausedReason' attribute. + pausedReason: + type: string + nullable: true + enum: + - lowCredits + - tooManyFailures + - userRequested + - userInactivity + example: null + description: Specifies the reason why the monitor is in a paused state. + inputParameters: + $ref: '#/components/schemas/InputParameters' + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + notifyOnCapturedTextChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + capturedScreenshotNotificationThreshold: + type: number + example: 15 + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + createdAt: + type: integer + example: 1678795867879 + description: Monitor creation date and time in the form of a Unix timestamp. + pausedAt: + type: integer + nullable: true + example: 1678795867879 + description: Monitor pause date and time in the form of a Unix timestamp. + updatedAt: + type: integer + nullable: true + example: 1678795867879 + description: Monitor last update date and time in the form of a Unix timestamp. + getMonitors-200: + type: object + required: + - statusCode + - messageCode + - monitors + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitors: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: number + example: 10 + description: Total number of monitors this robot has + items: + type: array + description: Array of all monitors + items: + $ref: '#/components/schemas/Monitor' + getMonitors-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + example: bad_request + CreateNewMonitorRequestBody: + type: object + required: + - name + - inputParameters + - notifyOnCapturedScreenshotChange + - notifyOnCapturedTextChange + - capturedScreenshotNotificationThreshold + properties: + name: + type: string + example: Monitor Products + description: Monitor name + minLength: 1 + maxLength: 200 + inputParameters: + $ref: '#/components/schemas/InputParameters' + description: An object of input parameters to override default input parameters. + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + notifyOnCapturedTextChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + capturedScreenshotNotificationThreshold: + type: number + example: 15 + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + createNewMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + CreateOrUpdateMonitorBadRequestResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + - invalid_name + - invalid_status + - invalid_input_parameters + - invalid_notifyOnCapturedScreenshotChange + - invalid_notifyOnCapturedTextChange + - invalid_capturedScreenshotNotificationThreshold + - invalid_schedules + - invalid_schedule + - invalid_monitor_id + example: bad_request + CreateOrUpdateMonitorForbiddenResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - schedule_interval_below_minimum + example: schedule_interval_below_minimum + getMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + getMonitor-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - invalid_monitor_id + example: bad_request + deleteMonitor-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + deleteMonitor-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - invalid_monitor_id + example: invalid_robot_id + MonitorUpdateBodyParams: + type: object + properties: + name: + type: string + example: Monitor Products + description: Monitor name + nullable: true + status: + type: string + enum: + - active + - paused + example: active + description: >- + If set to `paused`, the monitor will stop working until an `active` + status is sent. + nullable: true + inputParameters: + $ref: '#/components/schemas/InputParameters' + nullable: true + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + nullable: true + notifyOnCapturedTextChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + nullable: true + capturedScreenshotNotificationThreshold: + type: number + example: 15 + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + nullable: true + updateMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + BulkRun: + type: object + required: + - id + - tasksCount + - robotId + - createdAt + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique bulk run ID + title: + type: string + nullable: true + example: Bulk Run Title + description: An optional string that describes the bulk run. + minLength: 1 + maxLength: 200 + tasksCount: + type: integer + example: 10 + description: Number of tasks under this bulk run. + robotId: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + createdAt: + type: integer + example: 1678795867879 + description: Bulk run creation date and time in the form of a Unix timestamp. + BulkRuns: + type: object + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of bulk runs a robot has had. + pageNumber: + type: integer + example: 1 + description: Current page number. + hasMore: + type: boolean + example: true + description: Whether there are more bulk runs on the next page. + items: + type: array + items: + $ref: '#/components/schemas/BulkRun' + getBulkRuns-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/BulkRuns' + getBulkRuns-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + ArrayOfUserInputParameters: + type: array + description: >- + An array of input parameters to override the task's default input + parameters. + example: + - originUrl: https://www.ycombinator.com/companies/airbnb + companies_skip: 0 + companies_limit: 10 + - originUrl: https://www.ycombinator.com/companies/coinbase + companies_skip: 0 + companies_limit: 20 + items: + $ref: '#/components/schemas/InputParameters' + BulkRunBodyParams: + type: object + required: + - inputParameters + properties: + title: + type: string + example: Bulk Run Title + description: A string that describes the bulk run. + minLength: 1 + maxLength: 200 + required: false + inputParameters: + $ref: '#/components/schemas/ArrayOfUserInputParameters' + newBulkRun-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + properties: + bulkRun: + $ref: '#/components/schemas/BulkRun' + newBulkRun-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - body_parse_error + - invalid_robot_id + - invalid_input_parameters + - zero_length_parameters + example: bad_request + newBulkRun-403: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - credits_limit_reached + - exceeded_bulk_run_threshold + example: exceeded_bulk_run_threshold + RobotTasks: + type: object + description: A paginated list of tasks. + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of tasks. + pageNumber: + type: integer + example: 1 + description: Current page number. + hasMore: + type: boolean + example: true + description: Whether there are more tasks on the next page. + items: + type: array + items: + $ref: '#/components/schemas/RobotTask' + getBulkRun-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + required: + - bulkRun + - robotTasks + properties: + bulkRun: + $ref: '#/components/schemas/BulkRun' + robotTasks: + $ref: '#/components/schemas/RobotTasks' + getBulkRun-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + Webhook: + type: object + required: + - id + - url + - webhookEvent + - createdAt + properties: + id: + type: string + example: 6d7f1218-43fb-4735-ac71-21e81b1ab23e + description: Unique webhook ID + url: + type: string + example: https://example.com/v2/webhooks/callback/events + description: Webhook URL + webhookEvent: + type: string + enum: + - taskCapturedDataChanged + - taskFinished + - taskFinishedSuccessfully + - taskFinishedWithError + - tableExportFinishedSuccessfully + example: taskFinished + createdAt: + type: integer + example: 1678795867879 + description: Monitor creation date and time in the form of a Unix timestamp. + getWebhooks-200: + type: object + required: + - statusCode + - messageCode + - webhooks + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + webhooks: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: number + example: 10 + description: Total number of webhooks this robot has + items: + type: array + description: Array of all webhooks + items: + $ref: '#/components/schemas/Webhook' + getWebhooks-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + example: bad_request + CreateNewWebhookBodyParams: + type: object + required: + - hookUrl + - eventType + properties: + hookUrl: + type: string + example: https://example.com/v2/webhooks/callback/events + description: Webhook URL + eventType: + type: string + enum: + - taskCapturedDataChanged + - taskFinished + - taskFinishedSuccessfully + - taskFinishedWithError + - tableExportFinishedSuccessfully + example: taskFinished + createNewWebhook-200: + type: object + required: + - statusCode + - messageCode + - webhook + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + webhook: + $ref: '#/components/schemas/Webhook' + createNewWebhook-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + - invalid_hookUrl + - invalid_eventType + example: bad_request + deleteWebhook-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + deleteWebhook-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - invalid_webhook_id + - bad_request + example: invalid_robot_id + RobotTaskWebhook: + type: object + required: + - id + - inputParameters + - robotId + - createdAt + - runByAPI + - triedRecordingVideo + - capturedTexts + - capturedScreenshots + - capturedLists + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique task ID + inputParameters: + $ref: '#/components/schemas/InputParameters' + robotId: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + status: + type: string + enum: + - failed + - successful + - in-progress + example: successful + description: task status + runByUserId: + type: string + nullable: true + example: null + description: User ID who ran the robot on the dashboard + robotBulkRunId: + type: string + nullable: true + example: null + description: Robot bulk run ID associated with this task + runByTaskMonitorId: + type: string + nullable: true + example: null + description: Monitor ID that ran this check + runByAPI: + type: boolean + example: true + description: Whether the robot was ran through the API + createdAt: + type: integer + example: 1678795867879 + description: Task creation date and time in the form of a Unix timestamp + startedAt: + type: integer + nullable: true + example: 1678795867879 + description: Task start date and time in the form of a Unix timestamp + finishedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + Task finish date and time in the form of a Unix timestamp. + + + If `null`, it means robot is still running and capturing data. + + + Tasks time out with an error if they are not finished within 15 + minutes (or the maximum duration allowed on your plan). + userFriendlyError: + type: string + nullable: true + example: null + description: If task fails, a user-friendly error will be provided here. + triedRecordingVideo: + type: boolean + example: true + description: > + Whether the robot tried to record a video while performing this + task. + + + You can change a robot's video recording setting on its Settings + page. + + + Robots try to record a video when a task is failed and auto-retried + as well. + videoUrl: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4 + description: >- + If a video was recorded for this task, this is the link to the + video. + videoRemovedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + After your account's data retention period, task videos get removed + and this field will be video removal date and time in the form of a + Unix timestamp. + retriedOriginalTaskId: + type: string + nullable: true + example: 673da019-bf0c-476e-9c4f-d35252a151dc + description: >- + The ID of the original failed task this task was retrying. For + example, if task A failed and was retried by task B, and task B was + retried by task C, `retriedOriginalTaskId` will point to task A in + both task B and C. + retriedByTaskId: + type: string + nullable: true + example: null + description: > + The ID of the task that retried this task, if this task failed with + an error and was retried. + + + Failed tasks get retried if "Double Check" option is enabled on + robot Settings page. "Double Check" is enabled by default. + capturedTexts: + $ref: '#/components/schemas/CapturedTexts' + capturedScreenshots: + $ref: '#/components/schemas/CapturedScreenshots' + capturedLists: + $ref: '#/components/schemas/CapturedLists' + parameters: + authorization: + in: header + name: authorization + required: true + schema: + type: string + example: Bearer YOUR_SECRET_API_KEY + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. diff --git a/sdks/db/custom-request-specs/chatkitty.com.yaml b/sdks/db/custom-request-specs/chatkitty.com.yaml new file mode 100644 index 0000000000..20a357a284 --- /dev/null +++ b/sdks/db/custom-request-specs/chatkitty.com.yaml @@ -0,0 +1,15837 @@ +openapi: 3.0.1 +info: + title: ChatKitty Platform API + description: |- + OpenAPI specification (OAS) for the ChatKitty Platform API. + See the Interactive Docs to try ChatKitty API methods without writing code, + and get the complete schema of resources exposed by the API. + termsOfService: https://chatkitty.com/terms-of-service + contact: + name: Support + url: mailto:support@chatkitty.com + license: + name: MIT + url: https://opensource.org/licenses/MIT + version: 2.57.0 +externalDocs: + description: Platform API Interactive Docs + url: https://api.chatkitty.com/docs/reference +servers: + - url: https://api.chatkitty.com +tags: + - name: analytics + description: Export analytics data from your ChatKitty application + x-displayName: Analytics + - name: application + description: Configure and manage your ChatKitty application + x-displayName: Application + - name: channels + description: Operations to create, retrieve, update and delete channels + x-displayName: Channels + - name: chat-sessions + description: Chat session operations + x-displayName: Chat Sessions + - name: function-versions + description: Chat function version operations + x-displayName: Chat Function Versions + - name: functions + description: Chat function operations + x-displayName: Chat Functions + - name: imports + description: Import user, channel, message data into your ChatKitty application + x-displayName: Imports + - name: jobs + description: >- + Retrieve information about long running scheduled jobs like imports and + exports + x-displayName: Jobs + - name: messages + description: Operations to retrieve, update and delete messages + x-displayName: Messages + - name: runtime + description: Chat runtime operations + x-displayName: Chat Runtime + - name: threads + description: Message thread operations + x-displayName: Threads + - name: user-sessions + description: User session operations + x-displayName: User Sessions + - name: users + description: User operations + x-displayName: Users +paths: + /v1/analytics/messages: + post: + tags: + - analytics + summary: Export message analytics + description: Batch export message analytics data + operationId: export-message-analytics + responses: + '202': + description: Export job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + x-codeSamples: [] + /v1/analytics/users: + post: + tags: + - analytics + summary: Export user analytics + description: Batch export user analytics data + operationId: export-user-analytics + responses: + '202': + description: Export job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: [] + /v1/application: + get: + tags: + - application + summary: Retrieve the authenticated application + description: >- + Returns the ChatKitty application associated with the authentication + credentials used. + + + You must use an **OAuth V2 Bearer token** to access this endpoint. + operationId: retrieve-authenticated-application + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:application + x-codeSamples: + - lang: cURL + source: | + curl -X 'GET' \ + 'https://api.chatkitty.com/v1/application' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Application.retrieveAuthenticatedApplication() + /v1/application/settings: + get: + tags: + - application + summary: Retrieve the authenticated application settings + description: Returns the current settings configuring this application + operationId: retrieve-authenticated-application-settings + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:application + x-codeSamples: + - lang: cURL + source: | + curl -X 'GET' \ + 'https://api.chatkitty.com/v1/application/settings' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: > + // npm install chatkitty-platform-sdk + + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await + chatkitty.Application.retrieveAuthenticatedApplicationSettings() + put: + tags: + - application + summary: Update the authenticated application settings + description: Update the settings configuring this application + operationId: update-authenticated-application-settings + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - update:application + x-codeSamples: + - lang: cURL + source: | + curl -X 'PUT' \ + 'https://api.chatkitty.com/v1/application/settings' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "guestUsers": "DISABLED", + "userCreatedChannels": "DISABLED" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Application.updateAuthenticatedApplicationSettings({ + guestUsers: 'DISABLED', + userCreatedChannels: 'DISABLED' + }) + /v1/channels: + get: + tags: + - channels + summary: List channels + description: Returns a page of channels belonging to this application + operationId: list-channels + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: type + in: query + description: Filters by channel type + required: false + schema: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + - name: members + in: query + description: Filters by channel members using their usernames + required: false + schema: + uniqueItems: true + type: array + items: + type: string + - name: startTime + in: query + description: 'Filters for channels created within a time range: start time' + required: false + schema: + type: string + format: date-time + - name: endTime + in: query + description: 'Filters for channels created within a time range: end time' + required: false + schema: + type: string + format: date-time + - name: properties + in: query + description: Filters by channel custom properties + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels?page=0&size=5' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannels() + post: + tags: + - channels + summary: Create a channel + description: Creates a new channel or returns an equivalent existing channel + operationId: create-channel + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "PUBLIC", + "name": "b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.createChannel({ + type: "PUBLIC", + name: "b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7" + }) + /v1/channels/{id}: + get: + tags: + - channels + summary: Retrieve a channel + description: Returns a channel by ID + operationId: retrieve-channel + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.retrieveChannel(55913) + delete: + tags: + - channels + summary: Delete a channel + description: Deletes a channel by ID + operationId: delete-channel + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - delete:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.deleteChannel(55913) + patch: + tags: + - channels + summary: Update a channel + description: Updates a channel properties + operationId: update-channel + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - update:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PATCH' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json+merge-patch' \ + -d '{ + "displayName": "A chatty channel" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.updateChannel(55913, { + displayName: "A chatty channel" + }) + /v1/channels/{id}/events: + post: + tags: + - channels + summary: Send a channel event + description: Sends a custom channel event + operationId: send-channel-event + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelGenericEventResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - create:channel_event + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/events' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "My Custom Event", + "properties": { + "payload": "Boom!", + "stuff": { + "favoriteNumber": 42, + "favoriteMovie": "Lilo and Stitch" + } + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelEvent(55913, { + type: "My Custom Event", + properties: { + payload: "Boom!", + stuff: { + "favoriteNumber": 42, + "favoriteMovie": "Lilo and Stitch" + } + } + }) + /v1/channels/{id}/invites: + get: + tags: + - channels + summary: List channel invites + description: Returns a page of invites sent to join this channel + operationId: list-channel-invites + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel_invite + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/invites?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelInvites(67026) + post: + tags: + - channels + summary: Send a channel invite + description: Sends a channel invite to user + operationId: send-channel-invite + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelInviteResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:channel_invite + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/67026/invites' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + user: { + "username": "jane@chatkitty.com" + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelInvite(67026, { + user: { + username: "jane@chatkitty.com" + } + }) + /v1/channels/{id}/keystrokes: + post: + tags: + - channels + summary: Send channel keystrokes + description: Sends keystrokes in this channel on behalf of a user + operationId: send-channel-keystrokes + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/CreateDelegatedReplyThreadKeystrokesResource + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:keystrokes + x-codeSamples: [] + /v1/channels/{id}/members: + get: + tags: + - channels + summary: List a channel's members + description: Returns a page of channel members + operationId: list-channel-members + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/members?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMembers(67026) + post: + tags: + - channels + summary: Add a channel member + description: Makes a user a group channel member + operationId: add-channel-member + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserReference' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/members' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "username": "jane@chatkitty.com" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.addChannelMember(55913, { + username: "jane@chatkitty.com" + }) + /v1/channels/{id}/members/{user_id}: + delete: + tags: + - channels + summary: Remove a channel member + description: Removes a member from a group channel + operationId: remove-channel-member + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: user_id + in: path + description: User ID of member to be removed + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - delete:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913/members/14503' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.removeChannelMember(55913, 14503) + /v1/channels/{id}/memberships: + get: + tags: + - channels + summary: List channel memberships + description: Returns a page of channel membership info for this channel + operationId: list-channel-memberships + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/memberships?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMemberships(702) + /v1/channels/{id}/messages: + get: + tags: + - channels + summary: List channel messages + description: Returns a page of messages sent in this channel + operationId: list-channel-messages + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - name: username + in: query + required: false + schema: + type: string + - name: query + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMessages(702) + post: + tags: + - channels + summary: Send a channel message + description: Sends a message in this channel as the system or on behalf of a user + operationId: send-channel-message + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateMessageResource' + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + format: binary + groupTag: + type: string + username: + type: string + properties: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/702/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "TEXT", + "body": "🌞" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelMessage(702, { + "type": "TEXT", + "body": "🌞" + }) + /v1/channels/{id}/moderators: + get: + tags: + - channels + summary: Lists a channel's moderators + description: Returns a page of channel moderators + operationId: list-channel-moderators + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:channel_moderator + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/moderators?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelModerators(67026) + post: + tags: + - channels + summary: Add a channel moderator + description: Makes a user a group channel moderator + operationId: add-channel-moderator + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserReference' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - read:channel_membership + - create:channel_moderator + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/moderators' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "username": "jane@chatkitty.com" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.addChannelModerator(55913, { + username: "jane@chatkitty.com" + }) + /v1/channels/{id}/moderators/{user_id}: + delete: + tags: + - channels + summary: Remove a channel moderator + description: Removes a moderator from a group channel + operationId: remove-channel-moderator + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: user_id + in: path + description: User ID of moderator to be removed + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - delete:channel_moderator + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913/moderators/14503' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.removeChannelModerator(55913, 14503) + /v1/channels/{id}/participants: + get: + tags: + - channels + summary: List channel participants + description: >- + Returns a page of channel active participants: members that currently + online + operationId: list-channel-participants + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:chat_session + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/participants?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelParticipants(702) + /v1/channels/{id}/reported-messages: + get: + tags: + - channels + summary: List channel reported messages + description: Returns a page of reported messages in this channel + operationId: list-channel-reported-messages + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:message_report + x-codeSamples: [] + /v1/chat-sessions: + get: + tags: + - chat-sessions + summary: List chat sessions + description: Returns a page of chat sessions belonging to this application + operationId: list-chat-sessions + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: state + in: query + description: Filters by state + required: false + schema: + type: string + enum: + - ACTIVE + - ENDED + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:chat_session + x-codeSamples: [] + /v1/function-versions/{id}: + get: + tags: + - function-versions + summary: Retrieve a chat function version + description: Returns a chat function version by ID + operationId: retrieve-function-version + parameters: + - name: id + in: path + description: Chat function version ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/function-versions/13515' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.FunctionVersions.retrieveFunctionVersion(13515) + /v1/functions/{id}: + get: + tags: + - functions + summary: Retrieve a chat function + description: Returns a chat function by ID + operationId: retrieve-function + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.retrieveFunction(1) + + + /v1/functions/{id}/current-version: + get: + tags: + - functions + summary: Retrieve chat function current version + description: Returns the version of this chat function currently deployed + operationId: retrieve-function-current-version + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - read:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/13515/current-version' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.retrieveFunctionCurrentVersion(13515) + + + /v1/functions/{id}/invocations: + get: + tags: + - functions + summary: List chat function invocations + description: >- + Returns a page of invocations of this chat function. A log of previous + runs of the function + operationId: list-function-invocations + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - read:function_invocation + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1/invocations?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.listFunctionInvocations(1) + /v1/functions/{id}/versions: + get: + tags: + - functions + summary: List chat function versions + description: Returns a page of versions of this chat function + operationId: list-function-versions + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - read:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1/versions?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Functions.listFunctionVersions(1) + + post: + tags: + - functions + summary: Create a chat function version + description: Creates a new version of this chat function + operationId: create-function-version + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChatFunctionVersionResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - create:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/functions/1/versions' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "handlerScript": "const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('\''Hello '\'' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n '\''name'\'': email,\n '\''displayName'\'': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { '\''id'\'': user.data.id });\n });\n\n return logs;\n}" + } + + ' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Functions.createFunctionVersion(13515,{ + "handlerScript": "const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello ' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}" + }) + /v1/imports/channels: + post: + tags: + - imports + summary: Import channels + description: Batch imports channels from a JSON array file + externalDocs: + description: >- + Learn more about importing channels and the channel import JSON array + file format + url: https://chatkitty.com/docs/concepts/imports#importing-channels + operationId: import-channels + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with channels + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/channels' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@channels_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["jane@chatkitty.com","john@chatkitty.com"]}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importChannels(file) + /v1/imports/channels/{id}/members: + post: + tags: + - imports + summary: Import channel members + description: Batch imports channel members from a JSON array file + externalDocs: + description: >- + Learn more about importing channel members and the channel member + import JSON array file format + url: https://chatkitty.com/docs/concepts/imports#importing-channel-members + operationId: import-channel-members + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with user references to be added as members + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/channels/1/members' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@members_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["b2a6da08-88bf-4778-b993-7234e6d8a3ff","c6f75947-af48-4893-a78e-0e0b9bd68580"]}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importChannelMembers(1, [{ + idempotencyKey: "123", + username: "string" + }]) + /v1/imports/messages: + post: + tags: + - imports + summary: Import messages + description: Batch imports messages from a JSON array file + externalDocs: + description: >- + Learn more about importing messages and the message import JSON array + file format + url: https://chatkitty.com/docs/concepts/imports#importing-messages + operationId: import-messages + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with messages + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@messages_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"type":"TEXT","body":"Hello, World!"}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importMessages(file) + /v1/imports/users: + post: + tags: + - imports + summary: Import users + description: Batch imports users from a JSON array file + externalDocs: + description: >- + Learn more about importing users and the user import JSON array file + format + url: https://chatkitty.com/docs/concepts/imports#importing-users + operationId: import-users + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with users + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/users' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@users_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{name:"jane@chatkitty.com",displayName:"JaneDoe",isGuest:false,properties:{favoriteNumber:42}}]'], + "import.json", + { + type: "application/json" + }) + + + await chatkitty.Imports.importUsers(file) + /v1/jobs: + get: + tags: + - jobs + summary: List jobs + description: Returns a page of jobs created for this application + operationId: list-jobs + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: running + in: query + description: Filters for jobs currently running + required: false + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:job + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/jobs' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Jobs.listJobs() + /v1/jobs/{id}: + get: + tags: + - jobs + summary: Retrieve a job + description: Returns a job by ID + operationId: retrieve-job + parameters: + - name: id + in: path + description: Job ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:job + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/jobs/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Jobs.retrieveJob(1) + /v1/messages: + get: + tags: + - messages + summary: List messages + description: Returns a page of messages belonging to this application + operationId: list-messages + parameters: + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - name: username + in: query + description: Filters messages by a sender's username + required: false + schema: + type: string + - name: query + in: query + description: Filters text messages by text contained in the message body + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.listMessages() + delete: + tags: + - messages + summary: Delete messages + description: Deletes all messages belonging to this application + operationId: delete-messages + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - delete:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.deleteMessages() + /v1/messages/{id}: + get: + tags: + - messages + summary: Retrieve a message + description: Returns a message by ID + operationId: retrieve-message + parameters: + - name: id + in: path + description: Message ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages/44902' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.retrieveMessage(44902) + delete: + tags: + - messages + summary: Delete a message + description: Deletes a message by ID + operationId: delete-message + parameters: + - name: id + in: path + description: Message ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - delete:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/messages/67528' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.deleteMessage(67528) + + patch: + tags: + - messages + summary: Update a message + description: Updates a message properties + operationId: update-message + parameters: + - name: id + in: path + description: Message ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - update:message + x-codeSamples: [] + /v1/messages/{id}/read-receipts: + get: + tags: + - messages + summary: List message read receipts + description: Returns a page of read receipts for this message + operationId: list-message-read-receipts + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - read:read_receipt + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages/1/read-receipts?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.listMessageReadReceipts(1) + + /v1/runtimes/nodejs: + get: + tags: + - runtime + summary: Retrieve NodeJS chat runtime + description: Return this application's NodeJS chat runtime + operationId: retrieve-nodejs-runtime + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.retrieveNodejsRuntime() + + /v1/runtimes/nodejs/dependencies: + put: + tags: + - runtime + summary: Update NodeJS chat runtime NPM dependencies + description: Updates the NPM dependencies for this application's NodeJS chat runtime + operationId: update-nodejs-runtime-dependencies + requestBody: + content: + application/vnd.chatkitty+json: + schema: + type: array + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/dependencies' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '[ + { + "name": "firebase", + "version": "^9.8.2" + } + ]' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeDependencies([ + { + "name": "firebase", + "version": "^9.8.2" + } + ]) + /v1/runtimes/nodejs/environment-variables: + put: + tags: + - runtime + summary: Update NodeJS chat runtime environment variables + description: >- + Updates the runtime environment variables of this application's NodeJS + chat runtime + operationId: update-nodejs-runtime-environment-variables + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeEnvironmentVariablesProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/environment-variables' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "CUSTOM_ENV_AWS_REGION": "us-east-1" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeEnvironmentVariables({ + "CUSTOM_ENV_AWS_REGION": "us-east-1" + }) + /v1/runtimes/nodejs/functions: + get: + tags: + - runtime + summary: List NodeJS chat runtime functions + description: Returns a page of functions for this application's NodeJS chat runtime + operationId: list-nodejs-runtime-functions + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - read:function + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/functions?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.listNodejsRuntimeFunctions() + + post: + tags: + - runtime + summary: Create a NodeJS chat runtime function + description: Creates a NodeJS chat function for this runtime + operationId: create-nodejs-runtime-function + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChatFunctionResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - read:function + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/functions' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "user.attempted.start_session", + "name": "User Attempted Start Session" + }' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Runtime.createNodejsRuntimeFunction({ + "type": "user.attempted.start_session", + "name": "User Attempted Start Session" + }) + + /v1/runtimes/nodejs/initialization-script: + put: + tags: + - runtime + summary: Update NodeJS chat runtime initialization script + description: >- + Updates the initialization script for this application's NodeJS chat + runtime + operationId: update-nodejs-runtime-initialization-script + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/initialization-script' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "script": "import firebase from '\''firebase'\'';\r\nimport '\''@firebase/auth'\'';\r\nimport '\''@firebase/firestore'\'';\r\n\r\nconst firebaseConfig = {\r\n apiKey: '\''AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY'\'',\r\n authDomain: '\''chatkitty-example.firebaseapp.com'\'',\r\n databaseURL: '\''https://chatkitty-example.firebaseio.com'\'',\r\n projectId: '\''chatkitty-example'\'',\r\n storageBucket: '\''chatkitty-example.appspot.com'\'',\r\n messagingSenderId: '\''540634290949'\'',\r\n appId: '\''1:540634290949:web:cd754ff7e98087230ff56c'\'',\r\n measurementId: '\''G-BB7Q5DRQK6'\'',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeInitializationScript({ + "script": "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + }) + /v1/threads/{id}: + get: + tags: + - threads + summary: Retrieve a thread + description: Returns a thread by ID + operationId: retrieve-thread + parameters: + - name: id + in: path + description: Reply thread ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/threads/67528' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.retrieveThread(67528) + + /v1/threads/{id}/keystrokes: + post: + tags: + - threads + summary: Send thread keystrokes + description: Sends keystrokes in this thread on behalf of a user + operationId: send-thread-keystrokes + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/CreateDelegatedReplyThreadKeystrokesResource + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + - read:user + - create:keystrokes + x-codeSamples: [] + /v1/threads/{id}/messages: + get: + tags: + - threads + summary: List reply thread messages + description: Returns a page of replies sent in this thread + operationId: list-thread-messages + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/threads/1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.listThreadMessages(1) + post: + tags: + - threads + summary: Send a reply thread message + description: >- + Sends a reply message in this thread as the system or on behalf of a + user + operationId: send-thread-message + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateMessageResource' + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + format: binary + groupTag: + type: string + properties: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + - read:user + - create:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/threads/44902/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "TEXT", + "body": "🌞", + + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.sendThreadMessage(44902, { + "type": "TEXT", + "body": "🌞", + + }) + /v1/user-sessions: + get: + tags: + - user-sessions + summary: List user sessions + description: Returns a page of user sessions belonging to this application + operationId: list-user-sessions + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: state + in: query + description: Filters by state + required: false + schema: + type: string + enum: + - ACTIVE + - ENDED + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user_session + x-codeSamples: [] + /v1/users: + get: + tags: + - users + summary: List users + description: Returns a page of users belonging to this application + operationId: list-users + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: name + in: query + description: Filters by username + required: false + schema: + type: string + - name: properties + in: query + description: Filters by user custom properties + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUsers() + post: + tags: + - users + summary: Create a user + description: Creates a new user + operationId: create-user + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreatePersonChatUserResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/users' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "name": "jane@chatkitty.com", + "displayName": "Jane Doe", + "isGuest": false, + "properties": { + "favoriteNumber": 42 + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.createUser({ + "name": "jane@chatkitty.com", + "displayName": "Jane Doe", + "isGuest": false, + "properties": { + "favoriteNumber": 42 + } + }) + head: + tags: + - users + summary: Check a user exists + description: Checks if a user exists + operationId: check-user-exists + parameters: + - name: name + in: query + description: Username of the user + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Empty object + application/vnd.chatkitty+json: + schema: + type: object + description: Empty object + application/vnd.hal+json: + schema: + type: object + description: Empty object + application/hal+json: + schema: + type: object + description: Empty object + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: User does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'HEAD' \ + 'https://api.chatkitty.com/v1/users?name=Jane%20Doe' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.checkUserExists("Jane Doe") + /v1/users/{id}: + get: + tags: + - users + summary: Retrieve a user + description: Returns a user by ID + operationId: retrieve-user + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.retrieveUser(1) + delete: + tags: + - users + summary: Delete a user + description: Delets a user + operationId: delete-user + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - delete:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.deleteUser(1) + patch: + tags: + - users + summary: Update a user + description: Updates a user + operationId: update-user + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - update:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PATCH' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json+merge-patch' \ + -d '{ + "displayName": "Jane Doe" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.updateUser(1) + /v1/users/{id}/channels: + get: + tags: + - users + summary: List a user's channels + description: Returns a page of channels for this user created or joined + operationId: list-user-channels + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - read:channels + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/channels?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserChannels(1) + /v1/users/{id}/display-picture: + post: + tags: + - users + summary: Update a user's display picture + description: Updates a user's display picture + operationId: update-user-display-picture + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateExternalFileProperties' + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + format: binary + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - update:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/users/1/display-picture' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "url": "https://example.com/files/jane.png", + "name": "jane.png", + "contentType": "image/png", + "size": 32768 + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.updateUserDisplayPicture(1, { + "url": "https://example.com/files/jane.png", + "name": "jane.png", + "contentType": "image/png", + "size": 32768 + }) + /v1/users/{id}/messages: + get: + tags: + - users + summary: List a user's messages + description: Returns a page of messages sent by this user + operationId: list-user-messages + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - name: unread + in: query + description: Filters by returning unread messages + required: false + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - read:channels + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserMessages(1) + /v1/users/{id}/notifications: + get: + tags: + - users + summary: List a user's notifications + description: Returns a page of notifications received by this user + operationId: list-user-notifications + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - read:notifications + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/notifications' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserNotifications(1) + /v1/users/{id}/secrets/{name}: + get: + tags: + - users + summary: Retrieve a user secret + description: Returns a user secret + operationId: retrieve-user-secret + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: name + in: path + description: The secret's name + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SecretResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/SecretResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/SecretResource' + application/hal+json: + schema: + $ref: '#/components/schemas/SecretResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user_secret + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Secret%20Name' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.retrieveUserSecret(1,"Secret Name") + put: + tags: + - users + summary: Set a user secret + description: Sets a user secret's value + operationId: set-user-secret + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: name + in: path + description: The secret's name + required: true + schema: + type: string + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/SecretResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - update:user_secret + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Jane%20Doe' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "secret": "My secret is... well, I'\''d never tell." + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.setUserSecret(1, "Jane Doe", { + "secret": "My secret is... well, I'd never tell." + }) + delete: + tags: + - users + summary: Remove a user secret + description: Removes a user secret's value + operationId: remove-user-secret + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: name + in: path + description: The secret's name + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - delete:user_secret + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Secret%20Name' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.removeUserSecret(1,"Secret Name") +components: + schemas: + AuthenticationError: + required: + - error + - error_description + type: object + properties: + error: + type: string + error_description: + type: string + ApiError: + required: + - error + - message + - timestamp + type: object + properties: + error: + type: string + explanation: + type: string + message: + type: string + properties: + type: object + additionalProperties: + type: object + writeOnly: true + timestamp: + type: string + SecretResource: + type: object + properties: + secret: + type: object + description: Secret value + example: + secret: My secret is... well, I'd never tell. + ChatUserPresenceProperties: + required: + - online + - status + type: object + properties: + online: + type: boolean + description: True if this user has an active user session + status: + type: string + description: The availability status of this user + description: Presence status of this user + ChatUserProperties: + required: + - display_name + - display_picture_url + - id + - isGuest + - name + - presence + - properties + - type + type: object + properties: + type: + type: string + description: Type of user + enum: + - PERSON + - BOT + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + call_status: + type: string + description: Call presence status of this user + enum: + - AVAILABLE + - IN_CALL + display_name: + type: string + description: Human readable name of this user. Shown to other users + display_picture_url: + type: string + description: URL for this user's display picture + isGuest: + type: boolean + description: True if this user was created by a guest user session + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + presence: + $ref: '#/components/schemas/ChatUserPresenceProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + ChatUserResource: + required: + - display_name + - display_picture_url + - id + - isGuest + - name + - presence + - properties + - type + type: object + properties: + type: + type: string + description: Type of user + enum: + - PERSON + - BOT + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + call_status: + type: string + description: Call presence status of this user + enum: + - AVAILABLE + - IN_CALL + display_name: + type: string + description: Human readable name of this user. Shown to other users + display_picture_url: + type: string + description: URL for this user's display picture + isGuest: + type: boolean + description: True if this user was created by a guest user session + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + presence: + $ref: '#/components/schemas/ChatUserPresenceProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/1 + channels: + href: https://api.chatkitty.com/v1/applications/1/users/1/channels + notifications: + href: https://api.chatkitty.com/v1/applications/1/users/1/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/1/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + Link: + type: object + properties: + href: + type: string + hreflang: + type: string + title: + type: string + type: + type: string + deprecation: + type: string + profile: + type: string + name: + type: string + templated: + type: boolean + ChatRuntimeScriptProperties: + required: + - script + type: object + properties: + script: + type: string + description: The JavaScript/TypeScript source of this script + example: + script: "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + ChatRuntimeDependencyProperties: + required: + - default_dependency + - name + - version + type: object + properties: + default_dependency: + type: boolean + description: >- + True if this NPM package is automatically installed by ChatKitty and + available by default in your chat functions + name: + type: string + description: The name of the dependency NPM package + version: + type: string + description: The version of the NPM package + description: The NPM dependencies version of this runtime + example: + name: firebase + version: ^9.8.2 + ChatRuntimeEnvironmentVariablesProperties: + type: object + additionalProperties: + type: string + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this runtime + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this runtime + example: + CUSTOM_ENV_AWS_REGION: us-east-1 + ChatRuntimeProperties: + required: + - dependencies + - environment_variables + - id + - type + - version + type: object + properties: + type: + type: string + description: The type of this runtime. Always NODEJS + enum: + - NODEJS + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + dependencies: + type: array + description: The NPM dependencies version of this runtime + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + environment_variables: + type: object + additionalProperties: + type: string + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + initialization_script: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + version: + type: string + description: The semantic version of this runtime + example: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + ChatRuntimeResource: + required: + - dependencies + - environment_variables + - id + - type + - version + type: object + properties: + type: + type: string + description: The type of this runtime. Always NODEJS + enum: + - NODEJS + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + dependencies: + type: array + description: The NPM dependencies version of this runtime + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + environment_variables: + type: object + additionalProperties: + type: string + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + initialization_script: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + version: + type: string + description: The semantic version of this runtime + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/runtimes/nodejs + dependencies: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/dependencies + initializationScript: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/initialization-script + functions: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationSettingsProperties: + required: + - guest_users + - user_created_channels + type: object + properties: + guest_users: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + user_created_channels: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + ApplicationSettingsResource: + required: + - guest_users + - user_created_channels + type: object + properties: + guest_users: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + user_created_channels: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + features: + guest_users: ENABLED + user_created_channels: DISABLED + CreateExternalFileProperties: + required: + - content_type + - name + - size + - url + type: object + properties: + content_type: + type: string + description: File MIME content type + name: + type: string + description: File name + size: + type: integer + description: File size in bytes + format: int64 + url: + type: string + description: External file URL + example: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreatePersonChatUserResource: + required: + - display_name + - is_guest + - name + type: object + properties: + display_name: + type: string + description: Human readable name of this user. Shown to other users + is_guest: + type: boolean + description: True if this user was created by a guest user session + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + example: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMessageMentionProperties: + required: + - channel + - end_position + - start_position + - tag + - type + type: object + description: A channel mention + allOf: + - $ref: '#/components/schemas/MessageMentionProperties' + - type: object + properties: + channel: + $ref: '#/components/schemas/MessageMentionChannelProperties' + ChatUserMessageMentionProperties: + required: + - end_position + - start_position + - tag + - type + - user + type: object + description: A user mention + allOf: + - $ref: '#/components/schemas/MessageMentionProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + EmojiProperties: + required: + - aliases + - character + - description + - tags + type: object + properties: + aliases: + uniqueItems: true + type: array + description: List of possible aliases for this emoji + items: + type: string + description: List of possible aliases for this emoji + character: + type: string + description: The unicode character of this emoji + description: + type: string + description: Description of this emoji + tags: + uniqueItems: true + type: array + description: Tags used to describe this emoji + items: + type: string + description: Tags used to describe this emoji + description: The emoji these users reacted with + FileChatUserMessageProperties: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + - user + type: object + description: A file message sent by or behalf of a user + allOf: + - $ref: '#/components/schemas/FileMessageProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + - $ref: '#/components/schemas/MessageProperties' + FileChatUserMessageResource: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + - user + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + file: + $ref: '#/components/schemas/FileProperties' + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44904 + type: FILE + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44904 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + FileMessageProperties: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + allOf: + - $ref: '#/components/schemas/MessageProperties' + - type: object + properties: + file: + $ref: '#/components/schemas/FileProperties' + FileProperties: + required: + - content_type + - name + - size + - type + - url + type: object + properties: + type: + type: string + description: The type of this file. Either external or hosted by ChatKitty + enum: + - HOSTED + - EXTERNAL + content_type: + type: string + description: The mime type of this file + name: + type: string + description: The file name + size: + type: integer + description: The size of this file in bytes + format: int64 + url: + type: string + description: The file URL + description: The file data of this message + FileSystemMessageProperties: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + description: >- + A file message sent by this application itself. Used for systems + announcements independent of any user + allOf: + - $ref: '#/components/schemas/FileMessageProperties' + - $ref: '#/components/schemas/MessageProperties' + FileSystemMessageResource: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + file: + $ref: '#/components/schemas/FileProperties' + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44905 + type: SYSTEM_FILE + channelId: 702 + file: + url: https://example.com/files/my-application-file.png + name: file.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44905 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + MessageLinkPreviewImageProperties: + required: + - source + type: object + properties: + source: + type: string + description: The url source of this image + description: Image data of this link preview + MessageLinkPreviewProperties: + required: + - image + - title + - url + type: object + properties: + description: + type: string + description: Description of this link preview + image: + $ref: '#/components/schemas/MessageLinkPreviewImageProperties' + site_name: + type: string + description: The name of the site linked + title: + type: string + description: The title of this link + url: + type: string + description: The URL of the link being previewed + description: Embedded link preview data + MessageLinkProperties: + required: + - end_position + - source + - start_position + type: object + properties: + end_position: + type: integer + description: The ending index of this link within the message + format: int32 + preview: + $ref: '#/components/schemas/MessageLinkPreviewProperties' + source: + type: string + description: The href of the URL this message link represents + start_position: + type: integer + description: The starting index of this link within the message + format: int32 + description: Link previews in this message + MessageMentionChannelProperties: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: >- + Human readable name of this channel shown to users. Present if this + is a group channel + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + Present if this is a group channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: Channel properties embedded in channel mentions + MessageMentionProperties: + required: + - end_position + - start_position + - tag + - type + type: object + properties: + type: + type: string + description: The type of this message mention + enum: + - CHANNEL + - USER + end_position: + type: integer + description: The ending position of this mention reference inside its message + format: int32 + start_position: + type: integer + description: The starting position of this mention reference inside its message + format: int32 + tag: + type: string + description: The literal text referencing the mentioned entity inside the message + description: Mentions in this message + discriminator: + propertyName: type + mapping: + CHANNEL: '#/components/schemas/ChannelMessageMentionProperties' + USER: '#/components/schemas/ChatUserMessageMentionProperties' + MessageProperties: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageProperties' + FILE: '#/components/schemas/FileChatUserMessageProperties' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageProperties' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageProperties' + MessageReactionsSummaryProperties: + required: + - count + - emoji + - users + type: object + properties: + count: + type: integer + description: The number of users that reacted with this emoji + format: int64 + emoji: + $ref: '#/components/schemas/EmojiProperties' + users: + type: array + description: The users that reacted with this emoji + items: + $ref: '#/components/schemas/ChatUserProperties' + description: Reactions to this message + MessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + FILE: '#/components/schemas/FileChatUserMessageResource' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/FileChatUserMessageResource' + - $ref: '#/components/schemas/TextSystemMessageResource' + - $ref: '#/components/schemas/FileSystemMessageResource' + TextChatUserMessageProperties: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + - user + type: object + description: A text message sent by or behalf of a user + allOf: + - $ref: '#/components/schemas/TextMessageProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + - $ref: '#/components/schemas/MessageProperties' + TextChatUserMessageResource: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + - user + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + body: + type: string + description: The text body of this message + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + links: + type: array + description: Link previews in this message + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + type: array + description: Mentions in this message + items: + $ref: '#/components/schemas/MessageMentionProperties' + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextMessageProperties: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + allOf: + - $ref: '#/components/schemas/MessageProperties' + - type: object + properties: + body: + type: string + description: The text body of this message + links: + type: array + description: Link previews in this message + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + type: array + description: Mentions in this message + items: + $ref: '#/components/schemas/MessageMentionProperties' + TextSystemMessageProperties: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + description: >- + A text message sent by this application itself. Used for systems + announcements independent of any user + allOf: + - $ref: '#/components/schemas/TextMessageProperties' + - $ref: '#/components/schemas/MessageProperties' + TextSystemMessageResource: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + body: + type: string + description: The text body of this message + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + links: + type: array + description: Link previews in this message + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + type: array + description: Mentions in this message + items: + $ref: '#/components/schemas/MessageMentionProperties' + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44903 + type: SYSTEM_TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: This is a system announcement. Keep calm and carry on. + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44903 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChatUserIdReference: + required: + - id + type: object + description: Reference to a user by ID + allOf: + - $ref: '#/components/schemas/ChatUserReference' + - type: object + properties: + id: + type: integer + description: 'User ID associated with this user ' + format: int64 + ChatUserReference: + type: object + description: Reference to a user + example: + username: jane@chatkitty.com + ChatUserUsernameReference: + required: + - username + type: object + description: Reference to a user by username + allOf: + - $ref: '#/components/schemas/ChatUserReference' + - type: object + properties: + username: + type: string + description: Username associated with this user + CreateFileMessageResource: + required: + - file + type: object + example: + type: FILE + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + allOf: + - $ref: '#/components/schemas/CreateMessageResource' + - type: object + properties: + file: + $ref: '#/components/schemas/CreateExternalFileProperties' + CreateMessageResource: + required: + - type + type: object + properties: + type: + type: string + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + user: + $ref: '#/components/schemas/ChatUserReference' + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/CreateTextMessageResource' + FILE: '#/components/schemas/CreateFileMessageResource' + CreateTextMessageResource: + required: + - body + type: object + example: + type: TEXT + body: Hello, World! + allOf: + - $ref: '#/components/schemas/CreateMessageResource' + - type: object + properties: + body: + type: string + description: The text body of this message + CreateDelegatedReplyThreadKeystrokesResource: + required: + - keys + - user + type: object + properties: + keys: + type: string + user: + $ref: '#/components/schemas/ChatUserReference' + ReplyThreadKeystrokesResource: + required: + - keys + - username + type: object + properties: + keys: + type: string + username: + type: string + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + CreateChatFunctionResource: + required: + - initialize_asynchronously + - name + - type + type: object + properties: + type: + type: string + description: + type: string + initialize_asynchronously: + type: boolean + name: + type: string + example: + type: user.attempted.start_session + name: User Attempted Start Session + ChatFunctionChatRuntimeProperties: + required: + - id + - type + - version + type: object + properties: + type: + type: string + description: The type of this runtime. Always NODEJS + enum: + - NODEJS + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + version: + type: string + description: The semantic version of this runtime + description: The runtime this function executes on. Always a NodeJS runtime + ChatFunctionResource: + required: + - current_version_number + - enabled + - id + - name + - runtime + - type + type: object + properties: + type: + type: string + description: The type of this function + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + current_version_number: + type: integer + description: >- + The current version number of this function. Incremented every time + a new version is deployed + format: int64 + description: + type: string + description: Optional description of this function + enabled: + type: boolean + description: True if this function is enabled + name: + type: string + description: The name of this function + runtime: + $ref: '#/components/schemas/ChatFunctionChatRuntimeProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationJobResource: + required: + - created_time + - id + - state + - type + type: object + properties: + type: + type: string + description: The type of application job + enum: + - CHANNEL_IMPORT + - CHANNEL_MEMBERS_IMPORT + - MESSAGE_IMPORT + - USER_IMPORT + - MESSAGE_ANALYTICS_EXPORT + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + format: date-time + ended_time: + type: string + format: date-time + file: + type: string + state: + type: string + description: The running state of an application job + enum: + - PENDING + - RUNNING + - FINISHED + - FAILED + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChatFunctionVersionResource: + required: + - handler_script + type: object + properties: + handler_script: + type: string + description: JavaScript/TypeScript code that runs when this function is executed + example: + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + ChatFunctionVersionResource: + required: + - handler_script + - id + - version_number + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + handler_script: + type: string + description: JavaScript/TypeScript code that runs when this function is executed + version_number: + type: integer + description: >- + The version number of this function version. Incremented from the + previous version + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChannelProperties: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelProperties' + PRIVATE: '#/components/schemas/PrivateChannelProperties' + DIRECT: '#/components/schemas/DirectChannelProperties' + ChannelResource: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelResource' + PRIVATE: '#/components/schemas/PrivateChannelResource' + DIRECT: '#/components/schemas/DirectChannelResource' + oneOf: + - $ref: '#/components/schemas/PublicChannelResource' + - $ref: '#/components/schemas/PrivateChannelResource' + - $ref: '#/components/schemas/DirectChannelResource' + DirectChannelProperties: + required: + - created_time + - id + - members + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + members: + type: array + description: >- + The members of this channel. Present if this is a direct channel. + For other channel types, use [**list channel + messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) + items: + $ref: '#/components/schemas/ChatUserProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: A direct channel + DirectChannelResource: + required: + - created_time + - id + - members + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + members: + type: array + description: >- + The members of this channel. Present if this is a direct channel. + For other channel types, use [**list channel + messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) + items: + $ref: '#/components/schemas/ChatUserProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 19354 + type: DIRECT + creator: + id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + members: + - id: 2 + type: PERSON + name: aaron + displayName: aaron + displayPictureUrl: https://api.chatkitty.com/v1/picture/aaron + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + - id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + properties: {} + createdTime: '2021-05-18T20:40:29.472Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/19354 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/19354/events + application: + href: https://api.chatkitty.com/v1/applications/1 + PrivateChannelProperties: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: A private channel + PrivateChannelResource: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 55914 + type: PRIVATE + name: a3e9118e-4c60-4a87-a19f-cb8bf5351462 + displayName: Our private channel + properties: {} + createdTime: '2021-09-28T01:45:20.542Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55914 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + PublicChannelProperties: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: A public channel + PublicChannelResource: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelInviteResource: + required: + - user + type: object + properties: + user: + $ref: '#/components/schemas/ChatUserReference' + example: + user: + username: jane@chatkitty.com + ChannelInviteResource: + required: + - created_time + type: object + properties: + created_time: + type: string + description: The time this invite was created + format: date-time + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelGenericEventResource: + required: + - properties + - type + type: object + properties: + type: + type: string + description: Custom type of this event + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this event + description: Custom data associated with this event + example: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + ChannelGenericEventResource: + required: + - properties + - type + type: object + properties: + type: + type: string + description: Custom type of this event + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this event + description: Custom data associated with this event + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelResource: + required: + - type + type: object + properties: + type: + type: string + creator: + $ref: '#/components/schemas/ChatUserReference' + members: + uniqueItems: true + type: array + description: List of user references of members of this channel + items: + $ref: '#/components/schemas/ChatUserReference' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/CreatePublicChannelResource' + PRIVATE: '#/components/schemas/CreatePrivateChannelResource' + DIRECT: '#/components/schemas/CreateDirectChannelResource' + CreateDirectChannelResource: + required: + - members + type: object + description: Creates a direct channel + example: + type: DIRECT + members: + - username: jane@chatkitty.com + - username: john@chatkitty.com + allOf: + - $ref: '#/components/schemas/CreateChannelResource' + CreateGroupChannelResource: + type: object + allOf: + - $ref: '#/components/schemas/CreateChannelResource' + - type: object + properties: + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + CreatePrivateChannelResource: + type: object + description: Creates a private channel + example: + type: PRIVATE + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/CreateGroupChannelResource' + - $ref: '#/components/schemas/CreateChannelResource' + CreatePublicChannelResource: + type: object + description: Creates a public channel + example: + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/CreateGroupChannelResource' + - $ref: '#/components/schemas/CreateChannelResource' + JsonMergePatch: + type: object + ApplicationSentSystemMessageNotificationData: + required: + - channel_id + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID channel the message was sent. Deprecated: Use the channel + property of this notification + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/SystemMessageResource' + description: Sent when a system message is sent + ChatUserMentionedChannelNotificationData: + required: + - channel_id + - mentioned_channel + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID of the channel the mentioning message was sent. Deprecated: + Use the channel property of this notification + format: int64 + deprecated: true + mentioned_channel: + $ref: '#/components/schemas/ChannelResource' + message: + $ref: '#/components/schemas/TextMessageResource' + description: Sent when a user mentions a channel in a message + ChatUserMentionedChatUserNotificationData: + required: + - channel_id + - mentioned_user + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID of the channel the mentioning message was sent. Deprecated: + Use the channel property of this notification + format: int64 + deprecated: true + mentioned_user: + $ref: '#/components/schemas/ChatUserResource' + message: + $ref: '#/components/schemas/TextMessageResource' + description: Sent when a user mentions a user in a message + ChatUserMessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + description: The message that was sent + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + FILE: '#/components/schemas/FileChatUserMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/FileChatUserMessageResource' + ChatUserRepliedToChatUserMessageNotificationData: + required: + - channel_id + - message + - parent + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID of channel the reply message was sent. Deprecated: Use the + channel property of this notification + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/MessageResource' + parent: + $ref: '#/components/schemas/MessageResource' + description: Sent when a user replies to a message + ChatUserSentChatUserMessageNotificationData: + required: + - channel_id + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID channel the message was sent. Deprecated: Use the channel + property of this notification + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/ChatUserMessageResource' + description: Sent when a user sends a message + CursorPageMetadata: + required: + - size + type: object + properties: + next: + type: string + size: + type: integer + format: int64 + start: + type: string + CursorPagedModelNotificationResource: + required: + - page + type: object + properties: + _embedded: + type: object + properties: + notifications: + type: array + items: + $ref: '#/components/schemas/NotificationResource' + page: + $ref: '#/components/schemas/CursorPageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + notifications: + - id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3255805 + title: System message sent + body: Hello, World! + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85216 + type: SYSTEM_TEXT + channelId: 702 + body: Hello, World! + properties: {} + createdTime: '2022-06-02T16:34:58.871950Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85216 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85216.relay + createdTime: '2022-06-02T16:35:14.296158Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1750641 + title: hey sent a message + body: 🌞 + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T16:45:33.696Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44902.relay + createdTime: '2021-09-16T16:45:48.351Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749995 + title: ho sent a message + body: ok + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T05:13:48.030Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44759.relay + createdTime: '2021-09-16T05:14:00.993Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749225 + title: Nisar sent a message + body: hi + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44559 + type: TEXT + channelId: 702 + user: + id: 39827 + type: PERSON + name: ss@dd.com + displayName: Nisar + displayPictureUrl: https://api.chatkitty.com/v1/picture/Nisar + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-14T20:13:37.357Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44559 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39827 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44559.relay + createdTime: '2021-09-14T20:13:49.998Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=NEXT + page: + size: 5 + NotificationData: + required: + - type + type: object + properties: + type: + type: string + description: >- + The type of notification that was received. This specifies the + schema of the notification data + description: Additional context data of this notification + discriminator: + propertyName: type + mapping: + SYSTEM:SENT:MESSAGE: '#/components/schemas/ApplicationSentSystemMessageNotificationData' + USER:MENTIONED:CHANNEL: '#/components/schemas/ChatUserMentionedChannelNotificationData' + USER:MENTIONED:USER: '#/components/schemas/ChatUserMentionedChatUserNotificationData' + USER:REPLIED_TO:MESSAGE: >- + #/components/schemas/ChatUserRepliedToChatUserMessageNotificationData + USER:SENT:MESSAGE: '#/components/schemas/ChatUserSentChatUserMessageNotificationData' + NotificationResource: + required: + - body + - created_time + - data + - id + - muted + - title + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + body: + type: string + description: The text body of this notification + channel: + $ref: '#/components/schemas/ChannelProperties' + created_time: + type: string + description: Time this notification was created + format: date-time + data: + $ref: '#/components/schemas/NotificationData' + muted: + type: boolean + description: True if this notification should be muted + read_time: + type: string + description: Time this notification was read + format: date-time + title: + type: string + description: The title of this notification + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + SystemMessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + description: The message that was sent + discriminator: + propertyName: type + mapping: + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextSystemMessageResource' + - $ref: '#/components/schemas/FileSystemMessageResource' + TextMessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + description: The message in which the user was mentioned + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/TextSystemMessageResource' + CursorPagedModelMessageResource: + required: + - page + type: object + properties: + _embedded: + type: object + properties: + messages: + type: array + items: + $ref: '#/components/schemas/MessageResource' + page: + $ref: '#/components/schemas/CursorPageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + messages: + - id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44701 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: test + properties: {} + createdTime: '2021-09-16T14:57:55.903Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44701 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44700 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-16T14:57:46.056Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44700 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44760 + type: TEXT + channelId: 1255 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: do? + properties: {} + createdTime: '2021-09-16T09:14:09.585Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44760 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/1255 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T09:13:48.030Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=NEXT + page: + size: 5 + PageMetadata: + type: object + properties: + number: + type: integer + format: int64 + size: + type: integer + format: int64 + total_elements: + type: integer + format: int64 + total_pages: + type: integer + format: int64 + PagedModelChannelResource: + type: object + properties: + _embedded: + type: object + properties: + channels: + type: array + items: + $ref: '#/components/schemas/ChannelResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + channels: + - id: 15252 + type: DIRECT + creator: + id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + members: + - id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + - id: 19452 + type: PERSON + name: aa + displayName: emra + displayPictureUrl: https://api.chatkitty.com/v1/picture/emra + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2021-05-05T00:38:24.888Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/15252 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/events + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 2402 + type: PUBLIC + name: '#test' + displayName: Test Channel + creator: + id: 4153 + type: PERSON + name: test@mail.com + displayName: mridx + displayPictureUrl: https://api.chatkitty.com/v1/picture/mridx + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2020-12-13T21:12:09.195Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/2402 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 856 + type: PUBLIC + name: mkm + displayName: Meme Channel + creator: + id: 1504 + type: PERSON + name: njnj@vghf.jk + displayName: mkm + displayPictureUrl: https://api.chatkitty.com/v1/picture/mkm + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 17654 + type: TEXT + channelId: 856 + user: + id: 15402 + type: PERSON + name: paras@code.co + displayName: Paras + displayPictureUrl: https://api.chatkitty.com/v1/picture/Paras + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: ghk + properties: {} + createdTime: '2021-03-31T06:00:28.680Z' + properties: {} + createdTime: '2020-11-25T07:46:45.775Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/856 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1302 + type: PUBLIC + name: SONU KUMAR + displayName: SONU KUMAR + creator: + id: 2302 + type: PERSON + name: '852122' + displayName: SONU KUMAR + displayPictureUrl: https://api.chatkitty.com/v1/picture/SONU+KUMAR + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 44530 + type: TEXT + channelId: 1302 + user: + id: 39826 + type: PERSON + name: steve@innersync.com + displayName: Steve Williams + displayPictureUrl: https://api.chatkitty.com/v1/picture/Steve+Williams + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: Checking out + properties: {} + createdTime: '2021-09-14T18:02:56.066Z' + properties: {} + createdTime: '2020-12-02T05:10:01.260Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/1302 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + page: + size: 5 + totalElements: 2020 + totalPages: 404 + number: 0 + PagedModelChatUserResource: + type: object + properties: + _embedded: + type: object + properties: + users: + type: array + items: + $ref: '#/components/schemas/ChatUserResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + users: + - id: 14503 + type: PERSON + name: jane@chatkitty.com + displayName: Jane + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/14503 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3004 + type: PERSON + name: '1' + displayName: ChatKittyUser + displayPictureUrl: https://api.chatkitty.com/v1/picture/ChatKittyUser + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3004 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: PERSON + name: 10zxc13@gmail.com + displayName: Jack + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jack + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6152 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3353 + type: PERSON + name: '12121' + displayName: '12121' + displayPictureUrl: https://api.chatkitty.com/v1/picture/12121 + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3353 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6602 + type: PERSON + name: '123' + displayName: '123' + displayPictureUrl: https://api.chatkitty.com/v1/picture/123 + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6602 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/users?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/users?page=114&size=5 + page: + size: 5 + totalElements: 571 + totalPages: 115 + number: 0 + ChatUserSessionProperties: + required: + - created_time + - id + - state + - user + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: Time this session was created + format: date-time + end_time: + type: string + description: Time this session ended. Present if state is ENDED + format: date-time + state: + type: string + description: State of this session. ACTIVE or ENDED + enum: + - ACTIVE + - ENDED + user: + $ref: '#/components/schemas/ChatUserProperties' + user_agent: + type: string + description: User agent used to start this session + ChatUserSessionResource: + required: + - created_time + - id + - state + - user + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: Time this session was created + format: date-time + end_time: + type: string + description: Time this session ended. Present if state is ENDED + format: date-time + state: + type: string + description: State of this session. ACTIVE or ENDED + enum: + - ACTIVE + - ENDED + user: + $ref: '#/components/schemas/ChatUserProperties' + user_agent: + type: string + description: User agent used to start this session + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatUserSessionResource: + type: object + properties: + _embedded: + type: object + properties: + sessions: + type: array + items: + $ref: '#/components/schemas/ChatUserSessionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + sessions: + - id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635641 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:35:08.587Z' + createdTime: '2021-11-12T08:25:33.885Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635669 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:55:36.282Z' + createdTime: '2021-11-12T08:38:54.982Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39806 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635644 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:54:48.309Z' + createdTime: '2021-11-12T08:45:13.682Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635651 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T09:06:40.409Z' + createdTime: '2021-11-12T09:04:53.490Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/user-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/user-sessions?page=328&size=5 + page: + size: 5 + totalElements: 1645 + totalPages: 329 + number: 0 + ReplyThreadResource: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this thread + enum: + - MAIN + - STANDALONE + - MESSAGE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this thread was created + format: date-time + name: + type: string + description: The name of this thread + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this thread + description: Custom data associated with this thread + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 67528 + type: MAIN + properties: {} + createdTime: '2022-02-04T13:19:06.764939Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/threads/67528 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelChatFunctionResource: + type: object + properties: + _embedded: + type: object + properties: + functions: + type: array + items: + $ref: '#/components/schemas/ChatFunctionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + functions: + - id: 202 + type: user.received.notification + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Received Notification + enabled: true + currentVersionNumber: 5 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/202 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4552 + type: user.sent.message + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Sent Message + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/4552 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: user.started.chat_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Started Chat Session + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/6152 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions?page=0&size=5 + page: + size: 5 + totalElements: 4 + totalPages: 1 + number: 0 + MessageReadReceiptResource: + required: + - created_time + - user + type: object + properties: + created_time: + type: string + description: Time the user read this message + format: date-time + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelMessageReadReceiptResource: + type: object + properties: + _embedded: + type: object + properties: + receipts: + type: array + items: + $ref: '#/components/schemas/MessageReadReceiptResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + receipts: + - user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/67026/read-receipts?page=0&size=25 + page: + size: 1 + totalElements: 1 + totalPages: 1 + number: 0 + PagedModelApplicationJobResource: + type: object + properties: + _embedded: + type: object + properties: + jobs: + type: array + items: + $ref: '#/components/schemas/ApplicationJobResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + jobs: + - id: 1 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T04:19:41.255Z' + endedTime: '2021-09-28T04:19:42.230Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/1 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 52 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T05:30:08.902Z' + endedTime: '2021-09-28T05:30:09.571Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 53 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 54 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:35:35.075Z' + endedTime: '2021-09-28T05:36:15.755Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/54 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 102 + type: CHANNEL_MEMBERS_IMPORT + state: FINISHED + createdTime: '2021-09-29T04:52:22.895Z' + endedTime: '2021-09-29T04:52:58.941Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/102 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/jobs?running=false&page=0&size=25 + page: + size: 25 + totalElements: 5 + totalPages: 1 + number: 0 + PagedModelChatFunctionVersionResource: + type: object + properties: + _embedded: + type: object + properties: + versions: + type: array + items: + $ref: '#/components/schemas/ChatFunctionVersionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + versions: + - id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 13461 + versionNumber: 33 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello!'); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13461 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4802 + versionNumber: 32 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return {payload: true}; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4652 + versionNumber: 31 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return true; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4652 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4555 + versionNumber: 30 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return { + status: "SUCCESS" + }; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4555 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=6&size=5 + page: + size: 5 + totalElements: 35 + totalPages: 7 + number: 0 + ChatFunctionInvocationResource: + required: + - args + - created_time + - id + - result + - status + - version_number + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + args: + type: object + additionalProperties: + type: object + description: >- + The function arguments passed into this function for this + invocation + description: The function arguments passed into this function for this invocation + created_time: + type: string + description: The ISO date-time of this invocation when the function was called + format: date-time + result: + type: object + additionalProperties: + type: object + description: The result of this invocation when it completed + description: The result of this invocation when it completed + status: + type: string + description: The running status of this invocation + enum: + - RUNNING + - SUCCEEDED + - FAILED + version_number: + type: integer + description: >- + The version number of this function version when this invocation + occured + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + PagedModelChatFunctionInvocationResource: + type: object + properties: + _embedded: + type: object + properties: + invocations: + type: array + items: + $ref: '#/components/schemas/ChatFunctionInvocationResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + invocations: + - id: 468510 + versionNumber: 34 + args: + authParams: + displayName: Niyati + username: asac@sfas.com + status: SUCCEEDED + result: + payload: + - Hello asac@sfas.com + createdTime: '2021-09-20T06:37:01.766Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468453 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + - 'Hello ' + createdTime: '2021-09-19T09:34:40.190Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468452 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + createdTime: '2021-09-19T09:34:26.890Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467243 + versionNumber: 34 + args: + authParams: + displayName: '' + username: aaron + status: SUCCEEDED + result: + payload: + - Hello aaron + createdTime: '2021-09-17T17:00:31.396Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467162 + versionNumber: 34 + args: + authParams: + displayName: bob + username: fwfe@efw.com + status: SUCCEEDED + result: + payload: + - Hello fwfe@efw.com + createdTime: '2021-09-17T09:15:50.072Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1515&size=5 + page: + size: 5 + totalElements: 7578 + totalPages: 1516 + number: 0 + ChatSessionResource: + required: + - created_time + - id + - session + - state + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: Time this session was created + format: date-time + end_time: + type: string + description: Time this session ended. Present if state is ENDED + format: date-time + session: + $ref: '#/components/schemas/ChatUserSessionProperties' + state: + type: string + description: State of this session. ACTIVE or ENDED + enum: + - ACTIVE + - ENDED + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatSessionResource: + type: object + properties: + _embedded: + type: object + properties: + sessions: + type: array + items: + $ref: '#/components/schemas/ChatSessionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + sessions: + - id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480795 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:35:43.597Z' + createdTime: '2021-09-19T04:33:41.710Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480731 + session: + id: 544216 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:38:45.272Z' + createdTime: '2021-09-19T04:35:45.028Z' + state: ENDED + endTime: '2021-09-19T04:35:55.360Z' + createdTime: '2021-09-19T04:35:45.685Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544216 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481281 + session: + id: 545001 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:12.242Z' + createdTime: '2021-09-20T12:13:09.900Z' + state: ENDED + endTime: '2021-09-20T12:13:12.255Z' + createdTime: '2021-09-20T12:13:10.352Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545001 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481282 + session: + id: 545052 + user: + id: 39807 + type: PERSON + name: 8fadc920-f3e6-49ff-9398-1e58b3dc44dd + displayName: Zaria Bria + displayPictureUrl: https://api.chatkitty.com/v1/picture/Zaria+Bria + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:22.564Z' + createdTime: '2021-09-20T12:13:20.105Z' + state: ENDED + endTime: '2021-09-20T12:13:22.575Z' + createdTime: '2021-09-20T12:13:20.553Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545052 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/chat-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/chat-sessions?page=1037&size=5 + page: + size: 5 + totalElements: 5190 + totalPages: 1038 + number: 0 + PagedModelMessageResource: + type: object + properties: + _embedded: + type: object + properties: + messages: + type: array + items: + $ref: '#/components/schemas/MessageResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + ChannelMembershipResource: + required: + - created_time + type: object + properties: + created_time: + type: string + format: date-time + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + PagedModelChannelMembershipResource: + type: object + properties: + _embedded: + type: object + properties: + memberships: + type: array + items: + $ref: '#/components/schemas/ChannelMembershipResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + memberships: + - createdTime: '2020-12-02T21:52:33.976Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/2 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/2 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-02T22:03:28.742Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/52 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T13:03:17.433Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/352 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/352 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-07T22:28:47.620Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/403 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/403 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T14:34:29.580Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/452 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/452 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=107&size=5 + page: + size: 5 + totalElements: 537 + totalPages: 108 + number: 0 + PagedModelChannelInviteResource: + type: object + properties: + _embedded: + type: object + properties: + invites: + type: array + items: + $ref: '#/components/schemas/ChannelInviteResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + invites: + - createdTime: '2022-06-02T16:51:03.206366Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/67026/invites?page=0&size=25 + page: + size: 25 + totalElements: 1 + totalPages: 1 + number: 0 + ApplicationResource: + required: + - created_time + - id + - key + - properties + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: ISO date-time this application was created + format: date-time + key: + type: string + description: Primary API key assigned to this application + properties: + type: object + additionalProperties: + type: object + description: Custom properties attached to this application + description: Custom properties attached to this application + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + key: 19b458d0-2b50-491c-8f13-65ec12f3978e + properties: {} + created_time: '2020-10-02T20:29:25.316Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1 + Links: + type: object + additionalProperties: + $ref: '#/components/schemas/Link' + MessageImport: + required: + - channel_id + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: ID of the channel this message belongs to + format: int64 + group_tag: + type: string + description: Tag identifying the message group this message belongs to + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + properties: + type: object + additionalProperties: + type: object + description: Map of custom data attached to this message + description: Map of custom data attached to this message + example: + idempotencyKey: unique-external-id + type: TEXT + body: Hello, World! + discriminator: + propertyName: type + mapping: + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageImport' + TEXT: '#/components/schemas/TextChatUserMessageImport' + ChatUserImport: + required: + - display_name + - guest + - name + - properties + type: object + properties: + display_name: + type: string + description: Human readable name of this user. Shown to other users + display_picture: + $ref: '#/components/schemas/FileImport' + guest: + type: boolean + description: True if this user was created by a guest user session + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + example: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMembershipImport: + required: + - username + type: object + properties: + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + username: + type: string + description: Username of the user to be added as a member + example: + username: jane@chatkitty.com + FileImport: + required: + - content_type + - name + - size + - url + type: object + properties: + content_type: + type: string + description: The mime type of this file + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + name: + type: string + description: The file name + size: + type: integer + description: The size of this file in bytes + format: int64 + url: + type: string + description: The file URL + description: External file properties + ChannelImport: + required: + - members + - type + type: object + properties: + type: + type: string + creator: + type: string + description: Username of the user who created this channel + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + members: + type: array + description: List of usernames of members of this channel + items: + type: string + description: List of usernames of members of this channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + example: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelImport' + PRIVATE: '#/components/schemas/PrivateChannelImport' + DIRECT: '#/components/schemas/DirectChannelImport' + TextMessageImport: + required: + - body + - channel_id + type: object + properties: + body: + type: string + description: The text body of this message + channel_id: + type: integer + description: ID of the channel this message belongs to + format: int64 + group_tag: + type: string + description: Tag identifying the message group this message belongs to + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + properties: + type: object + additionalProperties: + type: object + description: Map of custom data attached to this message + description: Map of custom data attached to this message + DirectChannelImport: + required: + - members + type: object + description: Imports a direct channel + example: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + allOf: + - $ref: '#/components/schemas/ChannelImport' + GroupChannelImport: + required: + - members + type: object + properties: + creator: + type: string + description: Username of the user who created this channel + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + members: + type: array + description: List of usernames of members of this channel + items: + type: string + description: List of usernames of members of this channel + name: + type: string + description: >- + The unique name of this channel used to reference the channel. If + absent defaults to a random UUID + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + TextSystemMessageImport: + required: + - body + - channel_id + type: object + description: Imports a system text message + example: + type: TEXT + body: Hello, World! + allOf: + - $ref: '#/components/schemas/MessageImport' + - type: object + properties: + body: + type: string + description: The text body of this message + TextChatUserMessageImport: + required: + - body + - channel_id + - user + type: object + description: Imports a user text message + example: + type: TEXT + body: Hello, World! + user: jane@chatkitty.com + allOf: + - $ref: '#/components/schemas/MessageImport' + - type: object + properties: + body: + type: string + description: The text body of this message + user: + type: string + description: Username of the user who sent this message + PublicChannelImport: + required: + - members + type: object + description: Imports a public channel + example: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/ChannelImport' + - type: object + properties: + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + PrivateChannelImport: + required: + - members + type: object + description: Imports a private channel + example: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/ChannelImport' + - type: object + properties: + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + examples: + SecretResource: + value: + secret: My secret is... well, I'd never tell. + ChatUserResource: + value: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/1 + channels: + href: https://api.chatkitty.com/v1/applications/1/users/1/channels + notifications: + href: https://api.chatkitty.com/v1/applications/1/users/1/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/1/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + Link: + value: + href: https://api.chatkitty.com/v1/applications/1 + ChatRuntimeScriptProperties: + value: + script: "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + ChatRuntimeDependencyProperties: + value: + name: firebase + version: ^9.8.2 + ChatRuntimeEnvironmentVariablesProperties: + value: + CUSTOM_ENV_AWS_REGION: us-east-1 + ChatRuntimeProperties: + value: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + ChatRuntimeResource: + value: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/runtimes/nodejs + dependencies: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/dependencies + initializationScript: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/initialization-script + functions: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationSettingsResource: + value: + features: + guest_users: ENABLED + user_created_channels: DISABLED + CreateExternalFileProperties: + value: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreatePersonChatUserResource: + value: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + FileChatUserMessageResource: + value: + id: 44904 + type: FILE + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44904 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + FileSystemMessageResource: + value: + id: 44905 + type: SYSTEM_FILE + channelId: 702 + file: + url: https://example.com/files/my-application-file.png + name: file.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44905 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + MessageResource: + value: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextChatUserMessageResource: + value: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextSystemMessageResource: + value: + id: 44903 + type: SYSTEM_TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: This is a system announcement. Keep calm and carry on. + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44903 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChatUserReference: + value: + username: jane@chatkitty.com + CreateFileMessageResource: + value: + type: FILE + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreateTextMessageResource: + value: + type: TEXT + body: Hello, World! + CreateChatFunctionResource: + value: + type: user.attempted.start_session + name: User Attempted Start Session + ChatFunctionResource: + value: + id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationJobResource: + value: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChatFunctionVersionResource: + value: + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + ChatFunctionVersionResource: + value: + id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChannelResource: + value: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + DirectChannelResource: + value: + id: 19354 + type: DIRECT + creator: + id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + members: + - id: 2 + type: PERSON + name: aaron + displayName: aaron + displayPictureUrl: https://api.chatkitty.com/v1/picture/aaron + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + - id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + properties: {} + createdTime: '2021-05-18T20:40:29.472Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/19354 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/19354/events + application: + href: https://api.chatkitty.com/v1/applications/1 + PrivateChannelResource: + value: + id: 55914 + type: PRIVATE + name: a3e9118e-4c60-4a87-a19f-cb8bf5351462 + displayName: Our private channel + properties: {} + createdTime: '2021-09-28T01:45:20.542Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55914 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + PublicChannelResource: + value: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelInviteResource: + value: + user: + username: jane@chatkitty.com + ChannelInviteResource: + value: + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelGenericEventResource: + value: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + ChannelGenericEventResource: + value: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateDirectChannelResource: + value: + type: DIRECT + members: + - username: jane@chatkitty.com + - username: john@chatkitty.com + CreatePrivateChannelResource: + value: + type: PRIVATE + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + CreatePublicChannelResource: + value: + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + CursorPagedModelNotificationResource: + value: + _embedded: + notifications: + - id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3255805 + title: System message sent + body: Hello, World! + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85216 + type: SYSTEM_TEXT + channelId: 702 + body: Hello, World! + properties: {} + createdTime: '2022-06-02T16:34:58.871950Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85216 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85216.relay + createdTime: '2022-06-02T16:35:14.296158Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1750641 + title: hey sent a message + body: 🌞 + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T16:45:33.696Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44902.relay + createdTime: '2021-09-16T16:45:48.351Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749995 + title: ho sent a message + body: ok + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T05:13:48.030Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44759.relay + createdTime: '2021-09-16T05:14:00.993Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749225 + title: Nisar sent a message + body: hi + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44559 + type: TEXT + channelId: 702 + user: + id: 39827 + type: PERSON + name: ss@dd.com + displayName: Nisar + displayPictureUrl: https://api.chatkitty.com/v1/picture/Nisar + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-14T20:13:37.357Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44559 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39827 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44559.relay + createdTime: '2021-09-14T20:13:49.998Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=NEXT + page: + size: 5 + NotificationResource: + value: + id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + CursorPagedModelMessageResource: + value: + _embedded: + messages: + - id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44701 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: test + properties: {} + createdTime: '2021-09-16T14:57:55.903Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44701 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44700 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-16T14:57:46.056Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44700 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44760 + type: TEXT + channelId: 1255 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: do? + properties: {} + createdTime: '2021-09-16T09:14:09.585Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44760 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/1255 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T09:13:48.030Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=NEXT + page: + size: 5 + PagedModelChannelResource: + value: + _embedded: + channels: + - id: 15252 + type: DIRECT + creator: + id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + members: + - id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + - id: 19452 + type: PERSON + name: aa + displayName: emra + displayPictureUrl: https://api.chatkitty.com/v1/picture/emra + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2021-05-05T00:38:24.888Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/15252 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/events + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 2402 + type: PUBLIC + name: '#test' + displayName: Test Channel + creator: + id: 4153 + type: PERSON + name: test@mail.com + displayName: mridx + displayPictureUrl: https://api.chatkitty.com/v1/picture/mridx + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2020-12-13T21:12:09.195Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/2402 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 856 + type: PUBLIC + name: mkm + displayName: Meme Channel + creator: + id: 1504 + type: PERSON + name: njnj@vghf.jk + displayName: mkm + displayPictureUrl: https://api.chatkitty.com/v1/picture/mkm + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 17654 + type: TEXT + channelId: 856 + user: + id: 15402 + type: PERSON + name: paras@code.co + displayName: Paras + displayPictureUrl: https://api.chatkitty.com/v1/picture/Paras + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: ghk + properties: {} + createdTime: '2021-03-31T06:00:28.680Z' + properties: {} + createdTime: '2020-11-25T07:46:45.775Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/856 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1302 + type: PUBLIC + name: SONU KUMAR + displayName: SONU KUMAR + creator: + id: 2302 + type: PERSON + name: '852122' + displayName: SONU KUMAR + displayPictureUrl: https://api.chatkitty.com/v1/picture/SONU+KUMAR + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 44530 + type: TEXT + channelId: 1302 + user: + id: 39826 + type: PERSON + name: steve@innersync.com + displayName: Steve Williams + displayPictureUrl: https://api.chatkitty.com/v1/picture/Steve+Williams + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: Checking out + properties: {} + createdTime: '2021-09-14T18:02:56.066Z' + properties: {} + createdTime: '2020-12-02T05:10:01.260Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/1302 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + page: + size: 5 + totalElements: 2020 + totalPages: 404 + number: 0 + PagedModelChatUserResource: + value: + _embedded: + users: + - id: 14503 + type: PERSON + name: jane@chatkitty.com + displayName: Jane + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/14503 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3004 + type: PERSON + name: '1' + displayName: ChatKittyUser + displayPictureUrl: https://api.chatkitty.com/v1/picture/ChatKittyUser + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3004 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: PERSON + name: 10zxc13@gmail.com + displayName: Jack + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jack + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6152 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3353 + type: PERSON + name: '12121' + displayName: '12121' + displayPictureUrl: https://api.chatkitty.com/v1/picture/12121 + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3353 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6602 + type: PERSON + name: '123' + displayName: '123' + displayPictureUrl: https://api.chatkitty.com/v1/picture/123 + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6602 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/users?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/users?page=114&size=5 + page: + size: 5 + totalElements: 571 + totalPages: 115 + number: 0 + ChatUserSessionResource: + value: + id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatUserSessionResource: + value: + _embedded: + sessions: + - id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635641 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:35:08.587Z' + createdTime: '2021-11-12T08:25:33.885Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635669 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:55:36.282Z' + createdTime: '2021-11-12T08:38:54.982Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39806 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635644 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:54:48.309Z' + createdTime: '2021-11-12T08:45:13.682Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635651 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T09:06:40.409Z' + createdTime: '2021-11-12T09:04:53.490Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/user-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/user-sessions?page=328&size=5 + page: + size: 5 + totalElements: 1645 + totalPages: 329 + number: 0 + ReplyThreadResource: + value: + id: 67528 + type: MAIN + properties: {} + createdTime: '2022-02-04T13:19:06.764939Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/threads/67528 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelChatFunctionResource: + value: + _embedded: + functions: + - id: 202 + type: user.received.notification + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Received Notification + enabled: true + currentVersionNumber: 5 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/202 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4552 + type: user.sent.message + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Sent Message + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/4552 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: user.started.chat_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Started Chat Session + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/6152 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions?page=0&size=5 + page: + size: 5 + totalElements: 4 + totalPages: 1 + number: 0 + MessageReadReceiptResource: + value: + user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelMessageReadReceiptResource: + value: + _embedded: + receipts: + - user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/67026/read-receipts?page=0&size=25 + page: + size: 1 + totalElements: 1 + totalPages: 1 + number: 0 + PagedModelApplicationJobResource: + value: + _embedded: + jobs: + - id: 1 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T04:19:41.255Z' + endedTime: '2021-09-28T04:19:42.230Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/1 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 52 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T05:30:08.902Z' + endedTime: '2021-09-28T05:30:09.571Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 53 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 54 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:35:35.075Z' + endedTime: '2021-09-28T05:36:15.755Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/54 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 102 + type: CHANNEL_MEMBERS_IMPORT + state: FINISHED + createdTime: '2021-09-29T04:52:22.895Z' + endedTime: '2021-09-29T04:52:58.941Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/102 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/jobs?running=false&page=0&size=25 + page: + size: 25 + totalElements: 5 + totalPages: 1 + number: 0 + PagedModelChatFunctionVersionResource: + value: + _embedded: + versions: + - id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 13461 + versionNumber: 33 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello!'); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13461 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4802 + versionNumber: 32 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return {payload: true}; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4652 + versionNumber: 31 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return true; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4652 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4555 + versionNumber: 30 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return { + status: "SUCCESS" + }; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4555 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=6&size=5 + page: + size: 5 + totalElements: 35 + totalPages: 7 + number: 0 + PagedModelChatFunctionInvocationResource: + value: + _embedded: + invocations: + - id: 468510 + versionNumber: 34 + args: + authParams: + displayName: Niyati + username: asac@sfas.com + status: SUCCEEDED + result: + payload: + - Hello asac@sfas.com + createdTime: '2021-09-20T06:37:01.766Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468453 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + - 'Hello ' + createdTime: '2021-09-19T09:34:40.190Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468452 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + createdTime: '2021-09-19T09:34:26.890Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467243 + versionNumber: 34 + args: + authParams: + displayName: '' + username: aaron + status: SUCCEEDED + result: + payload: + - Hello aaron + createdTime: '2021-09-17T17:00:31.396Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467162 + versionNumber: 34 + args: + authParams: + displayName: bob + username: fwfe@efw.com + status: SUCCEEDED + result: + payload: + - Hello fwfe@efw.com + createdTime: '2021-09-17T09:15:50.072Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1515&size=5 + page: + size: 5 + totalElements: 7578 + totalPages: 1516 + number: 0 + ChatSessionResource: + value: + id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatSessionResource: + value: + _embedded: + sessions: + - id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480795 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:35:43.597Z' + createdTime: '2021-09-19T04:33:41.710Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480731 + session: + id: 544216 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:38:45.272Z' + createdTime: '2021-09-19T04:35:45.028Z' + state: ENDED + endTime: '2021-09-19T04:35:55.360Z' + createdTime: '2021-09-19T04:35:45.685Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544216 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481281 + session: + id: 545001 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:12.242Z' + createdTime: '2021-09-20T12:13:09.900Z' + state: ENDED + endTime: '2021-09-20T12:13:12.255Z' + createdTime: '2021-09-20T12:13:10.352Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545001 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481282 + session: + id: 545052 + user: + id: 39807 + type: PERSON + name: 8fadc920-f3e6-49ff-9398-1e58b3dc44dd + displayName: Zaria Bria + displayPictureUrl: https://api.chatkitty.com/v1/picture/Zaria+Bria + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:22.564Z' + createdTime: '2021-09-20T12:13:20.105Z' + state: ENDED + endTime: '2021-09-20T12:13:22.575Z' + createdTime: '2021-09-20T12:13:20.553Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545052 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/chat-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/chat-sessions?page=1037&size=5 + page: + size: 5 + totalElements: 5190 + totalPages: 1038 + number: 0 + PagedModelChannelMembershipResource: + value: + _embedded: + memberships: + - createdTime: '2020-12-02T21:52:33.976Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/2 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/2 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-02T22:03:28.742Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/52 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T13:03:17.433Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/352 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/352 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-07T22:28:47.620Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/403 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/403 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T14:34:29.580Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/452 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/452 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=107&size=5 + page: + size: 5 + totalElements: 537 + totalPages: 108 + number: 0 + PagedModelChannelInviteResource: + value: + _embedded: + invites: + - createdTime: '2022-06-02T16:51:03.206366Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/67026/invites?page=0&size=25 + page: + size: 25 + totalElements: 1 + totalPages: 1 + number: 0 + ApplicationResource: + value: + id: 1 + key: 19b458d0-2b50-491c-8f13-65ec12f3978e + properties: {} + created_time: '2020-10-02T20:29:25.316Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1 + Links: + value: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + MessageImport: + value: + idempotencyKey: unique-external-id + type: TEXT + body: Hello, World! + ChatUserImport: + value: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMembershipImport: + value: + username: jane@chatkitty.com + ChannelImport: + value: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + DirectChannelImport: + value: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + TextSystemMessageImport: + value: + type: TEXT + body: Hello, World! + TextChatUserMessageImport: + value: + type: TEXT + body: Hello, World! + user: jane@chatkitty.com + PublicChannelImport: + value: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + PrivateChannelImport: + value: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + securitySchemes: + password_reset_token_authorization: + type: apiKey + name: X-Token + in: header + application_authorization: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://authorization.chatkitty.com/oauth/token + refreshUrl: https://authorization.chatkitty.com/oauth/token + scopes: + create:*: Create application resources + read:*: Read application resources + update:*: Update application resources + delete:*: Delete application resources diff --git a/sdks/db/fixed-specs-cache/baserow-fixed-spec.yaml b/sdks/db/fixed-specs-cache/baserow-fixed-spec.yaml new file mode 100644 index 0000000000..259988179a --- /dev/null +++ b/sdks/db/fixed-specs-cache/baserow-fixed-spec.yaml @@ -0,0 +1,49490 @@ +publishJson: + company: Baserow + serviceName: false + sdkName: baserow-{language}-sdk + clientName: Baserow + metaDescription: >- + Baserow is the most flexible platform for creating databases and + applications—without coding. + + + Get all the power of a database with the familiarity of a spreadsheet. + Organize your data and build applications faster, with greater security and + at any scale. Only Baserow has self-hosting, real-time collaboration, APIs, + plugins, and no vendor lock-in. + + + Create Kanban boards, calendars, forms, integrate with other tools, and more + to provide the best representation of your data. Today, thousands of + customers around the world use our powerful and easy-to-use tools as their + CRM, project management systems, or to power websites. + + + We live by open source principles: our code, product, and community are all + open for everyone to join and contribute to. We're looking for passionate + individuals to join us: baserow.io/jobs + apiStatusUrls: inherit + homepage: baserow.io + developerDocumentation: baserow.io/docs/index + categories: + - database + - no_code +rawSpecString: | + openapi: 3.0.3 + info: + title: Baserow API spec + version: 1.23.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://gitlab.com/baserow/baserow/-/blob/master/LICENSE + paths: + /api/_health/email/: + post: + operationId: email_tester + description: >- + Sends a test email to the provided email address. Useful for testing + Baserow's email configuration as errors are clearly returned. + tags: + - Health + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EmailTesterResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/_health/full/: + get: + operationId: full_health_check + description: >- + Runs a full health check testing as many services and systems as + possible. These health checks can be expensive operations such as + writing files to storage etc. + tags: + - Health + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FullHealthCheck' + description: '' + /api/admin/audit-log/: + get: + operationId: audit_log_list + description: |- + Lists all audit log entries for the given workspace id. + + This is a **enterprise** feature. + parameters: + - in: query + name: action_type + schema: + type: string + description: Filter the audit log entries by action type. + - in: query + name: from_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries from. + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: size + schema: + type: integer + description: Defines how many audit log entries should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `user, workspace, + type, timestamp, ip_address`. For example `sorts=-user,-workspace` + will sort the audit log entries first by descending user and then + ascending workspace. A sortparameter with multiple instances of the + same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + - in: query + name: to_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries to. + - in: query + name: user_id + schema: + type: integer + description: Filter the audit log entries by user id. + - in: query + name: workspace_id + schema: + type: integer + description: >- + Filter the audit log entries by workspace id. This filter works only + for the admin audit log. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLog' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/audit-log/action-types/: + get: + operationId: audit_log_action_types + description: |- + List all distinct action types related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: search + schema: + type: string + description: >- + If provided only action_types with name that match the query will be + returned. + - in: query + name: workspace_id + schema: + type: integer + description: Return action types related to the workspace. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AuditLogActionType' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/audit-log/export/: + post: + operationId: async_audit_log_export + description: |- + Creates a job to export the filtered audit log to a CSV file. + + This is a **enterprise** feature. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Audit log + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_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/admin/audit-log/users/: + get: + operationId: audit_log_users + description: |- + List all users that have performed an action in the audit log. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only users with email that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + - in: query + name: workspace_id + schema: + type: integer + description: Return users belonging to the given workspace_id. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/audit-log/workspaces/: + get: + operationId: audit_log_workspaces + description: |- + List all distinct workspace names related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only workspaces with name that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many workspaces should be returned per page. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/auth-provider/: + get: + operationId: list_auth_providers + description: List all the available authentication providers. + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + post: + operationId: create_auth_provider + description: >- + Creates a new authentication provider. This can be used to enable + authentication with a third party service like Google or Facebook. + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/admin/auth-provider/{auth_provider_id}/: + get: + operationId: get_auth_provider + description: Get an authentication provider. + parameters: + - in: path + name: auth_provider_id + schema: + type: integer + description: The authentication provider id to fetch. + required: true + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_AUTH_PROVIDER_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: '' + patch: + operationId: update_auth_provider + description: >- + Updates a new authentication provider. This can be used to enable + authentication with a third party service like Google or Facebook. + parameters: + - in: path + name: auth_provider_id + schema: + type: integer + description: The authentication provider id to update. + required: true + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_AUTH_PROVIDER_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: '' + delete: + operationId: delete_auth_provider + description: Delete an authentication provider. + parameters: + - in: path + name: auth_provider_id + schema: + type: integer + description: The authentication provider id to delete. + required: true + tags: + - Auth + security: + - JWT: [] + responses: + '204': + description: No response body + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_AUTH_PROVIDER_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/admin/dashboard/: + get: + operationId: admin_dashboard + description: >- + Returns the new and active users for the last 24 hours, 7 days and 30 + days. The `previous_` values are the values of the period before, so for + example `previous_new_users_last_24_hours` are the new users that signed + up from 48 to 24 hours ago. It can be used to calculate an increase or + decrease in the amount of signups. A list of the new and active users + for every day for the last 30 days is also included. + + + This is a **premium** feature. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDashboard' + description: '' + '401': + description: No response body + /api/admin/groups/: + get: + operationId: admin_list_groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [admin_list_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns all groups with detailed information on each group, if the requesting user is staff. + + This is a **premium** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only groups with id or name that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many groups should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, name, + application_count, created_on, row_count, storage_usage`. For + example `sorts=-id,-name` will sort the groups first by descending + id and then ascending name. A sortparameter with multiple instances + of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + tags: + - Admin + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWorkspacesAdminResponse + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/groups/{group_id}/: + delete: + operationId: admin_delete_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [admin_delete_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes the specified group and the applications inside that group, if the requesting user is staff. + + This is a **premium** feature. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The id of the group to delete + required: true + tags: + - Admin + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + /api/admin/users/: + get: + operationId: admin_list_users + description: >- + Returns all users with detailed information on each user, if the + requesting user is staff. + + + This is a **premium** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only users with username that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, is_active, + name, username, date_joined, last_login`. For example + `sorts=-id,-is_active` will sort the users first by descending id + and then ascending is_active. A sortparameter with multiple + instances of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerUserAdminResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + post: + operationId: admin_create_user + description: >- + Creates and returns a new user if the requesting user is staff. This + works even if new signups are disabled. + + + This is a **premium** feature. + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/UserAdminCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/UserAdminCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_FEATURE_NOT_AVAILABLE + - USER_ADMIN_ALREADY_EXISTS + 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/admin/users/{user_id}/: + patch: + operationId: admin_edit_user + description: >- + Updates specified user attributes and returns the updated user if the + requesting user is staff. You cannot update yourself to no longer be an + admin or active. + + + This is a **premium** feature. + parameters: + - in: path + name: user_id + schema: + type: integer + description: The id of the user to edit + required: true + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - USER_ADMIN_CANNOT_DEACTIVATE_SELF + - USER_ADMIN_UNKNOWN_USER + - USER_ADMIN_ALREADY_EXISTS + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + delete: + operationId: admin_delete_user + description: >- + Deletes the specified user, if the requesting user has admin + permissions. You cannot delete yourself. + + + This is a **premium** feature. + parameters: + - in: path + name: user_id + schema: + type: integer + description: The id of the user to delete + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - USER_ADMIN_CANNOT_DELETE_SELF + - USER_ADMIN_UNKNOWN_USER + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + /api/admin/users/impersonate/: + post: + operationId: admin_impersonate_user + description: >- + This endpoint allows staff to impersonate another user by requesting a + JWT token and user object. The requesting user must have staff access in + order to do this. It's not possible to impersonate a superuser or staff. + + + This is a **premium** feature. + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + multipart/form-data: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + description: '' + /api/admin/workspaces/: + get: + operationId: admin_list_workspaces + description: >- + Returns all workspaces with detailed information on each workspace, if + the requesting user is staff. + + + This is a **premium** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only workspaces with id or name that match the query + will be returned. + - in: query + name: size + schema: + type: integer + description: Defines how many workspaces should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, name, + application_count, created_on, row_count, storage_usage`. For + example `sorts=-id,-name` will sort the workspaces first by + descending id and then ascending name. A sortparameter with multiple + instances of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWorkspacesAdminResponse + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/workspaces/{workspace_id}/: + delete: + operationId: admin_delete_workspace + description: >- + Deletes the specified workspace and the applications inside that + workspace, if the requesting user is staff. + + + This is a **premium** feature. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The id of the workspace to delete + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + /api/application/{application_id}/integrations/: + get: + operationId: list_application_integrations + description: >- + Lists all the integrations of the application related to the provided + parameter if the user has access to the related application's workspace. + If the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - in: path + name: application_id + schema: + type: integer + description: >- + Returns only the integrations of the application related to the + provided Id. + required: true + tags: + - Integrations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_APPLICATION_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: '' + post: + operationId: create_application_integration + description: Creates a new integration + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: application_id + schema: + type: integer + description: >- + Creates an integration for the application related to the provided + value. + required: true + tags: + - Integrations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/application/{application_id}/list-user-source-users/: + get: + operationId: list_application_user_source_users + description: List per user sources the first 5 users available. + parameters: + - in: path + name: application_id + schema: + type: integer + description: The application we want the users for. + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UsersPerUserSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_APPLICATION_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/application/{application_id}/user-sources/: + get: + operationId: list_application_user_sources + description: >- + Lists all the user_sources of the application related to the provided + parameter if the user has access to the related application's workspace. + If the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - in: path + name: application_id + schema: + type: integer + description: >- + Returns only the user_sources of the application related to the + provided Id. + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_APPLICATION_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: '' + post: + operationId: create_application_user_source + description: Creates a new user_source + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: application_id + schema: + type: integer + description: >- + Creates an user_source for the application related to the provided + value. + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/applications/: + get: + operationId: list_all_applications + description: >- + Lists all the applications that the authorized user has access to. The + properties that belong to the application can differ per type. An + application always belongs to a single workspace. All the applications + of the workspaces that the user has access to are going to be listed + here. + tags: + - Applications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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 + 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/applications/{application_id}/: + get: + operationId: workspace_get_application + description: >- + Returns the requested application if the authorized user is in the + application's workspace. The properties that belong to the application + can differ per type. + parameters: + - in: path + name: application_id + schema: + type: integer + description: Returns the application related to the provided value. + required: true + tags: + - Applications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_APPLICATION_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: '' + patch: + operationId: update_application + description: >- + Updates the existing application related to the provided + `application_id` param if the authorized user is in the application's + workspace. It is not possible to change the type, but properties like + the name can be changed. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: application_id + schema: + type: integer + description: Updates the application related to the provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_APPLICATION_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: '' + delete: + operationId: delete_application + description: >- + Deletes an application if the authorized user is in the application's + workspace. All the related children are also going to be deleted. For + example in case of a database application all the underlying tables, + fields, views and rows are going to be deleted. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: application_id + schema: + type: integer + description: Deletes the application related to the provided value. + required: true + tags: + - Applications + security: + - JWT: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_APPLICATION_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/applications/{application_id}/duplicate/async/: + post: + operationId: duplicate_application_async + description: >- + Duplicate an application if the authorized user is in the application's + workspace. All the related children are also going to be duplicated. For + example in case of a database application all the underlying tables, + fields, views and rows are going to be duplicated. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: application_id + schema: + type: integer + description: The id of the application to duplicate. + required: true + tags: + - Applications + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateApplicationJobType' + 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_APPLICATION_NOT_IN_GROUP + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_APPLICATION_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/applications/group/{group_id}/: + get: + operationId: group_list_applications + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_list_applications](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the applications of the group related to the provided `group_id` parameter if the authorized user is in that group. If the group is related to a template, then this endpoint will be publicly accessible. The properties that belong to the application can differ per type. An application always belongs to a single group. + parameters: + - in: path + name: group_id + schema: + type: integer + description: >- + Returns only applications that are in the group related to the + provided value. + required: true + tags: + - Applications + security: + - JWT: [] + - {} + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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 + 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_GROUP_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: '' + post: + operationId: group_create_application + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_create_application](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new application based on the provided type. The newly created application is going to be added to the group related to the provided `group_id` parameter. If the authorized user does not belong to the group an error will be returned. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: Creates an application for the group related to the provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + multipart/form-data: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_GROUP_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/applications/group/{group_id}/order/: + post: + operationId: group_order_applications + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_order_applications](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Changes the order of the provided application ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order of the not provided tables will be set to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: >- + Updates the order of the applications in the group related to the + provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderApplications' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderApplications' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderApplications' + required: true + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + 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_GROUP_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/applications/workspace/{workspace_id}/: + get: + operationId: workspace_list_applications + description: >- + Lists all the applications of the workspace related to the provided + `workspace_id` parameter if the authorized user is in that workspace. If + theworkspace is related to a template, then this endpoint will be + publicly accessible. The properties that belong to the application can + differ per type. An application always belongs to a single workspace. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: >- + Returns only applications that are in the workspace related to the + provided value. + required: true + tags: + - Applications + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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 + 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_GROUP_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: '' + post: + operationId: workspace_create_application + description: >- + Creates a new application based on the provided type. The newly created + application is going to be added to the workspace related to the + provided `workspace_id` parameter. If the authorized user does not + belong to the workspace an error will be returned. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: >- + Creates an application for the workspace related to the provided + value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + multipart/form-data: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_GROUP_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/applications/workspace/{workspace_id}/order/: + post: + operationId: workspace_order_applications + description: >- + Changes the order of the provided application ids to the matching + position that the id has in the list. If the authorized user does not + belong to the workspace it will be ignored. The order of the not + provided tables will be set to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: >- + Updates the order of the applications in the workspace related to + the provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderApplications' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderApplications' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderApplications' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + 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_GROUP_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/audit-log/: + get: + operationId: audit_log_list_2 + description: |- + Lists all audit log entries for the given workspace id. + + This is a **enterprise** feature. + parameters: + - in: query + name: action_type + schema: + type: string + description: Filter the audit log entries by action type. + - in: query + name: from_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries from. + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: size + schema: + type: integer + description: Defines how many audit log entries should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `user, workspace, + type, timestamp, ip_address`. For example `sorts=-user,-workspace` + will sort the audit log entries first by descending user and then + ascending workspace. A sortparameter with multiple instances of the + same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + - in: query + name: to_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries to. + - in: query + name: user_id + schema: + type: integer + description: Filter the audit log entries by user id. + - in: query + name: workspace_id + schema: + type: integer + description: >- + Filter the audit log entries by workspace id. This filter works only + for the admin audit log. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLog' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/audit-log/action-types/: + get: + operationId: audit_log_action_types_2 + description: |- + List all distinct action types related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: search + schema: + type: string + description: >- + If provided only action_types with name that match the query will be + returned. + - in: query + name: workspace_id + schema: + type: integer + description: Return action types related to the workspace. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AuditLogActionType' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/audit-log/export/: + post: + operationId: async_audit_log_export_2 + description: |- + Creates a job to export the filtered audit log to a CSV file. + + This is a **enterprise** feature. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Audit log + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_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/audit-log/users/: + get: + operationId: audit_log_users_2 + description: |- + List all users that have performed an action in the audit log. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only users with email that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + - in: query + name: workspace_id + schema: + type: integer + description: Return users belonging to the given workspace_id. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/audit-log/workspaces/: + get: + operationId: audit_log_workspaces_2 + description: |- + List all distinct workspace names related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only workspaces with name that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many workspaces should be returned per page. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/auth-provider/login-options/: + get: + operationId: list_auth_providers_login_options + description: >- + Lists the available login options for the configured authentication + providers. + tags: + - Auth + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + additionalProperties: {} + description: Unspecified response body + description: '' + /api/builder/{builder_id}/domains/: + get: + operationId: get_builder_domains + description: Gets all the domains of a builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: Gets all the domains for the specified builder + required: true + tags: + - Builder domains + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Domain_TypeDomain' + 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 + 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_APPLICATION_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: '' + post: + operationId: create_builder_domain + description: Creates a new domain for an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: >- + Creates a domain for the application builder related tothe provided + value + required: true + tags: + - Builder domains + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + multipart/form-data: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeDomain' + 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_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/builder/{builder_id}/domains/order/: + post: + operationId: order_builder_domains + description: Apply a new order to the domains of a builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: The builder the domain belongs to + required: true + tags: + - Builder domains + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderDomains' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderDomains' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderDomains' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_DOMAIN_NOT_IN_BUILDER + 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_APPLICATION_DOES_NOT_EXIST + - ERROR_DOMAIN_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/builder/{builder_id}/pages/: + post: + operationId: create_builder_page + description: Creates a new page for an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: >- + Creates a page for the application builder related to the provided + value. + required: true + tags: + - Builder pages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreatePage' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreatePage' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreatePage' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Page' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NAME_NOT_UNIQUE + - ERROR_PAGE_PATH_NOT_UNIQUE + - ERROR_PATH_PARAM_NOT_IN_PATH + - ERROR_PATH_PARAM_NOT_DEFINED + 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_APPLICATION_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/builder/{builder_id}/pages/order/: + post: + operationId: order_builder_pages + description: Apply a new order to the pages of a builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: The builder the page belongs to + required: true + tags: + - Builder pages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderPages' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderPages' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderPages' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NOT_IN_BUILDER + 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_APPLICATION_DOES_NOT_EXIST + - ERROR_PAGE_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/builder/{builder_id}/theme/: + patch: + operationId: update_builder_theme + description: Updates the theme properties for the provided id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: >- + Updates the theme for the application builder related to the + provided value. + required: true + tags: + - Builder theme + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CombinedThemeConfigBlocks' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/builder/data-source/{data_source_id}/: + patch: + operationId: update_builder_page_data_source + description: Updates an existing builder data_source. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source + required: true + tags: + - Builder data sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_DATA_SOURCE_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: '' + delete: + operationId: delete_builder_page_data_source + description: Deletes the data_source related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source + required: true + tags: + - Builder data sources + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_DATA_SOURCE_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/builder/data-source/{data_source_id}/dispatch/: + post: + operationId: dispatch_builder_page_data_source + description: >- + Dispatches the service of the related data_source and returns the + result. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source you want to call the dispatch for + required: true + tags: + - Builder data sources + security: + - JWT: [] + - {} + responses: + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_DATA_SOURCE_DOES_NOT_EXIST + - ERROR_DATA_SOURCE_IMPROPERLY_CONFIGURED + - ERROR_IN_DISPATCH_CONTEXT + - ERROR_DATA_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/builder/data_source/{data_source_id}/move/: + patch: + operationId: move_builder_page_data_source + description: >- + Moves the data_source in the page before another data_source or at the + end of the page if no before data_source is given. The data_sources must + belong to the same page. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source to move + required: true + tags: + - Builder data sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_DATA_SOURCE_NOT_IN_SAME_PAGE + 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_DATA_SOURCE_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/builder/domains/{domain_id}/: + patch: + operationId: update_builder_domain + description: Updates an existing domain of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: domain_id + schema: + type: integer + description: The id of the domain + required: true + tags: + - Builder domains + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeDomain' + 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_REQUEST_BODY_VALIDATION + 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_DOMAIN_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: '' + delete: + operationId: delete_builder_domain + description: Deletes an existing domain of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: domain_id + schema: + type: integer + description: The id of the domain + required: true + tags: + - Builder domains + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + 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_DOMAIN_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/builder/domains/{domain_id}/publish/async/: + post: + operationId: publish_builder_domain + description: >- + This endpoint starts an asynchronous job to publish the builder. The job + clones the current version of the given builder and publish it for the + given domain. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: domain_id + schema: + type: integer + description: The builder application id the user wants to publish. + required: true + tags: + - Builder domains + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/builder/domains/ask-public-domain-exists/: + get: + operationId: ask_public_builder_domain_exists + description: >- + This endpoint can be used to check whether a domain exists for SSL + certificate purposes. It's compatible with the Caddy on_demand TLS as + described here: + https://caddyserver.com/docs/json/apps/tls/automation/on_demand/ask/. It + will respond with a 200 status code if it exists or a 404 if it doesn't + exist. + parameters: + - in: query + name: domain + schema: + type: integer + description: The domain name for which + tags: + - Builder domains + security: + - JWT: [] + - {} + responses: + '200': + description: No response body + '404': + description: No response body + /api/builder/domains/published/by_id/{builder_id}/: + get: + operationId: get_public_builder_by_id + description: >- + Returns the public serialized version of the builder and its pages for + the given builder id. + parameters: + - in: path + name: builder_id + schema: + type: integer + description: Returns the builder related to the provided Id and its pages. + required: true + tags: + - Builder public + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicBuilder' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_BUILDER_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/builder/domains/published/by_name/{domain_name}/: + get: + operationId: get_public_builder_by_domain_name + description: >- + Returns the public serialized version of the builder for the given + domain name and its pages . + parameters: + - in: path + name: domain_name + schema: + type: string + description: Returns the builder published for the given domain name. + required: true + tags: + - Builder public + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicBuilder' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_BUILDER_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/builder/domains/published/page/{page_id}/data_sources/: + get: + operationId: list_public_builder_page_data_sources + description: >- + Lists all the data_sources of the page related to the provided parameter + if the builder is public. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the data_sources of the page related to the provided Id + if the related builder is public. + required: true + tags: + - Builder data sources + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Integration_ServicePublicDataSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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/builder/domains/published/page/{page_id}/elements/: + get: + operationId: list_public_builder_page_elements + description: >- + Lists all the elements of the page related to the provided parameter. If + the user is Anonymous, the page must belong to a published builder + instance to being accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: Returns the elements of the page related to the provided Id. + required: true + tags: + - Builder elements + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Element_TypePublicElement' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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/builder/domains/published/page/{page_id}/workflow_actions/: + get: + operationId: list_public_builder_page_workflow_actions + description: >- + Lists all the workflow actions with their public accessible data. Some + configuration might be omitted for security reasons such as passwords or + PII. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the public workflow actions of the page related to the + provided Id. + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: >- + #/components/schemas/public_Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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/builder/element/{element_id}/: + patch: + operationId: update_builder_page_element + description: Updates an existing builder element. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element + required: true + tags: + - Builder elements + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_ELEMENT_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: '' + delete: + operationId: delete_builder_page_element + description: Deletes the element related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element + required: true + tags: + - Builder elements + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_ELEMENT_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/builder/element/{element_id}/duplicate/: + post: + operationId: duplicate_builder_page_element + description: >- + Duplicates an element and all of the elements children and the + associated workflow actions as well. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element to duplicate + required: true + tags: + - Builder elements + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DuplicateElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_ELEMENT_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/builder/element/{element_id}/move/: + patch: + operationId: move_builder_page_element + description: >- + Moves the element in the page before another element or at the end of + the page if no before element is given. The elements must belong to the + same page. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element to move + required: true + tags: + - Builder elements + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_ELEMENT_NOT_IN_SAME_PAGE + 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_ELEMENT_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/builder/page/{page_id}/data-sources/: + get: + operationId: list_builder_page_data_sources + description: >- + Lists all the data_sources of the page related to the provided parameter + if the user has access to the related builder's workspace. If the + workspace is related to a template, then this endpoint will be publicly + accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the data_sources of the page related to the provided + Id. + required: true + tags: + - Builder data sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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: '' + post: + operationId: create_builder_page_data_source + description: Creates a new builder data_source + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: >- + Creates a data_source for the builder page related to the provided + value. + required: true + tags: + - Builder data sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/page/{page_id}/dispatch-data-sources/: + post: + operationId: dispatch_builder_page_data_sources + description: Dispatches the service of the related page data_sources + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The page we want to dispatch the data source for. + required: true + tags: + - Builder data sources + security: + - JWT: [] + - {} + responses: + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_DATA_SOURCE_IMPROPERLY_CONFIGURED + - ERROR_IN_DISPATCH_CONTEXT + - ERROR_DATA_DOES_NOT_EXIST + - ERROR_PAGE_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/builder/page/{page_id}/elements/: + get: + operationId: list_builder_page_elements + description: >- + Lists all the elements of the page related to the provided parameter if + the user has access to the related builder's workspace. If the workspace + is related to a template, then this endpoint will be publicly + accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: Returns only the elements of the page related to the provided Id. + required: true + tags: + - Builder elements + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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: '' + post: + operationId: create_builder_page_element + description: Creates a new builder element + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: >- + Creates an element for the builder page related to the provided + value. + required: true + tags: + - Builder elements + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/page/{page_id}/workflow_actions/: + get: + operationId: list_builder_page_workflow_actions + description: >- + Lists all the workflow actions of the page related to the provided + parameter if the user has access to the related builder's workspace. If + the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the workflow actions of the page related to the + provided Id. + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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: '' + post: + operationId: create_builder_page_workflow_action + description: Creates a new builder workflow action + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: >- + Creates a workflow action for the builder page related to the + provided value. + required: true + tags: + - Builder workflow actions + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + multipart/form-data: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/page/{page_id}/workflow_actions/order/: + post: + operationId: order_builder_workflow_actions + description: Apply a new order to the workflow actions of a page + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The page the workflow actions belong to + required: true + tags: + - Builder workflow actions + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + 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_PAGE_DOES_NOT_EXIST + - ERROR_WORKFLOW_ACTION_DOES_NOT_EXIST + - ERROR_WORKFLOW_ACTION_NOT_IN_ELEMENT + 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/builder/pages/{page_id}/: + patch: + operationId: update_builder_page + description: Updates an existing page of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The id of the page + required: true + tags: + - Builder pages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Page' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NAME_NOT_UNIQUE + - ERROR_PAGE_PATH_NOT_UNIQUE + - ERROR_PATH_PARAM_NOT_IN_PATH + - ERROR_PATH_PARAM_NOT_DEFINED + 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_PAGE_DOES_NOT_EXIST + - ERROR_APPLICATION_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: '' + delete: + operationId: delete_builder_page + description: Deletes an existing page of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The id of the page + required: true + tags: + - Builder pages + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/pages/{page_id}/duplicate/async/: + post: + operationId: duplicate_builder_page_async + description: >- + Start a job to duplicate the page with the provided `page_id` parameter + if the authorized user has access to the builder's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The page to duplicate. + required: true + tags: + - Builder pages + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicatePageJobType' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_PAGE_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/builder/workflow_action/{workflow_action_id}/: + patch: + operationId: update_builder_page_workflow_action + description: Updates an existing builder workflow action. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workflow_action_id + schema: + type: integer + description: The id of the workflow action + required: true + tags: + - Builder workflow actions + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_WORKFLOW_ACTION_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: '' + delete: + operationId: delete_builder_page_workflow_action + description: Deletes the workflow action related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workflow_action_id + schema: + type: integer + description: The id of the workflow action + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_WORKFLOW_ACTION_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/builder/workflow_action/{workflow_action_id}/dispatch/: + post: + operationId: dispatch_builder_page_workflow_action + description: >- + Dispatches the service of the related workflow_action and returns the + result. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workflow_action_id + schema: + type: integer + description: The id of the workflow_action you want to call the dispatch for. + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + - {} + responses: + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_WORKFLOW_ACTION_CANNOT_BE_DISPATCHED + 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/export/{job_id}/: + get: + operationId: get_export_job + description: >- + Returns information such as export progress and state or the url of the + exported file for the specified export job, only if the requesting user + has access. + parameters: + - in: path + name: job_id + schema: + type: integer + description: The job id to lookup information about. + required: true + tags: + - Database table export + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExportJob' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_EXPORT_JOB_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/export/table/{table_id}/: + post: + operationId: export_table + description: >- + Creates and starts a new export job for a table given some exporter + options. Returns an error if the requesting user does not have + permissionsto view the table. + parameters: + - in: path + name: table_id + schema: + type: integer + description: The table id to create and start an export job for + required: true + tags: + - Database table export + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Export' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Export' + multipart/form-data: + schema: + $ref: '#/components/schemas/Export' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExportJob' + 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_REQUEST_BODY_VALIDATION + - ERROR_TABLE_ONLY_EXPORT_UNSUPPORTED + - ERROR_VIEW_UNSUPPORTED_FOR_EXPORT_TYPE + - ERROR_VIEW_NOT_IN_TABLE + 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_TABLE_DOES_NOT_EXIST + - 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/fields/{field_id}/: + get: + operationId: get_database_table_field + description: >- + Returns the existing field if the authorized user has access to the + related database's workspace. Depending on the type different properties + could be returned. + parameters: + - in: path + name: field_id + schema: + type: integer + description: Returns the field related to the provided value. + required: true + tags: + - Database table fields + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FieldField' + 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 + 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_FIELD_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: '' + patch: + operationId: update_database_table_field + description: >- + Updates the existing field if the authorized user has access to the + related database's workspace. The type can also be changed and depending + on that type, different additional properties can optionally be set. If + you change the field type it could happen that the data conversion + fails, in that case the `ERROR_CANNOT_CHANGE_FIELD_TYPE` is returned, + but this rarely happens. If a data value cannot be converted it is set + to `null` so data might go lost.If updated the field causes other fields + to change then the specificinstances of those fields will be included in + the related fields response key. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: field_id + schema: + type: integer + description: Updates the field related to the provided value. + required: true + tags: + - Database table fields + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FieldFieldSerializerWithRelatedFields' + 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_CANNOT_CHANGE_FIELD_TYPE + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_FIELD_WITH_SAME_NAME_ALREADY_EXISTS + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_FIELD_SELF_REFERENCE + - ERROR_FIELD_CIRCULAR_REFERENCE + 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_FIELD_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: '' + delete: + operationId: delete_database_table_field + description: >- + Deletes the existing field if the authorized user has access to the + related database's workspace. Note that all the related data to that + field is also deleted. Primary fields cannot be deleted because their + value represents the row. If deleting the field causes other fields to + change then the specificinstances of those fields will be included in + the related fields response key. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: field_id + schema: + type: integer + description: Deletes the field related to the provided value. + required: true + tags: + - Database table fields + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RelatedFields' + 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_CANNOT_DELETE_PRIMARY_FIELD + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_FIELD_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/fields/{field_id}/duplicate/async/: + post: + operationId: duplicate_table_field + description: >- + Duplicates the table with the provided `table_id` parameter if the + authorized user has access to the database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: field_id + schema: + type: integer + description: The field to duplicate. + required: true + tags: + - Database table fields + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateFieldJobType' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_FIELD_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/fields/{field_id}/unique_row_values/: + get: + operationId: get_database_field_unique_row_values + description: >- + Returns a list of all the unique row values for an existing field, + sorted in order of frequency. + parameters: + - in: path + name: field_id + schema: + type: integer + description: Returns the values related to the provided field. + required: true + - in: query + name: limit + schema: + type: integer + description: Defines how many values should be returned. + - in: query + name: split_comma_separated + schema: + type: boolean + description: >- + Indicates whether the original column values must be splitted by + comma. + tags: + - Database table fields + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UniqueRowValues' + 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 + 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_FIELD_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/fields/table/{table_id}/: + get: + operationId: list_database_table_fields + description: >- + Lists all the fields of the table related to the provided parameter if + the user has access to the related database's workspace. If the + workspace is related to a template, then this endpoint will be publicly + accessible. A table consists of fields and each field can have a + different type. Each type can have different properties. A field is + comparable with a regular table's column. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Returns only the fields of the table related to the provided value. + required: true + tags: + - Database table fields + security: + - JWT: [] + - Database token: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FieldField' + 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 + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_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: '' + post: + operationId: create_database_table_field + description: >- + Creates a new field for the table related to the provided `table_id` + parameter if the authorized user has access to the related database's + workspace. Depending on the type, different properties can optionally be + set.If creating the field causes other fields to change then the + specificinstances of those fields will be included in the related fields + response key. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Creates a new field for the provided table related to the value. + required: true + tags: + - Database table fields + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FieldCreateField' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/FieldCreateField' + multipart/form-data: + schema: + $ref: '#/components/schemas/FieldCreateField' + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FieldFieldSerializerWithRelatedFields' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_FIELD_COUNT_EXCEEDED + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_FIELD_WITH_SAME_NAME_ALREADY_EXISTS + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_FIELD_SELF_REFERENCE + - ERROR_FIELD_CIRCULAR_REFERENCE + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_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/formula/{table_id}/type/: + post: + operationId: type_formula_field + description: >- + Calculates and returns the type of the specified formula value. Does not + change the state of the field in any way. + parameters: + - in: path + name: table_id + schema: + type: integer + description: The table id of the formula field to type. + required: true + tags: + - Database table fields + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TypeFormulaResult' + 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_REQUEST_BODY_VALIDATION + - ERROR_WITH_FORMULA + - ERROR_FIELD_SELF_REFERENCE + 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_TABLE_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/rows/names/: + get: + operationId: list_database_table_row_names + description: >- + Returns the names of the given row of the given tables. The nameof a row + is the primary field value for this row. The result can be usedfor + example, when you want to display the name of a linked row from another + table. + parameters: + - in: query + name: table__{id} + schema: + type: string + description: >- + A list of comma separated row ids to query from the table with id + {id}. For example, if you want the name of row `42` and `43` from + table `28` this parameter will be `table__28=42,43`. You can specify + multiple rows for different tables but every tables must be in the + same database. You need at least read permission on all specified + tables. + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + type: object + properties: + '{table_id}*': + type: object + description: An object containing the row names of table `table_id`. + properties: + '{row_id}*': + type: string + description: >- + the name of the row with id `row_id` from table with + id `table_id`. + 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 + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_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/rows/table/{table_id}/: + get: + operationId: list_database_table_rows + description: >- + Lists all the rows of the table related to the provided parameter if the + user has access to the related database's workspace. The response is + paginated by a page/size style. It is also possible to provide an + optional search query, only rows where the data matches the search query + are going to be returned then. The properties of the returned rows + depends on which fields the table has. For a complete overview of fields + use the **list_database_table_fields** endpoint to list them all. In the + example all field types are listed, but normally the number in + field_{id} key is going to be the id of the field. Or if the GET + parameter `user_field_names` is provided then the keys will be the name + of the field. The value is what the user has provided and the format of + it depends on the fields type. + parameters: + - in: query + name: exclude + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude query parameter. + If you for example provide the following GET parameter + `exclude=field_1,field_2` then the fields with id `1` and id `2` are + going to be excluded from the selection and response. If the + `user_field_names` parameter is provided then instead exclude should + be a comma separated list of the actual field names. For field names + with commas you should surround the name with quotes like so: + `exclude=My Field,"Field With , "`. A backslash can be used to + escape field names which contain double quotes like so: `exclude=My + Field,Field with \"`. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: include + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the include query parameter. + If you for example provide the following GET parameter + `include=field_1,field_2` then only the fields withid `1` and id `2` + are going to be selected and included in the response. If the + `user_field_names` parameter is provided then instead include should + be a comma separated list of the actual field names. For field names + with commas you should surround the name with quotes like so: + `include=My Field,"Field With , "`. A backslash can be used to + escape field names which contain double quotes like so: `include=My + Field,Field with \"`. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). If the `user_field_names` parameter is provided then instead + order_by should be a comma separated list of the actual field names. + For field names with commas you should surround the name with quotes + like so: `order_by=My Field,"Field With , "`. A backslash can be + used to escape field names which contain double quotes like so: + `order_by=My Field,Field with \"`. + - in: query + name: page + schema: + type: integer + description: Defines which page of 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: Defines how many rows should be returned per page. + - in: path + name: table_id + schema: + type: integer + description: Returns the rows of the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + - in: query + name: view_id + schema: + type: integer + description: Includes all the filters and sorts of the provided view. + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_FIELD_DOES_NOT_EXIST + - 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: '' + post: + operationId: create_database_table_row + description: >- + Creates a new row in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** to list them all. None of the fields are + required, if they are not provided the value is going to be `null` or + `false` or some default value is that is set. If you want to add a value + for the field with for example id `10`, the key must be named + `field_10`. Or instead if the `user_field_names` GET param is provided + the key must be the name of the field. Of course multiple fields can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: before + schema: + type: integer + description: >- + If provided then the newly created row will be positioned before the + row with the provided id. + - in: path + name: table_id + schema: + type: integer + description: Creates a row in the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + multipart/form-data: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + - ERROR_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/{row_id}/: + get: + operationId: get_database_table_row + description: >- + Fetches an existing row from the table if the user has access to the + related table's workspace. The properties of the returned row depend on + which fields the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field of the field. Or if the GET parameter + `user_field_names` is provided then the keys will be the name of the + field. The value is what the user has provided and the format of it + depends on the fields type. + parameters: + - in: path + name: row_id + schema: + type: integer + description: Returns the row related the provided value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Returns the row of the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + patch: + operationId: update_database_table_row + description: >- + Updates an existing row in the table if the user has access to the + related table's workspace. The accepted body fields are depending on the + fields that the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. None of the + fields are required, if they are not provided the value is not going to + be updated. When you want to update a value for the field with id `10`, + the key must be named `field_10`. Or if the GET parameter + `user_field_names` is provided the key of the field to update must be + the name of the field. Multiple different fields to update can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: row_id + schema: + type: integer + description: Updates the row related to the value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Updates the row in the table related to the value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + delete: + operationId: delete_database_table_row + description: >- + Deletes an existing row in the table if the user has access to the + table's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: row_id + schema: + type: integer + description: Deletes the row related to the value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Deletes the row in the table related to the value. + required: true + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/{row_id}/adjacent/: + get: + operationId: get_adjacent_database_table_row + description: >- + Fetches the adjacent row to a given row_id in the table with the given + table_id. If the previous flag is set it will return the previous row, + otherwise it will return the next row. You can specifya view_id and it + will apply the filters and sorts of the provided view. + parameters: + - in: query + name: previous + schema: + type: boolean + description: >- + A flag query parameter which if provided returns theprevious row to + the specified row_id. If it's not setit will return the next row. + - in: path + name: row_id + schema: + type: integer + description: Returns the row adjacent the provided value. + required: true + - in: query + name: search + schema: + type: string + description: >- + If provided, the adjacent row will be one that matchesthe search + query. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: table_id + schema: + type: integer + description: Returns the row of the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + - in: query + name: view_id + schema: + type: integer + description: Applies the filters and sorts of the provided view. + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + description: '' + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + - 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/rows/table/{table_id}/{row_id}/history/: + get: + operationId: get_database_table_row_history + description: >- + Fetches the row change history of a given row_id in the table with the + given table_id. The row change history is paginated and can be limited + with the limit and offset query parameters. + parameters: + - in: query + name: limit + schema: + type: integer + description: The maximum number of row change history entries to return. + - in: query + name: offset + schema: + type: integer + description: The offset of the row change history entries to return. + - in: path + name: row_id + schema: + type: integer + description: The id of the row to fetch the change history from. + required: true + - in: path + name: table_id + schema: + type: integer + description: The id of the table to fetch the row change history from. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerRowHistory' + description: '' + '204': + description: No response body + '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 + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/{row_id}/move/: + patch: + operationId: move_database_table_row + description: >- + Moves the row related to given `row_id` parameter to another position. + It is only possible to move the row before another existing row or to + the end. If the `before_id` is provided then the row related to the + `row_id` parameter is moved before that row. If the `before_id` + parameter is not provided, then the row will be moved to the end. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: before_id + schema: + type: integer + description: >- + Moves the row related to the given `row_id` before the row related + to the provided value. If not provided, then the row will be moved + to the end. + - in: path + name: row_id + schema: + type: integer + description: Moves the row related to the value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Moves the row in the table related to the value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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 + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/batch/: + post: + operationId: batch_create_database_table_rows + description: >- + Creates new rows in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** to list them all. None of the fields are + required, if they are not provided the value is going to be `null` or + `false` or some default value is that is set. If you want to add a value + for the field with for example id `10`, the key must be named + `field_10`. Or instead if the `user_field_names` GET param is provided + the key must be the name of the field. Of course multiple fields can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + + **WARNING:** This endpoint doesn't yet work with row created webhooks. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: before + schema: + type: integer + description: >- + If provided then the newly created rows will be positioned before + the row with the provided id. + - in: path + name: table_id + schema: + type: integer + description: Creates the rows in the table. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + required: true + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsResponse' + 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_REQUEST_BODY_VALIDATION + - ERROR_ROW_IDS_NOT_UNIQUE + - ERROR_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + patch: + operationId: batch_update_database_table_rows + description: >- + Updates existing rows in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. None of the + fields are required, if they are not provided the value is not going to + be updated. When you want to update a value for the field with id `10`, + the key must be named `field_10`. Or if the GET parameter + `user_field_names` is provided the key of the field to update must be + the name of the field. Multiple different fields to update can be + provided for each row. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + + **WARNING:** This endpoint doesn't yet work with row updated webhooks. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Updates the rows in the table. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsResponse' + 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_REQUEST_BODY_VALIDATION + - ERROR_ROW_IDS_NOT_UNIQUE + - ERROR_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/batch-delete/: + post: + operationId: batch_delete_database_table_rows + description: >- + Deletes existing rows in the table if the user has access to the table's + workspace. + + **WARNING:** This endpoint doesn't yet work with row deleted webhooks. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Deletes the rows in the table related to the value. + required: true + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + required: true + security: + - JWT: [] + - Database token: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + - ERROR_ROW_IDS_NOT_UNIQUE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/tables/{table_id}/: + get: + operationId: get_database_table + description: >- + Returns the requested table if the authorized user has access to the + related database's workspace. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Returns the table related to the provided value. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + 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 + 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_TABLE_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: '' + patch: + operationId: update_database_table + description: >- + Updates the existing table if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Updates the table related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + 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_REQUEST_BODY_VALIDATION + 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_TABLE_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: '' + delete: + operationId: delete_database_table + description: >- + Deletes the existing table if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Deletes the table related to the provided value. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TABLE_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/tables/{table_id}/duplicate/async/: + post: + operationId: duplicate_database_table_async + description: >- + Start a job to duplicate the table with the provided `table_id` + parameter if the authorized user has access to the database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: The table to duplicate. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateTableJobType' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_TABLE_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/tables/{table_id}/import/async/: + post: + operationId: import_data_database_table_async + description: >- + Import data in the specified table if the authorized user has access to + the related database's workspace. This endpoint is asynchronous and + return the created job to track the progress of the task. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Import data into the table related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableImport' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableImport' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableImport' + required: true + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleFileImportJobSerializerClass' + 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 + 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_TABLE_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/tables/database/{database_id}/: + get: + operationId: list_database_tables + description: >- + Lists all the tables that are in the database related to the + `database_id` parameter if the user has access to the database's + workspace. A table is exactly as the name suggests. It can hold multiple + fields, each having their own type and multiple rows. They can be added + via the **create_database_table_field** and + **create_database_table_row** endpoints. + parameters: + - in: path + name: database_id + schema: + type: integer + description: Returns only tables that are related to the provided value. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Table' + 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 + 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_APPLICATION_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: '' + post: + operationId: create_database_table + description: >- + Creates synchronously a new table for the database related to the + provided `database_id` parameter if the authorized user has access to + the database's workspace. + + + As an alternative you can use the `create_async_database_table` for + better performances and importing bigger files. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: database_id + schema: + type: integer + description: Creates a table for the database related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + 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_REQUEST_BODY_VALIDATION + - ERROR_INVALID_INITIAL_TABLE_DATA + - ERROR_INITIAL_TABLE_DATA_LIMIT_EXCEEDED + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_INITIAL_TABLE_DATA_HAS_DUPLICATE_NAMES + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_APPLICATION_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/tables/database/{database_id}/async/: + post: + operationId: create_database_table_async + description: >- + Creates a job that creates a new table for the database related to the + provided `database_id` parameter if the authorized user has access to + the database's workspace. This endpoint is asynchronous and return the + created job to track the progress of the task. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: database_id + schema: + type: integer + description: Creates a table for the database related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableCreate' + required: true + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleFileImportJobSerializerClass' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_APPLICATION_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/tables/database/{database_id}/order/: + post: + operationId: order_database_tables + description: >- + Changes the order of the provided table ids to the matching position + that the id has in the list. If the authorized user does not belong to + the workspace it will be ignored. The order of the not provided tables + will be set to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: database_id + schema: + type: integer + description: >- + Updates the order of the tables in the database related to the + provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderTables' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderTables' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderTables' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_TABLE_NOT_IN_DATABASE + 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_APPLICATION_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/tokens/: + get: + operationId: list_database_tokens + description: >- + Lists all the database tokens that belong to the authorized user. A + token can be used to create, read, update and delete rows in the tables + of the token's workspace. It only works on the tables if the token has + the correct permissions. The **Database table rows** endpoints can be + used for these operations. + tags: + - Database tokens + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Token' + description: '' + post: + operationId: create_database_token + description: >- + Creates a new database token for a given workspace and for the + authorized user. + tags: + - Database tokens + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + 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_REQUEST_BODY_VALIDATION + 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/tokens/{token_id}/: + get: + operationId: get_database_token + description: >- + Returns the requested database token if it is owned by the authorized + user andif the user has access to the related workspace. + parameters: + - in: path + name: token_id + schema: + type: integer + description: Returns the database token related to the provided value. + required: true + tags: + - Database tokens + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + 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 + 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_TOKEN_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: '' + patch: + operationId: update_database_token + description: >- + Updates the existing database token if it is owned by the authorized + user and ifthe user has access to the related workspace. + parameters: + - in: path + name: token_id + schema: + type: integer + description: Updates the database token related to the provided value. + required: true + tags: + - Database tokens + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + 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_REQUEST_BODY_VALIDATION + - ERROR_DATABASE_DOES_NOT_BELONG_TO_GROUP + - ERROR_TABLE_DOES_NOT_BELONG_TO_GROUP + 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_TOKEN_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: '' + delete: + operationId: delete_database_token + description: >- + Deletes the existing database token if it is owned by the authorized + user and ifthe user has access to the related workspace. + parameters: + - in: path + name: token_id + schema: + type: integer + description: Deletes the database token related to the provided value. + required: true + tags: + - Database tokens + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_TOKEN_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/tokens/check/: + get: + operationId: check_database_token + description: >- + This endpoint check be used to check if the provided personal API token + is valid. If returns a `200` response if so and a `403` is not. This can + be used by integrations like Zapier or n8n to test if a token is valid. + tags: + - Database tokens + security: + - Database token: [] + responses: + '200': + description: No response body + '403': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TOKEN_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/view/{view_id}/premium: + patch: + operationId: premium_view_attributes_update + description: Sets view attributes only available for premium users. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Sets show_logo of this view. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/View' + 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_FEATURE_NOT_AVAILABLE + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_CANNOT_UPDATE_PREMIUM_ATTRIBUTES_ON_TEMPLATE + 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/{slug}/link-row-field-lookup/{field_id}/: + get: + operationId: database_table_public_view_link_row_field_lookup + description: >- + If the view is publicly shared or if an authenticated user has access to + the related workspace, then this endpoint can be used to do a value + lookup of the link row fields that are included in the view. Normally it + is not possible for a not authenticated visitor to fetch the rows of a + table. This endpoint makes it possible to fetch the id and primary field + value of the related table of a link row included in the view. + parameters: + - in: path + name: field_id + schema: + type: integer + description: The field id of the link row field. + required: true + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: slug + schema: + type: string + description: The slug related to the view. + required: true + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerLinkRowValue' + 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: '' + '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 + - ERROR_FIELD_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/{slug}/public/auth/: + post: + operationId: public_view_token_auth + description: >- + Returns a valid never-expiring JWT token for this public shared view if + the password provided matches with the one saved by the view's owner. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug of the grid view to get public information about. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + required: true + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewAuthResponse' + description: '' + '401': + content: + application/json: + schema: + description: The password provided for this view is incorrect + 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/{slug}/public/info/: + get: + operationId: get_public_view_info + description: Returns the required public information to display a single shared view. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug of the view to get public information about. + required: true + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewInfo' + 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 + 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: '' + '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: '' + '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/{view_id}/: + get: + operationId: get_database_table_view + description: >- + Returns the existing view. Depending on the type different + propertiescould be returned. + parameters: + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on the + returned view. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: path + name: view_id + schema: + type: integer + description: Returns the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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 + 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: '' + patch: + operationId: update_database_table_view + description: >- + Updates the existing view. The type cannot be changed. It depends on the + existing type which properties can be changed. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on the + returned view. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: path + name: view_id + schema: + type: integer + description: Updates the view related to the provided value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + 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: '' + delete: + operationId: delete_database_table_view + description: >- + Deletes the existing view. Note that all the related settings of the + view are going to be deleted also. The data stays intact after deleting + the view because this is related to the table and not the view. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Deletes the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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/{view_id}/decorations/: + get: + operationId: list_database_table_view_decorations + description: >- + Lists all decorations of the view related to the provided `view_id` if + the user has access to the related database's workspace. A view can have + multiple decorations. View decorators can be used to decorate rows. This + can, for example, be used to change the border or background color of a + row if it matches certain conditions. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only decoration of the view given to the provided value. + required: true + tags: + - Database table view decorations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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 + 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: '' + post: + operationId: create_database_table_view_decoration + description: >- + Creates a new decoration for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a decoration for the view related to the given value. + required: true + tags: + - Database table view decorations + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + multipart/form-data: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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_REQUEST_BODY_VALIDATION + 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/{view_id}/duplicate/: + post: + operationId: duplicate_database_table_view + description: >- + Duplicates an existing view if the user has access to it. When a view is + duplicated everything is copied except: + + - The name is appended with the copy number. Ex: + `ViewName`->`ViewName(2)` and `View(2)`->`View(3)` + + - If the original view is publicly shared, the new view will not be + shared anymore + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Duplicates the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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 + 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/{view_id}/field-options/: + get: + operationId: get_database_table_view_field_options + description: >- + Responds with the fields options of the provided view if the + authenticated user has access to the related workspace. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Responds with field options related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFieldOptions' + 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_VIEW_DOES_NOT_SUPPORT_FIELD_OPTIONS + 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: '' + patch: + operationId: update_database_table_view_field_options + description: >- + Updates the field options of a view. The field options differ per field + type This could for example be used to update the field width of a + `grid` view if the user changes it. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Updates the field options related to the provided value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFieldOptions' + 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_VIEW_DOES_NOT_SUPPORT_FIELD_OPTIONS + 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/{view_id}/filter-groups/: + post: + operationId: create_database_table_view_filter_group + description: >- + Creates a new filter group for the view related to the provided + `view_id` parameter. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: The ID of the view where create the new filter group. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + 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_REQUEST_BODY_VALIDATION + 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/{view_id}/filters/: + get: + operationId: list_database_table_view_filters + description: >- + Lists all filters of the view related to the provided `view_id`. A view + can have multiple filters. When all the rows are requested for the view + only those that apply to the filters are returned. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only filters of the view related to the provided value. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + 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 + 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: '' + post: + operationId: create_database_table_view_filter + description: >- + Creates a new filter for the view related to the provided `view_id` + parameter. When the rows of a view are requested, for example via the + `list_database_table_grid_view_rows` endpoint, then only the rows that + apply to all the filters are going to be returned. A filter compares the + value of a field to the value of a filter. It depends on the type how + values are going to be compared. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a filter for the view related to the provided value. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewFilter' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_FILTER_NOT_SUPPORTED + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + 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 + - ERROR_VIEW_FILTER_GROUP_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/{view_id}/group_bys/: + get: + operationId: list_database_table_view_groupings + description: >- + Lists all groupings of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple groupings. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only groupings of the view related to the provided value. + required: true + tags: + - Database table view groupings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + 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 + 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: '' + post: + operationId: create_database_table_view_group + description: >- + Creates a new group by for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a group by for the view related to the provided value. + required: true + tags: + - Database table view groupings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + 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_REQUEST_BODY_VALIDATION + - ERROR_VIEW_GROUP_BY_NOT_SUPPORTED + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_GROUP_BY_FIELD_ALREADY_EXISTS + - ERROR_VIEW_GROUP_BY_FIELD_NOT_SUPPORTED + 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/{view_id}/rotate-slug/: + post: + operationId: rotate_database_view_slug + description: >- + Rotates the unique slug of the view by replacing it with a new value. + This would mean that the publicly shared URL of the view will change. + Anyone with the old URL won't be able to access the viewanymore. Only + view types which are sharable can have their slugs rotated. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Rotates the slug of the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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_CANNOT_SHARE_VIEW_TYPE + 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/{view_id}/sortings/: + get: + operationId: list_database_table_view_sortings + description: >- + Lists all sortings of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple sortings. When all the rows are requested they will be in the + desired order. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only sortings of the view related to the provided value. + required: true + tags: + - Database table view sortings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewSort' + 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 + 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: '' + post: + operationId: create_database_table_view_sort + description: >- + Creates a new sort for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. When the rows of a view are requested, for example via the + `list_database_table_grid_view_rows` endpoint, they will be returned in + the respected order defined by all the sortings. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a sort for the view related to the provided value. + required: true + tags: + - Database table view sortings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewSort' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewSort' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewSort' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + 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_REQUEST_BODY_VALIDATION + - ERROR_VIEW_SORT_NOT_SUPPORTED + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_SORT_FIELD_ALREADY_EXISTS + - ERROR_VIEW_SORT_FIELD_NOT_SUPPORTED + 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/{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. + + + This is a **premium** feature. + parameters: + - 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 should be returned by default. This value can + be overwritten per select option. + - 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: + - 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_CALENDAR_VIEW_HAS_NO_DATE_FIELD + 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: '' + '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: '' + '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: 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 should be returned by default. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: + - 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 + 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/decoration/{view_decoration_id}/: + get: + operationId: get_database_table_view_decoration + description: >- + Returns the existing view decoration if the current user has access to + the related database's workspace. + parameters: + - in: path + name: view_decoration_id + schema: + type: integer + description: Returns the view decoration related to the provided id. + required: true + tags: + - Database table view decorations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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 + 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_DECORATION_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: '' + patch: + operationId: update_database_table_view_decoration + description: >- + Updates the existing decoration if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_decoration_id + schema: + type: integer + description: Updates the view decoration related to the provided value. + required: true + tags: + - Database table view decorations + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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 + 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_DECORATION_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: '' + delete: + operationId: delete_database_table_view_decoration + description: >- + Deletes the existing decoration if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_decoration_id + schema: + type: integer + description: Deletes the decoration related to the provided value. + required: true + tags: + - Database table view decorations + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_DECORATION_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/filter-group/{filter_group_id}/: + get: + operationId: get_database_table_view_filter_group + description: >- + Returns the existing view filter group with the given + `view_filter_group_id`. + parameters: + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - in: path + name: view_filter_group_id + schema: + type: integer + description: Teh ID of the view filter group to return. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + 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 + 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_FILTER_GROUP_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: '' + patch: + operationId: update_database_table_view_filter_group + description: Updates the existing filter group with the given `view_filter_group_id`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - in: path + name: view_filter_group_id + schema: + type: integer + description: The ID of the view filter group to update. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + 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_REQUEST_BODY_VALIDATION + 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_FILTER_GROUP_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: '' + delete: + operationId: delete_database_table_view_filter_group + description: Deletes the existing filter group with the given `view_filter_group_id`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - in: path + name: view_filter_group_id + schema: + type: integer + description: The ID of the view filter group to delete. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_FILTER_GROUP_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/filter/{view_filter_id}/: + get: + operationId: get_database_table_view_filter + description: Returns the existing view filter. + parameters: + - in: path + name: view_filter_id + schema: + type: integer + description: The ID of the view filter to return. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + 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 + 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_FILTER_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: '' + patch: + operationId: update_database_table_view_filter + description: Updates the existing filter. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_filter_id + schema: + type: integer + description: The ID of the view filter to update. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_FILTER_NOT_SUPPORTED + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + 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_FILTER_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: '' + delete: + operationId: delete_database_table_view_filter + description: >- + Deletes the existing filter if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_filter_id + schema: + type: integer + description: The ID of the view filter to delete. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_FILTER_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/form/{slug}/submit/: + get: + operationId: get_meta_database_table_form_view + description: >- + Returns the metadata related to the form view if the form is publicly + shared or if the user has access to the related workspace. This data can + be used to construct a form with the right fields. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug related to the form form. + required: true + tags: + - Database table form view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicFormView' + description: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_PUBLICLY_SHARED_FORM + 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_FORM_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: '' + post: + operationId: submit_database_table_form_view + description: >- + Submits the form if the form is publicly shared or if the user has + access to the related workspace. The provided data will be validated + based on the fields that are in the form and the rules per field. If + valid, a new row will be created in the table. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug related to the form. + required: true + tags: + - Database table form view + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FormViewSubmitted' + description: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_PUBLICLY_SHARED_FORM + 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_FORM_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/form/{slug}/upload-file/: + post: + operationId: upload_file_form_view + description: >- + Uploads a file anonymously to Baserow by uploading the file contents + directly. A `file` multipart is expected containing the file contents. + parameters: + - in: path + name: slug + schema: + type: string + description: >- + Submits files only if the view with the provided slughas a public + file field. + required: true + tags: + - Database table form view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + - ERROR_VIEW_HAS_NO_PUBLIC_FILE_FIELD + 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: '' + '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: '' + '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/gallery/{slug}/public/rows/: + get: + operationId: public_list_database_table_gallery_view_rows + description: >+ + Lists the requested rows of the view's table related to the provided + `slug` if the gallery view is public.The response is paginated either by + a limit/offset or page/size style. The style depends on the provided GET + parameters. The properties of the returned rows depends on which fields + the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. The value is what the user has provided + and the format of it depends on the fields type. + + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - in: query + name: exclude_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list allowing the values of `field_options` 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. + - in: query + name: include_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - in: path + name: slug + schema: + type: string + description: Returns only rows that belong to the related view. + required: true + tags: + - Database table gallery view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PublicPaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse + 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_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: '' + '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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GALLERY_DOES_NOT_EXIST + - ERROR_FIELD_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/gallery/{view_id}/: + get: + operationId: list_database_table_gallery_view_rows + description: >- + Lists the requested rows of the view's table related to the provided + `view_id` if the authorized user has access to the database's workspace. + The response is paginated by a limit/offset style. + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - 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 should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: view_id + schema: + type: integer + description: Returns only rows that belong to the related view's table. + required: true + tags: + - Database table gallery view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse + 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_FILTER_FIELD_NOT_FOUND + - ERROR_VIEW_FILTER_TYPE_DOES_NOT_EXIST + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + - ERROR_FILTERS_PARAM_VALIDATION_ERROR + - ERROR_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + 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_GALLERY_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/grid/{slug}/public/rows/: + get: + operationId: public_list_database_table_grid_view_rows + description: >+ + Lists the requested rows of the view's table related to the provided + `slug` if the grid view is public.The response is paginated either by a + limit/offset or page/size style. The style depends on the provided GET + parameters. The properties of the returned rows depends on which fields + the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. The value is what the user has provided + and the format of it depends on the fields type. + + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - in: query + name: exclude_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: group_by + schema: + type: string + description: >- + Optionally the rows can be grouped by provided field ids separated + by comma. By default no groups are applied. This doesn't actually + responds with the rows groups, this is just what's needed for the + Baserow group by feature. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list allowing the values of `field_options` 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. + - in: query + name: include_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - in: path + name: slug + schema: + type: string + description: Returns only rows that belong to the related view. + required: true + tags: + - Database table grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PublicPaginationSerializerWithGridViewFieldOptionsExampleRowResponse + 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_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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: '' + '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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GRID_DOES_NOT_EXIST + - ERROR_FIELD_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/grid/{view_id}/: + get: + operationId: list_database_table_grid_view_rows + description: >- + Lists the requested rows of the view's table related to the provided + `view_id` if the authorized user has access to the database's workspace. + The response is paginated either by a limit/offset or page/size style. + The style depends on the provided GET parameters. The properties of the + returned rows depends on which fields the table has. For a complete + overview of fields use the **list_database_table_fields** endpoint to + list them all. In the example all field types are listed, but normally + the number in field_{id} key is going to be the id of the field. The + value is what the user has provided and the format of it depends on the + fields type. + + + The filters and sortings are automatically applied. To get a full + overview of the applied filters and sortings you can use the + `list_database_table_view_filters` and + `list_database_table_view_sortings` endpoints. + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - in: query + name: exclude_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - 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: include_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - 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 grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWithGridViewFieldOptionsExampleRowResponse + 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_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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_GRID_DOES_NOT_EXIST + - ERROR_FIELD_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: '' + post: + operationId: filter_database_table_grid_view_rows + description: >- + Lists only the rows and fields that match the request. Only the rows + with the ids that are in the `row_ids` list are going to be returned. + Same goes for the fields, only the fields with the ids in the + `field_ids` are going to be returned. This endpoint could be used to + refresh data after changes something. For example in the web frontend + after changing a field type, the data of the related cells will be + refreshed using this endpoint. In the example all field types are + listed, but normally the number in field_{id} key is going to be the id + of the field. The value is what the user has provided and the format of + it depends on the fields type. + parameters: + - 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 grid view + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GridViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/GridViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/GridViewFilter' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + 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_REQUEST_BODY_VALIDATION + 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_GRID_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/grid/{view_id}/aggregation/{field_id}/: + get: + operationId: get_database_table_grid_view_field_aggregation + description: >- + Computes the aggregation of all the values for a specified field from + the selected grid view. You must select the aggregation type by setting + the `type` GET parameter. If filters are configured for the selected + view, the aggregation is calculated only on filtered rows. You need to + have read permissions on the view to request an aggregation. + parameters: + - in: path + name: field_id + schema: + type: integer + description: The field id you want to aggregate + required: true + - in: query + name: include + schema: + type: string + description: >- + if `include` is set to `total`, the total row count will be returned + with the result. + - in: query + name: type + schema: + type: string + description: >- + The aggregation type you want. Available aggregation types: + empty_count, not_empty_count, unique_count, min, max, sum, average, + median, decile, variance, std_dev + - in: path + name: view_id + schema: + type: integer + description: Select the view you want the aggregation for. + required: true + tags: + - Database table grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + value: + anyOf: + - type: number + description: The aggregation result for the specified field. + example: 5 + - type: string + description: The aggregation result for the specified field. + - type: array + items: {} + description: The aggregation result for the specified field. + - type: object + description: The aggregation result for the specified field. + total: + type: integer + description: >- + The total value count. Only returned if `include=total` is + specified as GET parameter. + example: 7 + required: + - value + 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_AGGREGATION_TYPE_DOES_NOT_EXIST + - ERROR_FIELD_NOT_IN_TABLE + 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_FIELD_DOES_NOT_EXIST + - ERROR_GRID_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/grid/{view_id}/aggregations/: + get: + operationId: get_database_table_grid_view_field_aggregations + description: >- + Returns all field aggregations values previously defined for this grid + view. If filters exist for this view, the aggregations are computed only + on filtered rows.You need to have read permissions on the view to + request aggregations. + parameters: + - in: query + name: filter__{field}__{filter} + schema: + type: string + description: >- + The aggregation 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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 aggregated rows must match all the + provided filters. + + `OR`: Indicates that the aggregated 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 for the + aggregation. The filter tree is a nested structure containing the + filters that need to be applied. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - in: query + name: include + schema: + type: string + description: >- + if `include` is set to `total`, the total row count will be returned + with the result. + - in: query + name: search + schema: + type: string + description: If provided the aggregations are calculated only for matching rows. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: view_id + schema: + type: integer + description: Select the view you want the aggregations for. + required: true + tags: + - Database table grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + field_{id}: + anyOf: + - type: number + description: The aggregation result for the field with id {id}. + example: 5 + - type: string + description: The aggregation result for the field with id {id}. + - type: array + items: {} + description: The aggregation result for the field with id {id}. + - type: object + description: The aggregation result for the field with id {id}. + total: + type: integer + description: >- + The total value count. Only returned if `include=total` is + specified as GET parameter. + example: 7 + 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_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_GRID_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/group_by/{view_group_by_id}/: + get: + operationId: get_database_table_view_group + description: >- + Returns the existing view group by if the authorized user has access to + the related database's workspace. + parameters: + - in: path + name: view_group_by_id + schema: + type: integer + description: Returns the view group by related to the provided value. + required: true + tags: + - Database table view groupings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + 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 + 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_GROUP_BY_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: '' + patch: + operationId: update_database_table_view_group + description: >- + Updates the existing group by if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_group_by_id + schema: + type: integer + description: Updates the view group by related to the provided value. + required: true + tags: + - Database table view groupings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + 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_FIELD_NOT_IN_TABLE + - ERROR_VIEW_GROUP_BY_FIELD_ALREADY_EXISTS + 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_GROUP_BY_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: '' + delete: + operationId: delete_database_table_view_group + description: >- + Deletes the existing group by if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_group_by_id + schema: + type: integer + description: Deletes the group by related to the provided value. + required: true + tags: + - Database table view groupings + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_GROUP_BY_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/kanban/{slug}/public/rows/: + get: + operationId: public_list_database_table_kanban_view_rows + description: >- + Responds with serialized rows grouped by the view's single select field + options related to the `slug` if the kanban view is publicly shared. + Additional query parameters can be provided to control the `limit` and + `offset` per select option. + + + 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: limit + schema: + type: integer + description: >- + Defines how many rows should be returned by default. This value can + be overwritten per select option. + - 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: query + name: select_option + schema: + type: string + description: >- + Accepts multiple `select_option` parameters. If not provided, the + rows of all select options will be returned. If one or more + `select_option` parameters are provided, then only the rows of those + will be included in the response. + `?select_option=1&select_option=null` will only include the rows for + both select option with id `1` and `null`. `?select_option=1,10,20` + will only include the rows of select option id `1` with a limit of + `10` and and offset of `20`. + - in: path + name: slug + schema: + type: string + description: Returns only rows that belong to the related view. + required: true + tags: + - Database table kanban view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KanbanViewExampleResponse' + 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_KANBAN_VIEW_HAS_NO_SINGLE_SELECT_FIELD + - ERROR_VIEW_FILTER_TYPE_DOES_NOT_EXIST + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + - ERROR_FILTER_FIELD_NOT_FOUND + - 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: '' + '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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_KANBAN_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/kanban/{view_id}/: + get: + operationId: list_database_table_kanban_view_rows + description: >- + Responds with serialized rows grouped by the view's single select field + options if the user is authenticated and has access to the related + workspace. Additional query parameters can be provided to control the + `limit` and `offset` per select option. + + + 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - 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 should be returned by default. This value can + be overwritten per select option. + - 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: query + name: select_option + schema: + type: string + description: >- + Accepts multiple `select_option` parameters. If not provided, the + rows of all select options will be returned. If one or more + `select_option` parameters are provided, then only the rows of those + will be included in the response. + `?select_option=1&select_option=null` will only include the rows for + both select option with id `1` and `null`. `?select_option=1,10,20` + will only include the rows of select option id `1` with a limit of + `10` and and offset of `20`. + - 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 kanban view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KanbanViewExampleResponse' + 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_KANBAN_VIEW_HAS_NO_SINGLE_SELECT_FIELD + - ERROR_INVALID_SELECT_OPTION_PARAMETER + - 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_KANBAN_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/sort/{view_sort_id}/: + get: + operationId: get_database_table_view_sort + description: >- + Returns the existing view sort if the authorized user has access to the + related database's workspace. + parameters: + - in: path + name: view_sort_id + schema: + type: integer + description: Returns the view sort related to the provided value. + required: true + tags: + - Database table view sortings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + 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 + 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_SORT_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: '' + patch: + operationId: update_database_table_view_sort + description: >- + Updates the existing sort if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_sort_id + schema: + type: integer + description: Updates the view sort related to the provided value. + required: true + tags: + - Database table view sortings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + 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_FIELD_NOT_IN_TABLE + - ERROR_VIEW_SORT_FIELD_ALREADY_EXISTS + 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_SORT_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: '' + delete: + operationId: delete_database_table_view_sort + description: >- + Deletes the existing sort if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_sort_id + schema: + type: integer + description: Deletes the sort related to the provided value. + required: true + tags: + - Database table view sortings + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_SORT_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/table/{table_id}/: + get: + operationId: list_database_table_views + description: >- + Lists all views of the table related to the provided `table_id`. If the + workspace is related to a template, then this endpoint will be publicly + accessible. A table can have multiple views. Each view can display the + data in a different way. For example the `grid` view shows the in a + spreadsheet like way. That type has custom endpoints for data retrieval + and manipulation. In the future other views types like a calendar or + Kanban are going to be added. Each type can have different properties. + parameters: + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on each view + in the response. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: query + name: limit + schema: + type: integer + description: >- + The maximum amount of views that must be returned. This endpoint + doesn't support pagination, but if you for example just need to + fetch the first view, you can do that by setting a limit. There + isn't a limit by default. + - in: path + name: table_id + schema: + type: integer + description: Returns only views of the table related to the provided value. + required: true + - in: query + name: type + schema: + type: string + description: >- + Optionally filter on the view type. If provided, only views of that + type will be returned. + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewView' + 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 + 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_TABLE_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: '' + post: + operationId: create_database_table_view + description: >- + Creates a new view for the table related to the provided `table_id` + parameter. Depending on the type, different properties can optionally be + set. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on each view + in the response. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: path + name: table_id + schema: + type: integer + description: Creates a view for the table related to the provided value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ViewCreateView' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ViewCreateView' + multipart/form-data: + schema: + $ref: '#/components/schemas/ViewCreateView' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + 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_TABLE_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/table/{table_id}/order/: + post: + operationId: order_database_table_views + description: >- + Changes the order of the provided view ids to the matching position that + the id has in the list. The order of the not provided views will be set + to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: >- + Updates the order of the views in the table related to the provided + value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderViews' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderViews' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderViews' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_VIEW_NOT_IN_TABLE + 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_TABLE_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/webhooks/{webhook_id}/: + get: + operationId: get_database_table_webhook + description: >- + Returns the existing webhook if the authorized user has access to the + related database workspace. + parameters: + - in: path + name: webhook_id + schema: + type: integer + description: Returns the webhook related to the provided value. + required: true + tags: + - Database table webhooks + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + 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 + 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_TABLE_WEBHOOK_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: '' + patch: + operationId: update_database_table_webhook + description: >- + Updates the existing view if the authorized user has access to the + related database workspace. + parameters: + - in: path + name: webhook_id + schema: + type: integer + description: Updates the webhook related to the provided value. + required: true + tags: + - Database table webhooks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + 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 + 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_TABLE_WEBHOOK_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: '' + delete: + operationId: delete_database_table_webhook + description: >- + Deletes the existing webhook if the authorized user has access to the + related database's workspace. + parameters: + - in: path + name: webhook_id + schema: + type: integer + description: Deletes the webhook related to the provided value. + required: true + tags: + - Database table webhooks + security: + - JWT: [] + responses: + '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 + 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_TABLE_WEBHOOK_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/webhooks/table/{table_id}/: + get: + operationId: list_database_table_webhooks + description: >- + Lists all webhooks of the table related to the provided `table_id` if + the user has access to the related database workspace. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Returns only webhooks of the table related to this value. + required: true + tags: + - Database table webhooks + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TableWebhook' + 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 + 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_TABLE_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: '' + post: + operationId: create_database_table_webhook + description: >- + Creates a new webhook for the table related to the provided `table_id` + parameter if the authorized user has access to the related database + workspace. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Creates a webhook for the table related to the provided value. + required: true + tags: + - Database table webhooks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + 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_TABLE_WEBHOOK_MAX_LIMIT_EXCEEDED + 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_TABLE_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/webhooks/table/{table_id}/test-call/: + post: + operationId: test_call_database_table_webhook + description: >- + This endpoint triggers a test call based on the provided data if the + user has access to the workspace related to the table. The test call + will be made immediately and a copy of the request, response and status + will be included in the response. + parameters: + - in: path + name: table_id + schema: + type: integer + description: The id of the table that must be tested. + required: true + tags: + - Database table webhooks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookTestCallResponse' + 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 + 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_TABLE_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/groups/: + get: + operationId: list_groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the groups of the authorized user. A group can contain multiple applications like a database. Multiple users can have access to a group. For example each company could have their own group containing databases related to that company. The order of the groups are custom for each user. The order is configurable via the **order_groups** endpoint. + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + post: + operationId: create_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [create_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new group where only the authorized user has access to. No initial data like database applications are added, they have to be created via other endpoints. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Workspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/Workspace' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + /api/groups/{group_id}/: + patch: + operationId: update_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Updates the existing group related to the provided `group_id` parameter if the authorized user belongs to the group. It is not yet possible to add additional users to a group. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: Updates the group related to the provided value. + required: true + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + 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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + delete: + operationId: delete_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes an existing group if the authorized user belongs to the group. All the applications, databases, tables etc that were in the group are going to be deleted also. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: Deletes the group related to the provided value. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_GROUP_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/groups/{group_id}/leave/: + post: + operationId: leave_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [leave_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Makes the authenticated user leave the group related to the provided `group_id` if the user is in that group. If the user is the last admin in the group, they will not be able to leave it. There must always be one admin in the group, otherwise it will be left without control. If that is the case, they must either delete the group or give another member admin permissions first. + parameters: + - in: path + name: group_id + schema: + type: integer + description: Leaves the group related to the value. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_GROUP_USER_IS_LAST_ADMIN + 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_GROUP_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/groups/{group_id}/permissions/: + get: + operationId: group_permissions + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_permissions](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns a the permission data necessary to determine the permissions of a specific user over a specific group. + See `core.handler.CoreHandler.get_permissions()` for more details. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group id we want the permission object for. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PermissionObject' + description: '' + '404': + 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_GROUP_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/groups/invitations/{group_invitation_id}/: + get: + operationId: get_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [get_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns the requested group invitation if the authorized user has admin right to the related group + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Returns the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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: '' + patch: + operationId: update_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Updates the existing group invitation related to the provided `group_invitation_id` param if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Updates the group invitation related to the provided value. + required: true + tags: + - Group invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_INVITATION_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: '' + delete: + operationId: delete_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes a group invitation if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Deletes the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/groups/invitations/{group_invitation_id}/accept/: + post: + operationId: accept_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [accept_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Accepts a group invitation with the given id if the email address of the user matches that of the invitation. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Accepts the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/groups/invitations/{group_invitation_id}/reject/: + post: + operationId: reject_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [reject_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Rejects a group invitation with the given id if the email address of the user matches that of the invitation. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Rejects the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/groups/invitations/group/{group_id}/: + get: + operationId: list_group_invitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspace_invitations](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the group invitations of the group related to the provided `group_id` parameter if the authorized user has admin rights to that group. + parameters: + - in: path + name: group_id + schema: + type: integer + description: >- + Returns only invitations that are in the group related to the + provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + post: + operationId: create_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [create_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new group invitations for an email address if the authorized user has admin rights to the related group. An email containing a sign up link will be send to the user. + parameters: + - in: path + name: group_id + schema: + type: integer + description: >- + Creates a group invitation to the group related to the provided + value. + required: true + tags: + - Group invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_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/groups/invitations/token/{token}/: + get: + operationId: get_group_invitation_by_token + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [get_workspace_invitation_by_token](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Responds with the serialized group invitation if an invitation with the provided token is found. + parameters: + - in: path + name: token + schema: + type: string + description: Returns the group invitation related to the provided token. + required: true + tags: + - Group invitations + security: + - JWT: [] + - {} + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserWorkspaceInvitation' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - BAD_TOKEN_SIGNATURE + 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_GROUP_INVITATION_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/groups/order/: + post: + operationId: order_groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [order_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Changes the order of the provided group ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order will be custom for each user. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + required: true + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + /api/groups/users/{group_user_id}/: + patch: + operationId: update_group_user + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace_user](https://api.baserow.io).** + + Updates the existing group user related to the provided `group_user_id` param if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_user_id + schema: + type: integer + description: Updates the group user related to the provided value. + required: true + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUser' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_USER_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: '' + delete: + operationId: delete_group_user + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace_user](https://api.baserow.io).** + + Deletes a group user if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_user_id + schema: + type: integer + description: Deletes the group user related to the provided value. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/groups/users/group/{group_id}/: + get: + operationId: list_group_users + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspace_users](https://api.baserow.io).** + + Lists all the users that are in a group if the authorized user has admin permissions to the related group. To add a user to a group an invitation must be sent first. + parameters: + - in: path + name: group_id + schema: + type: integer + description: Lists group users related to the provided group value. + required: true + - in: query + name: search + schema: + type: string + description: Search for group users by username, or email. + - in: query + name: sorts + schema: + type: string + description: Sort group users by name, email or role. + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ListWorkspaceUsersWithMemberData' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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_GROUP_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/integration/{integration_id}/: + patch: + operationId: update_application_integration + description: Updates an existing integration. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: integration_id + schema: + type: integer + description: The id of the integration + required: true + tags: + - Integrations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_INTEGRATION_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: '' + delete: + operationId: delete_application_integration + description: Deletes the integration related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: integration_id + schema: + type: integer + description: The id of the integration + required: true + tags: + - Integrations + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_INTEGRATION_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/integration/{integration_id}/move/: + patch: + operationId: move_application_integration + description: >- + Moves the integration in the application before another integration or + at the end of the application if no before integration is given. The + integrations must belong to the same application. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: integration_id + schema: + type: integer + description: The id of the integration to move + required: true + tags: + - Integrations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_INTEGRATION_NOT_IN_SAME_APPLICATION + 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_INTEGRATION_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/jobs/: + get: + operationId: list_job + description: >- + List all existing jobs. Jobs are task executed asynchronously in the + background. You can use the `get_job` endpoint to read the + currentprogress of a the job. + parameters: + - in: query + name: job_ids + schema: + type: string + description: >- + A comma separated list of job ids in the desired order.The jobs will + be returned in the same order as the ids.If a job id is not found it + will be ignored. + - in: query + name: states + schema: + type: string + description: >- + A comma separated list of jobs state to look for. The only possible + values are: `pending`, `finished` and `failed`. It's possible to + exclude a state by prefixing it with a `!`. + tags: + - Jobs + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Job_TypeJob' + description: '' + post: + operationId: create_job + description: >- + Creates a new job. This job runs asynchronously in the background and + execute the task specific to the provided typeparameters. The `get_job` + can be used to get the current state of the job. + tags: + - Jobs + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + multipart/form-data: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeJob' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_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/jobs/{job_id}/: + get: + operationId: get_job + description: >- + Returns the information related to the provided job id. This endpoint + can for example be polled to get the state and progress of the job in + real time. + parameters: + - in: path + name: job_id + schema: + type: integer + description: The job id to lookup information about. + required: true + tags: + - Jobs + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeJob' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_JOB_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/licenses/: + get: + operationId: admin_licenses + description: >- + Lists all the valid licenses that are registered to this instance. A + premium license can be used to unlock the premium features for a fixed + amount of users. An enterprise license can similarly be used to unlock + enterpise features. More information about self hosted licenses can be + found on our pricing page https://baserow.io/pricing. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/License' + description: '' + post: + operationId: admin_register_license + description: >- + Registers a new license. After registering you can assign users to the + license that will be able to use the license's features while the + license is active. If an existing license with the same `license_id` + already exists and the provided license has been issued later than that + one, the existing one will be upgraded. + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RegisterLicense' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RegisterLicense' + multipart/form-data: + schema: + $ref: '#/components/schemas/RegisterLicense' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/License' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_LICENSE + - ERROR_UNSUPPORTED_LICENSE + - ERROR_PREMIUM_LICENSE_INSTANCE_ID_MISMATCH + - ERROR_LICENSE_HAS_EXPIRED + - ERROR_LICENSE_ALREADY_EXISTS + 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/licenses/{id}/: + get: + operationId: admin_get_license + description: >- + Responds with detailed information about the license related to the + provided parameter. + parameters: + - in: path + name: id + schema: + type: integer + description: The internal identifier of the license. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseWithUsers' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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: '' + delete: + operationId: admin_remove_license + description: >- + Removes the existing license related to the provided parameter. If the + license is active, then all the users that are using the license will + lose access to the features granted by that license. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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/licenses/{id}/{user_id}/: + post: + operationId: admin_add_user_to_license + description: >- + Adds the user related to the provided parameter and to the license + related to the parameter. This only happens if there are enough seats + left on the license and if the user is not already on the license. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + - in: path + name: user_id + schema: + type: integer + description: The ID of the user that must be added to the license. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_USER_ALREADY_ON_LICENSE + - ERROR_NO_SEATS_LEFT_IN_LICENSE + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_DOES_NOT_EXIST + - ERROR_USER_NOT_FOUND + 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: '' + delete: + operationId: admin_remove_user_from_license + description: >- + Removes the user related to the provided parameter and to the license + related to the parameter. This only happens if the user is on the + license, otherwise nothing will happen. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + - in: path + name: user_id + schema: + type: integer + description: The ID of the user that must be removed from the license. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_DOES_NOT_EXIST + - ERROR_USER_NOT_FOUND + 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/licenses/{id}/check/: + get: + operationId: admin_license_check + description: >- + This endpoint checks with the authority if the license needs to be + updated. It also checks if the license is operating within its limits + and might take action on that. It could also happen that the license has + been deleted because there is an instance id mismatch or because it's + invalid. In that case a `204` status code is returned. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseWithUsers' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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/licenses/{id}/fill-seats/: + post: + operationId: admin_fill_remaining_seats_of_license + description: >- + Fills the remaining empty seats of the license with the first users that + are found. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/LicenseUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_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/licenses/{id}/lookup-users/: + get: + operationId: admin_license_lookup_users + description: >- + This endpoint can be used to lookup users that can be added to a + license. Users that are already in the license are not returned here. + Optionally a `search` query parameter can be provided to filter the + results. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + - in: query + name: page + schema: + type: integer + description: Defines which page of users should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided, only users where the name or email contains the value + are returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerLicenseUserLookup' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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/licenses/{id}/remove-all-users/: + post: + operationId: admin_remove_all_users_from_license + description: >- + Removes all the users that are on the license. This will empty all the + seats. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_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/notifications/{workspace_id}/: + get: + operationId: list_workspace_notifications + description: >- + Lists the notifications for the given workspace and the current user. + The response is paginated and the limit and offset parameters can be + controlled using the query parameters. + parameters: + - in: query + name: limit + schema: + type: integer + description: Defines how many notifications should be returned. + - in: query + name: offset + schema: + type: integer + description: Defines the offset of the notifications that should be returned. + - in: path + name: workspace_id + schema: + type: integer + description: The workspace id that the notifications belong to. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerNotificationRecipient' + 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 + 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_GROUP_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: '' + delete: + operationId: clear_workspace_notifications + description: Clear all the notifications for the given workspace and user. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace the notifications are in. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_GROUP_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/notifications/{workspace_id}/{notification_id}/: + patch: + operationId: mark_notification_as_read + description: Marks a notification as read. + parameters: + - in: path + name: notification_id + schema: + type: integer + description: The notification id to update. + required: true + - in: path + name: workspace_id + schema: + type: integer + description: The workspace the notification is in. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationRecipient' + 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 + 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_GROUP_DOES_NOT_EXIST + - NOTIFICATION_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/notifications/{workspace_id}/mark-all-as-read/: + post: + operationId: mark_all_workspace_notifications_as_read + description: Mark as read all the notifications for the given workspace and user. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace the notifications are in. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_GROUP_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/role/{group_id}/: + get: + operationId: group_list_role_assignments + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can list the role assignments within a group, optionally filtered down to a specific scope inside of that group. If the scope isn't specified,the group will be considered the scope. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group in which the role assignments are related to. + required: true + - in: query + name: scope_id + schema: + type: integer + description: The id of the scope you are trying to get all roleassignments for. + - in: query + name: scope_type + schema: + type: string + description: The type of scope you are trying to get all roleassignments for. + tags: + - Role assignments + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_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: '' + post: + operationId: group_assign_role + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can assign a role to a subject into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OpenApiRoleAssignment' + description: '' + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/role/{group_id}/batch/: + post: + operationId: group_batch_assign_role + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_batch_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can assign a role to a multiple subjects into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + - ERROR_DUPLICATE_ROLE_ASSIGNMENTS + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/role/{workspace_id}/: + get: + operationId: list_role_assignments + description: >- + You can list the role assignments within a workspace, optionally + filtered downto a specific scope inside of that workspace. If the scope + isn't specified,the workspace will be considered the scope. + parameters: + - in: query + name: scope_id + schema: + type: integer + description: The id of the scope you are trying to get all roleassignments for. + - in: query + name: scope_type + schema: + type: string + description: The type of scope you are trying to get all roleassignments for. + - in: path + name: workspace_id + schema: + type: integer + description: The workspace in which the role assignments are related to. + required: true + tags: + - Role assignments + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_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: '' + post: + operationId: assign_role + description: >- + You can assign a role to a subject into the given workspace for the + given scope with this endpoint. If you want to remove the role you can + omit the role property. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OpenApiRoleAssignment' + description: '' + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/role/{workspace_id}/batch/: + post: + operationId: batch_assign_role + description: >- + You can assign a role to a multiple subjects into the given workspace + for the given scopes with this endpoint. If you want to remove the role + you can omit the role property. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + - ERROR_DUPLICATE_ROLE_ASSIGNMENTS + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/row_comments/{table_id}/{row_id}/: + get: + operationId: get_row_comments + description: |- + Returns all row comments for the specified table and row. + + This is a **premium** feature. + parameters: + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - in: path + name: row_id + schema: + type: integer + description: The row to get row comments for. + required: true + - in: query + name: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - in: path + name: table_id + schema: + type: integer + description: The table the row is in. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerRowComment' + 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 + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + post: + operationId: create_row_comment + description: |- + Creates a comment on the specified row. + + This is a **premium** feature. + parameters: + - in: path + name: row_id + schema: + type: integer + description: The row to create a comment for. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table to find the row to comment on in. + required: true + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RowCommentCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RowCommentCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/RowCommentCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + 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_INVALID_COMMENT_MENTION + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/row_comments/{table_id}/{row_id}/notification-mode/: + put: + operationId: update_row_comment_notification_mode + description: >- + Updates the user's notification preferences for comments made on a + specified table row. + + + This is a **premium** feature. + parameters: + - in: path + name: row_id + schema: + type: integer + description: The row on which to manage the comment subscription. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table id where the row is in. + required: true + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + multipart/form-data: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/row_comments/{table_id}/comment/{comment_id}/: + patch: + operationId: update_row_comment + description: |- + Update a row comment. + + This is a **premium** feature. + parameters: + - in: path + name: comment_id + schema: + type: integer + description: The row comment to update. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table the row is in. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + 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_USER_NOT_COMMENT_AUTHOR + - ERROR_INVALID_COMMENT_MENTION + - ERROR_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_COMMENT_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: '' + delete: + operationId: delete_row_comment + description: |- + Delete a row comment. + + This is a **premium** feature. + parameters: + - in: path + name: comment_id + schema: + type: integer + description: The row comment to delete. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table the row is in. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + 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_USER_NOT_COMMENT_AUTHOR + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_COMMENT_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/settings/: + get: + operationId: get_settings + description: Responds with all the admin configured settings. + tags: + - Settings + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Settings' + description: '' + /api/settings/instance-id/: + get: + operationId: get_instance_id + description: >- + Responds with the self hosted instance id. Only a user with staff + permissions can request it. + tags: + - Settings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/InstanceId' + description: '' + /api/settings/update/: + patch: + operationId: update_settings + description: Updates the admin configured settings if the user has admin permissions. + tags: + - Settings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedSettings' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedSettings' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedSettings' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Settings' + description: '' + /api/snapshots/{snapshot_id}/: + delete: + operationId: delete_snapshot + description: >- + Deletes a snapshot. Deleting a snapshot doesn't affect the application + that the snapshot is made from and doesn't affect any applications that + were created by restoring it. Snapshot deletion is permanent and can't + be undone. + parameters: + - in: path + name: snapshot_id + schema: + type: integer + description: Id of the snapshot to delete. + required: true + tags: + - Snapshots + security: + - JWT: [] + responses: + '204': + description: No response body + '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_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_RESTORED + - ERROR_SNAPSHOT_IS_BEING_DELETED + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + 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_SNAPSHOT_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/snapshots/{snapshot_id}/restore/: + post: + operationId: restore_snapshot + description: >- + Restores a snapshot. When an application snapshot is restored, a new + application will be created in the same workspace that the original + application was placed in with the name of the snapshot and data that + were in the original application at the time the snapshot was taken. The + original application that the snapshot was taken from is unaffected. + Snapshots can be restored multiple times and a number suffix is added to + the new application name in the case of a collision. + parameters: + - in: path + name: snapshot_id + schema: + type: integer + description: Id of the snapshot to restore. + required: true + tags: + - Snapshots + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Job' + 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_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_RESTORED + - ERROR_SNAPSHOT_IS_BEING_DELETED + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + 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_SNAPSHOT_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/snapshots/application/{application_id}/: + get: + operationId: list_snapshots + description: Lists snapshots that were created for a given application. + parameters: + - in: path + name: application_id + schema: + type: integer + description: Application ID for which to list snapshots. + required: true + tags: + - Snapshots + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Snapshot' + 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 + 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_APPLICATION_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: '' + post: + operationId: create_snapshot + description: >- + Creates a new application snapshot. Snapshots represent a state of an + application at a specific point in time and can be restored later, + making it easy to create backups of entire applications. + parameters: + - in: path + name: application_id + schema: + type: integer + description: Application ID for which to list snapshots. + required: true + tags: + - Snapshots + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Snapshot' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Snapshot' + multipart/form-data: + schema: + $ref: '#/components/schemas/Snapshot' + required: true + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/Job' + 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_MAXIMUM_SNAPSHOTS_REACHED + - ERROR_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_CREATED + - ERROR_SNAPSHOT_NAME_NOT_UNIQUE + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + 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_APPLICATION_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/sso/oauth2/callback/{provider_id}/: + get: + operationId: oauth_provider_login_callback + description: >- + Processes callback from OAuth2 provider and logs the user in if + successful. + parameters: + - in: query + name: code + schema: + type: integer + description: The id of the provider for which to process the callback. + - in: path + name: provider_id + schema: + type: integer + description: The id of the provider for which to process the callback. + required: true + tags: + - Auth + responses: + '302': + description: No response body + /api/sso/oauth2/login/{provider_id}/: + get: + operationId: oauth_provider_login_redirect + description: >- + Redirects to the OAuth2 provider's authentication URL based on the + provided auth provider's id. + parameters: + - in: query + name: group_invitation_token + schema: + type: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future. + deprecated: true + - in: query + name: original + schema: + type: integer + description: The relative part of URL that the user wanted to access. + - in: path + name: provider_id + schema: + type: integer + description: The id of the provider for redirect. + required: true + - in: query + name: workspace_invitation_token + schema: + type: string + description: The invitation token sent to the user to join a specific workspace. + tags: + - Auth + responses: + '302': + description: No response body + /api/sso/saml/acs/: + post: + operationId: auth_provider_saml_acs_url + description: >- + Complete the SAML authentication flow by validating the SAML response. + Sign in the user if already exists in Baserow or create a new one + otherwise. Once authenticated, the user will be redirected to the + original URL they were trying to access. If the response is invalid, the + user will be redirected to an error page with a specific error + message.It accepts the language code and the workspace invitation token + as query parameters if provided. + tags: + - Auth + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SAMLResponse' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SAMLResponse' + multipart/form-data: + schema: + $ref: '#/components/schemas/SAMLResponse' + required: true + responses: + '302': + description: No response body + /api/sso/saml/login/: + get: + operationId: auth_provider_saml_sp_login + description: >- + This is the endpoint that is called when the user wants to initiate a + SSO SAML login from Baserow (the service provider). The user will be + redirected to the SAML identity provider (IdP) where the user can + authenticate. Once logged in in the IdP, the user will be redirected + back to the assertion consumer service endpoint (ACS) where the SAML + response will be validated and a new JWT session token will be provided + to work with Baserow APIs. + parameters: + - in: query + name: email + schema: + type: string + description: The email address of the user that want to sign in using SAML. + - in: query + name: group_invitation_token + schema: + type: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future + deprecated: true + - in: query + name: language + schema: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + - in: query + name: original + schema: + type: string + description: >- + The url to which the user should be redirected after a successful + login or sign up. + - in: query + name: workspace_invitation_token + schema: + type: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after login or signing up. + tags: + - Auth + responses: + '302': + description: No response body + /api/sso/saml/login-url/: + get: + operationId: auth_provider_login_url + description: >- + Return the correct redirect_url to initiate the SSO SAML login. It needs + an email address if multiple SAML providers are configured otherwise the + only configured SAML provider signup URL will be returned. + parameters: + - in: query + name: email + schema: + type: string + description: The email address of the user that want to sign in using SAML. + - in: query + name: group_invitation_token + schema: + type: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future. + deprecated: true + - in: query + name: language + schema: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + - in: query + name: original + schema: + type: string + description: >- + The url to which the user should be redirected after a successful + login. + - in: query + name: workspace_invitation_token + schema: + type: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after login or signing up. + tags: + - Auth + responses: + '200': + content: + application/json: + schema: + type: object + additionalProperties: {} + description: Unspecified response body + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_SAML_INVALID_LOGIN_REQUEST + 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/teams/{team_id}/: + get: + operationId: get_team + description: Returns the information related to the provided team id. + parameters: + - in: path + name: team_id + schema: + type: integer + description: Returns the team related to the provided value. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TEAM_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: '' + put: + operationId: update_team + description: Updates an existing team with a new name. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + 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_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_BAD_REQUEST" + 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_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_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: '' + delete: + operationId: delete_team + description: >- + Deletes a team if the authorized user is in the team's workspace. All + the related children (e.g. subjects) are also going to be deleted. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: team_id + schema: + type: integer + description: Deletes the team related to the provided value. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TEAM_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/teams/{team_id}/subjects/: + get: + operationId: list_team_subjects + description: Lists all team subjects in a given team. + parameters: + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TeamSubjectResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TEAM_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: '' + post: + operationId: create_subject + description: Creates a new team subject. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubject' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TeamSubject' + multipart/form-data: + schema: + $ref: '#/components/schemas/TeamSubject' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubjectResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + - ERROR_SUBJECT_BAD_REQUEST + 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_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_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/teams/{team_id}/subjects/{subject_id}/: + get: + operationId: get_subject + description: Returns the information related to the provided subject id + parameters: + - in: path + name: subject_id + schema: + type: integer + description: Returns the subject related to the provided value. + required: true + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubjectResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_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: '' + delete: + operationId: delete_subject + description: Deletes a subject if the authorized user is in the team's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: subject_id + schema: + type: integer + description: The subject id to remove from the team. + required: true + - in: path + name: team_id + schema: + type: integer + description: The team id which the subject will be removed from. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_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/teams/group/{group_id}/: + get: + operationId: group_list_teams + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_list_teams](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all teams in a given group. + parameters: + - in: path + name: group_id + schema: + type: integer + description: Lists all teams in a given group. + required: true + - in: query + name: search + schema: + type: string + description: Search for teams by their name. + - in: query + name: sorts + schema: + type: string + description: Sort teams by name or subjects. + tags: + - Teams + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TeamResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_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: '' + post: + operationId: group_create_team + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_create_team](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new team in a given group. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + 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_SUBJECT_BAD_REQUEST + - ERROR_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + 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_GROUP_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_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/teams/workspace/{workspace_id}/: + get: + operationId: workspace_list_teams + description: Lists all teams in a given workspace. + parameters: + - in: query + name: search + schema: + type: string + description: Search for teams by their name. + - in: query + name: sorts + schema: + type: string + description: Sort teams by name or subjects. + - in: path + name: workspace_id + schema: + type: integer + description: Lists all teams in a given workspace. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TeamResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_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: '' + post: + operationId: workspace_create_team + description: Creates a new team. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workspace_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + 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_SUBJECT_BAD_REQUEST + - ERROR_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + 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_GROUP_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_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/templates/: + get: + operationId: list_templates + description: >- + Lists all the template categories and the related templates that are in + that category. The template's `workspace_id` can be used for previewing + purposes because that workspace contains the applications that are in + the template. All the `get` and `list` endpoints related to that + workspace are publicly accessible. + tags: + - Templates + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TemplateCategories' + description: '' + /api/templates/install/{group_id}/{template_id}/: + post: + operationId: group_install_template + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_install_template](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Installs the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: >- + The id related to the group where the template applications must be + installed into. + required: true + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + tags: + - Templates + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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_TEMPLATE_FILE_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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/templates/install/{group_id}/{template_id}/async/: + post: + operationId: group_install_template_async + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_install_template_async](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Start an async job to install the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: >- + The id related to the group where the template applications must be + installed into. + required: true + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + tags: + - Templates + security: + - JWT: [] + deprecated: true + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleInstallTemplateJobType' + 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_TEMPLATE_FILE_DOES_NOT_EXIST + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/templates/install/{workspace_id}/{template_id}/: + post: + operationId: install_template + description: >- + (Deprecated) Installs the applications of the given template into the + given workspace if the user has access to that workspace. The response + contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + - in: path + name: workspace_id + schema: + type: integer + description: >- + The id related to the workspace where the template applications must + be installed into. + required: true + tags: + - Templates + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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_TEMPLATE_FILE_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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/templates/install/{workspace_id}/{template_id}/async/: + post: + operationId: install_template_async + description: >- + Start an async job to install the applications of the given template + into the given workspace if the user has access to that workspace. The + response contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + - in: path + name: workspace_id + schema: + type: integer + description: >- + The id related to the workspace where the template applications must + be installed into. + required: true + tags: + - Templates + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleInstallTemplateJobType' + 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_TEMPLATE_FILE_DOES_NOT_EXIST + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/trash/: + get: + operationId: get_trash_structure + description: >- + Responds with the workspaces and applications available for the + requesting user to inspect the trash contents of. + tags: + - Trash + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TrashStructure' + description: '' + /api/trash/group/{group_id}/: + get: + operationId: group_get_contents + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_get_contents](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Responds with trash contents for a group optionally filtered to a specific application. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to only items for this application + in the group. + - in: path + name: group_id + schema: + type: integer + description: Returns the trash for the group with this id. + required: true + - in: query + name: page + schema: + type: integer + description: Selects which page of trash contents should be returned. + tags: + - Trash + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerTrashContents' + 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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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: '' + delete: + operationId: group_empty_contents + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_empty_contents](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Empties the specified group and/or application of trash, including the group and application themselves if they are trashed also. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to delete to only items for this + application in the group. + - in: path + name: group_id + schema: + type: integer + description: >- + The group whose trash contents to empty, including the group itself + if it is also trashed. + required: true + tags: + - Trash + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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/trash/restore/: + patch: + operationId: restore + description: Restores the specified trashed item back into baserow. + tags: + - Trash + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + security: + - JWT: [] + responses: + '204': + description: No response body + '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_TRASH_ITEM_DOES_NOT_EXIST + - ERROR_CANNOT_RESTORE_PARENT_BEFORE_CHILD + - ERROR_PARENT_ID_MUST_NOT_BE_PROVIDED + - ERROR_PARENT_ID_MUST_BE_PROVIDED + - ERROR_CANT_RESTORE_AS_RELATED_TABLE_TRASHED + - ERROR_CANNOT_RESTORE_ITEM_NOT_OWNED_BY_USER + 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/trash/workspace/{workspace_id}/: + get: + operationId: workspace_get_contents + description: >- + Responds with trash contents for a workspace optionally filtered to a + specific application. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to only items for this application + in the workspace. + - in: query + name: page + schema: + type: integer + description: Selects which page of trash contents should be returned. + - in: path + name: workspace_id + schema: + type: integer + description: Returns the trash for the workspace with this id. + required: true + tags: + - Trash + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerTrashContents' + 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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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: '' + delete: + operationId: workspace_empty_contents + description: >- + Empties the specified workspace and/or application of trash, including + the workspace and application themselves if they are trashed also. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to delete to only items for this + application in the workspace. + - in: path + name: workspace_id + schema: + type: integer + description: >- + The workspace whose trash contents to empty, including the workspace + itself if it is also trashed. + required: true + tags: + - Trash + security: + - JWT: [] + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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/user/: + post: + operationId: create_user + description: >- + Creates a new user based on the provided values. If desired an + authentication JWT can be generated right away. After creating an + account the initial workspace containing a database is created. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Register' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Register' + multipart/form-data: + schema: + $ref: '#/components/schemas/Register' + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_ALREADY_EXISTS + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + - ERROR_REQUEST_BODY_VALIDATION + - BAD_TOKEN_SIGNATURE + 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_GROUP_INVITATION_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/user-files/upload-file/: + post: + operationId: upload_file + description: >- + Uploads a file to Baserow by uploading the file contents directly. A + `file` multipart is expected containing the file contents. + tags: + - User files + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + 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/user-files/upload-via-url/: + post: + operationId: upload_via_url + description: Uploads a file to Baserow by downloading it from the provided URL. + tags: + - User files + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + required: true + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + - ERROR_FILE_URL_COULD_NOT_BE_REACHED + - ERROR_INVALID_FILE_URL + 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/user-source-auth-refresh/: + post: + operationId: user_source_token_refresh + description: >- + Generate a new access_token that can be used to continue operating on + Baserow with a user source user starting from a valid refresh token. + tags: + - User sources + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + description: '' + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user-source-token-blacklist/: + post: + operationId: user_source_token_blacklist + description: >- + Blacklists the provided user source token. This can be used the sign the + user off. + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenBlacklist' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenBlacklist' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenBlacklist' + required: true + responses: + '204': + description: No response body + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user-source/{user_source_id}/: + patch: + operationId: update_application_user_source + description: Updates an existing user_source. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_USER_SOURCE_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: '' + delete: + operationId: delete_application_user_source + description: Deletes the user_source related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_USER_SOURCE_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/user-source/{user_source_id}/force-token-auth: + post: + operationId: user_source_force_token_auth + description: >- + Force authenticates an existing user based on their ID. If successful, + an access token and a refresh token will be returned. + parameters: + - in: path + name: user_source_id + schema: + type: integer + description: The user source to use to authenticate the user. + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: object + properties: + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '401': + content: + application/json: + schema: + description: An active user with the provided ID could not be found. + description: '' + /api/user-source/{user_source_id}/move/: + patch: + operationId: move_application_user_source + description: >- + Moves the user_source in the application before another user_source or + at the end of the application if no before user_source is given. The + user_sources must belong to the same application. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source to move + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_USER_SOURCE_NOT_IN_SAME_APPLICATION + 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_USER_SOURCE_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/user-source/{user_source_id}/token-auth: + post: + operationId: user_source_token_auth + description: >- + Authenticates an existing user against a user source based on their + credentials. If successful, an access token and a refresh token will be + returned. + parameters: + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source to move + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenObtainPair' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenObtainPair' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenObtainPair' + required: true + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '401': + content: + application/json: + schema: + description: >- + An active user with the provided email and password could not + be found. + description: '' + /api/user/account/: + patch: + operationId: update_account + description: Updates the account information of the authenticated user. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedAccount' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedAccount' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedAccount' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Account' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/user/change-password/: + post: + operationId: change_password + description: >- + Changes the password of an authenticated user, but only if the old + password matches. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_OLD_PASSWORD + - ERROR_REQUEST_BODY_VALIDATION + 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/user/dashboard/: + get: + operationId: dashboard + description: >- + Lists all the relevant user information that for example could be shown + on a dashboard. It will contain all the pending workspace invitations + for that user. + tags: + - User + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Dashboard' + description: '' + /api/user/redo/: + patch: + operationId: redo + description: >- + Redoes the latest redoable action performed by the user making the + request. a ClientSessionId header must be provided and only actions + which were performed the same user with the same ClientSessionId value + set on the api request that performed the action will be + redone.Additionally the ClientSessionId header must be between 1 and 256 + characters long and must only contain alphanumeric or the - characters. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + The particular client session to redo actions for. The actions must + have been performed with this same header set with the same value + for them to be redoable by this endpoint. + required: true + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UndoRedoResponse' + description: '' + /api/user/reset-password/: + post: + operationId: reset_password + description: >- + Changes the password of a user if the reset token is valid. The + **send_password_reset_email** endpoint sends an email to the user + containing the token. That token can be used to change the password here + without providing the old password. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + required: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - BAD_TOKEN_SIGNATURE + - EXPIRED_TOKEN_SIGNATURE + - ERROR_USER_NOT_FOUND + - ERROR_REQUEST_BODY_VALIDATION + 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/user/schedule-account-deletion/: + post: + operationId: schedule_account_deletion + description: >- + Schedules the account deletion of the authenticated user. The user will + be permanently deleted after the grace delay defined by the instance + administrator. + tags: + - User + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/user/send-reset-password-email/: + post: + operationId: send_password_reset_email + description: >- + Sends an email containing the password reset link to the email address + of the user. This will only be done if a user is found with the given + email address. The endpoint will not fail if the email address is not + found. The link is going to the valid for 48 hours. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + required: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_HOSTNAME_IS_NOT_ALLOWED + 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/user/token-auth/: + post: + operationId: token_auth + description: >- + Authenticates an existing user based on their email and their password. + If successful, an access token and a refresh token will be returned. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '401': + content: + application/json: + schema: + description: >- + An active user with the provided email and password could not + be found. + description: '' + /api/user/token-blacklist/: + post: + operationId: token_blacklist + description: Blacklists the provided token. This can be used the sign the user off. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenBlacklist' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenBlacklist' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenBlacklist' + required: true + responses: + '204': + description: No response body + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user/token-refresh/: + post: + operationId: token_refresh + description: >- + Generate a new access_token that can be used to continue operating on + Baserow starting from a valid refresh token. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + description: '' + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user/token-verify/: + post: + operationId: token_verify + description: >- + Verifies if the refresh token is valid and can be used to generate a new + access_token. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + description: '' + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user/undo/: + patch: + operationId: undo + description: >- + undoes the latest undoable action performed by the user making the + request. a ClientSessionId header must be provided and only actions + which were performed the same user with the same ClientSessionId value + set on the api request that performed the action will be + undone.Additionally the ClientSessionId header must be between 1 and 256 + characters long and must only contain alphanumeric or the - characters. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + The particular client session to undo actions for. The actions must + have been performed with this same header set with the same value + for them to be undoable by this endpoint. + required: true + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UndoRedoResponse' + description: '' + /api/workspaces/: + get: + operationId: list_workspaces + description: >- + Lists all the workspaces of the authorized user. A workspace can contain + multiple applications like a database. Multiple users can have access to + a workspace. For example each company could have their own workspace + containing databases related to that company. The order of the + workspaces are custom for each user. The order is configurable via the + **order_workspaces** endpoint. + tags: + - Workspaces + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + post: + operationId: create_workspace + description: >- + Creates a new workspace where only the authorized user has access to. No + initial data like database applications are added, they have to be + created via other endpoints. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Workspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/Workspace' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + /api/workspaces/{workspace_id}/: + patch: + operationId: update_workspace + description: >- + Updates the existing workspace related to the provided `workspace_id` + parameter if the authorized user belongs to the workspace. It is not yet + possible to add additional users to a workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: Updates the workspace related to the provided value. + required: true + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + 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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + delete: + operationId: delete_workspace + description: >- + Deletes an existing workspace if the authorized user belongs to the + workspace. All the applications, databases, tables etc that were in the + workspace are going to be deleted also. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: Deletes the workspace related to the provided value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_GROUP_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/workspaces/{workspace_id}/leave/: + post: + operationId: leave_workspace + description: >- + Makes the authenticated user leave the workspace related to the provided + `workspace_id` if the user is in that workspace. If the user is the last + admin in the workspace, they will not be able to leave it. There must + always be one admin in the workspace, otherwise it will be left without + control. If that is the case, they must either delete the workspace or + give another member admin permissions first. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: Leaves the workspace related to the value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '204': + description: No response body + '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_GROUP_USER_IS_LAST_ADMIN + 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_GROUP_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/workspaces/{workspace_id}/permissions/: + get: + operationId: workspace_permissions + description: >- + Returns a the permission data necessary to determine the permissions of + a specific user over a specific workspace. + + See `core.handler.CoreHandler.get_permissions()` for more details. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace id we want the permission object for. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PermissionObject' + description: '' + '404': + 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_GROUP_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/workspaces/invitations/{workspace_invitation_id}/: + get: + operationId: get_workspace_invitation + description: >- + Returns the requested workspace invitation if the authorized user has + admin right to the related workspace + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Returns the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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: '' + patch: + operationId: update_workspace_invitation + description: >- + Updates the existing workspace invitation related to the provided + `workspace_invitation_id` param if the authorized user has admin rights + to the related workspace. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Updates the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_INVITATION_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: '' + delete: + operationId: delete_workspace_invitation + description: >- + Deletes a workspace invitation if the authorized user has admin rights + to the related workspace. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Deletes the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/workspaces/invitations/{workspace_invitation_id}/accept/: + post: + operationId: accept_workspace_invitation + description: >- + Accepts a workspace invitation with the given id if the email address of + the user matches that of the invitation. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Accepts the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/workspaces/invitations/{workspace_invitation_id}/reject/: + post: + operationId: reject_workspace_invitation + description: >- + Rejects a workspace invitation with the given id if the email address of + the user matches that of the invitation. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Rejects the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/workspaces/invitations/token/{token}/: + get: + operationId: get_workspace_invitation_by_token + description: >- + Responds with the serialized workspace invitation if an invitation with + the provided token is found. + parameters: + - in: path + name: token + schema: + type: string + description: Returns the workspace invitation related to the provided token. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserWorkspaceInvitation' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - BAD_TOKEN_SIGNATURE + 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_GROUP_INVITATION_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/workspaces/invitations/workspace/{workspace_id}/: + get: + operationId: list_workspace_invitations + description: >- + Lists all the workspace invitations of the workspace related to the + provided `workspace_id` parameter if the authorized user has admin + rights to that workspace. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: >- + Returns only invitations that are in the workspace related to the + provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + post: + operationId: create_workspace_invitation + description: >- + Creates a new workspace invitations for an email address if the + authorized user has admin rights to the related workspace. An email + containing a sign up link will be send to the user. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: >- + Creates a workspace invitation to the workspace related to the + provided value. + required: true + tags: + - Workspace invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_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/workspaces/order/: + post: + operationId: order_workspaces + description: >- + Changes the order of the provided workspace ids to the matching position + that the id has in the list. If the authorized user does not belong to + the workspace it will be ignored. The order will be custom for each + user. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + /api/workspaces/users/{workspace_user_id}/: + patch: + operationId: update_workspace_user + description: >- + Updates the existing workspace user related to the provided + `workspace_user_id` param if the authorized user has admin rights to the + related workspace. + parameters: + - in: path + name: workspace_user_id + schema: + type: integer + description: Updates the workspace user related to the provided value. + required: true + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUser' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_USER_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: '' + delete: + operationId: delete_workspace_user + description: >- + Deletes a workspace user if the authorized user has admin rights to the + related workspace. + parameters: + - in: path + name: workspace_user_id + schema: + type: integer + description: Deletes the workspace user related to the provided value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/workspaces/users/workspace/{workspace_id}/: + get: + operationId: list_workspace_users + description: >- + Lists all the users that are in a workspace if the authorized user has + admin permissions to the related workspace. To add a user to a workspace + an invitation must be sent first. + parameters: + - in: query + name: search + schema: + type: string + description: Search for workspace users by username, or email. + - in: query + name: sorts + schema: + type: string + description: Sort workspace users by name, email or role. + - in: path + name: workspace_id + schema: + type: integer + description: Lists workspace users related to the provided workspace value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ListWorkspaceUsersWithMemberData' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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_GROUP_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: + Account: + type: object + description: This serializer must be kept in sync with `UserSerializer`. + properties: + first_name: + type: string + maxLength: 150 + minLength: 2 + language: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + maxLength: 10 + minLength: 2 + email_notification_frequency: + allOf: + - $ref: '#/components/schemas/EmailNotificationFrequencyEnum' + description: >- + The maximum frequency at which the user wants to receive email + notifications. + + + * `instant` - instant + + * `daily` - daily + + * `weekly` - weekly + + * `never` - never + ActionScopes: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + root: + type: boolean + nullable: true + description: >- + If set to true then actions registered in the root scope will be + included when undoing or redoing. + workspace: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a workspaces id then any actions directly related to that + workspace will be be included when undoing or redoing. + group: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a workspaces id then any actions directly related to that + workspace will be be included when undoing or redoing. + application: + type: integer + minimum: 0 + nullable: true + description: >- + If set to an applications id then any actions directly related to + that application will be be included when undoing or redoing. + table: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a table id then any actions directly related to that table + will be be included when undoing or redoing. + view: + type: integer + minimum: 0 + nullable: true + description: >- + If set to an view id then any actions directly related to that view + will be be included when undoing or redoing. + teams_in_workspace: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a workspace id then any actions directly related to that + workspace will be be included when undoing or redoing. + AdminDashboard: + type: object + properties: + total_users: + type: integer + total_groups: + type: integer + total_workspaces: + type: integer + total_applications: + type: integer + new_users_last_24_hours: + type: integer + new_users_last_7_days: + type: integer + new_users_last_30_days: + type: integer + previous_new_users_last_24_hours: + type: integer + previous_new_users_last_7_days: + type: integer + previous_new_users_last_30_days: + type: integer + active_users_last_24_hours: + type: integer + active_users_last_7_days: + type: integer + active_users_last_30_days: + type: integer + previous_active_users_last_24_hours: + type: integer + previous_active_users_last_7_days: + type: integer + previous_active_users_last_30_days: + type: integer + new_users_per_day: + type: array + items: + $ref: '#/components/schemas/AdminDashboardPerDay' + active_users_per_day: + type: array + items: + $ref: '#/components/schemas/AdminDashboardPerDay' + required: + - active_users_last_24_hours + - active_users_last_30_days + - active_users_last_7_days + - active_users_per_day + - new_users_last_24_hours + - new_users_last_30_days + - new_users_last_7_days + - new_users_per_day + - previous_active_users_last_24_hours + - previous_active_users_last_30_days + - previous_active_users_last_7_days + - previous_new_users_last_24_hours + - previous_new_users_last_30_days + - previous_new_users_last_7_days + - total_applications + - total_groups + - total_users + - total_workspaces + AdminDashboardPerDay: + type: object + properties: + date: + type: string + format: date + count: + type: integer + required: + - count + - date + AggregationRawTypeEnum: + enum: + - empty_count + - not_empty_count + - unique_count + - min + - max + - sum + - average + - median + - decile + - variance + - std_dev + type: string + description: |- + * `empty_count` - empty_count + * `not_empty_count` - not_empty_count + * `unique_count` - unique_count + * `min` - min + * `max` - max + * `sum` - sum + * `average` - average + * `median` - median + * `decile` - decile + * `variance` - variance + * `std_dev` - std_dev + AirtableImportJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + group_id: + type: integer + description: The group ID where the Airtable base must be imported into. + workspace_id: + type: integer + description: The workspace ID where the Airtable base must be imported into. + airtable_share_url: + type: string + format: uri + description: >- + The publicly shared URL of the Airtable base (e.g. + https://airtable.com/shrxxxxxxxxxxxxxx) + required: + - airtable_share_url + - type + AirtableImportJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + group_id: + type: integer + description: The group ID where the Airtable base must be imported into. + workspace_id: + type: integer + description: The workspace ID where the Airtable base must be imported into. + database: + $ref: '#/components/schemas/Application' + airtable_share_id: + type: string + format: uri + description: Public ID of the shared Airtable base that must be imported. + maxLength: 200 + required: + - airtable_share_id + - database + - group_id + - id + - progress_percentage + - state + - type + - workspace_id + Alignment0e8Enum: + enum: + - top + - center + - bottom + type: string + description: |- + * `top` - Top + * `center` - Center + * `bottom` - Bottom + Alignment675Enum: + enum: + - left + - center + - right + type: string + description: |- + * `left` - Left + * `center` - Center + * `right` - Right + App_Auth_ProviderAppAuthProvider: + oneOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderAppAuthProvider + discriminator: + propertyName: type + mapping: + local_baserow_password: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderAppAuthProvider + App_Auth_ProviderBaseAppAuthProvider: + oneOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider + discriminator: + propertyName: type + mapping: + local_baserow_password: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider + Application: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + description: The workspace that the application belongs to. + required: + - group + - id + - name + - order + - type + - workspace + ApplicationApplication: + oneOf: + - $ref: '#/components/schemas/DatabaseApplication' + - $ref: '#/components/schemas/BuilderApplication' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseApplication' + builder: '#/components/schemas/BuilderApplication' + ApplicationBaseApplicationCreatePolymorphic: + oneOf: + - $ref: '#/components/schemas/DatabaseBaseApplicationCreatePolymorphic' + - $ref: '#/components/schemas/BuilderBaseApplicationCreatePolymorphic' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseBaseApplicationCreatePolymorphic' + builder: '#/components/schemas/BuilderBaseApplicationCreatePolymorphic' + ArrayFormulaTypeEnum: + enum: + - invalid + - text + - char + - button + - link + - date_interval + - duration + - date + - boolean + - number + - single_select + - multiple_select + - single_file + type: string + description: |- + * `invalid` - invalid + * `text` - text + * `char` - char + * `button` - button + * `link` - link + * `date_interval` - date_interval + * `duration` - duration + * `date` - date + * `boolean` - boolean + * `number` - number + * `single_select` - single_select + * `multiple_select` - multiple_select + * `single_file` - single_file + AuditLog: + type: object + properties: + id: + type: integer + readOnly: true + action_type: + type: string + readOnly: true + user: + type: string + readOnly: true + group: + type: string + readOnly: true + workspace: + type: string + readOnly: true + type: + type: string + readOnly: true + description: + type: string + readOnly: true + timestamp: + type: string + format: date-time + ip_address: + type: string + readOnly: true + nullable: true + required: + - action_type + - description + - group + - id + - ip_address + - timestamp + - type + - user + - workspace + AuditLogActionType: + type: object + properties: + id: + $ref: '#/components/schemas/IdEnum' + value: + type: string + description: |- + Given the *incoming* primitive data, return the value for this field + that should be validated and transformed to a native value. + readOnly: true + required: + - id + - value + AuditLogExportJobCreateJob: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + url: + type: string + format: uri + readOnly: true + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + required: + - type + - url + AuditLogExportJobJob: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + created_on: + type: string + format: date-time + readOnly: true + description: The date and time when the export job was created. + exported_file_name: + type: string + readOnly: true + description: The name of the file that was created by the export job. + url: + type: string + format: uri + readOnly: true + description: The URL to download the exported file. + required: + - created_on + - exported_file_name + - id + - progress_percentage + - state + - type + - url + AuditLogUser: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + required: + - id + - value + AuditLogWorkspace: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + required: + - id + - value + AuthFormElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + required: + - order + - type + AuthFormElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + required: + - id + - order + - page_id + - parent_element_id + - type + AuthFormElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + required: + - id + - order + - parent_element_id + - type + AuthFormElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + Authentication_ProviderAuthProvider: + oneOf: + - $ref: '#/components/schemas/PasswordAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/SamlAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GoogleAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/FacebookAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GitHubAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GitLabAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/OpenIdConnectAuthProviderModelAuthProvider' + discriminator: + propertyName: type + mapping: + password: '#/components/schemas/PasswordAuthProviderModelAuthProvider' + saml: '#/components/schemas/SamlAuthProviderModelAuthProvider' + google: '#/components/schemas/GoogleAuthProviderModelAuthProvider' + facebook: '#/components/schemas/FacebookAuthProviderModelAuthProvider' + github: '#/components/schemas/GitHubAuthProviderModelAuthProvider' + gitlab: '#/components/schemas/GitLabAuthProviderModelAuthProvider' + openid_connect: '#/components/schemas/OpenIdConnectAuthProviderModelAuthProvider' + AutonumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + view_id: + type: integer + nullable: true + description: The id of the view to use for the initial ordering. + required: + - name + - type + AutonumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + AutonumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + AutonumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + view_id: + type: integer + nullable: true + description: The id of the view to use for the initial ordering. + BaseExporterOptions: + type: object + properties: + view_id: + type: integer + minimum: 0 + nullable: true + description: >- + Optional: The view for this table to export using its filters, sorts + and other view specific settings. + exporter_type: + allOf: + - $ref: '#/components/schemas/ExporterTypeEnum' + description: |- + The file type to export to. + + * `csv` - csv + * `json` - json + * `xml` - xml + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + required: + - exporter_type + BaserowImpersonateAuthToken: + type: object + description: Serializer used for impersonation. + properties: + user: + type: integer + required: + - user + BatchCreateRoleAssignment: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/CreateRoleAssignment' + required: + - items + BatchDeleteRows: + type: object + properties: + items: + type: array + items: + type: integer + maxItems: 200 + minItems: 1 + required: + - items + BlankEnum: + enum: + - '' + BooleanFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + BooleanFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + BooleanFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + BooleanFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + BuilderApplication: + type: object + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + description: The workspace that the application belongs to. + pages: + type: array + items: + $ref: '#/components/schemas/Page' + readOnly: true + description: >- + This field is specific to the `builder` application and contains an + array of pages that are in the builder. + theme: + allOf: + - $ref: '#/components/schemas/CombinedThemeConfigBlocks' + readOnly: true + description: >- + This field is specific to the `builder` application and contains the + theme settings. + required: + - group + - id + - name + - order + - pages + - theme + - type + - workspace + BuilderBaseApplicationCreatePolymorphic: + type: object + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + properties: + name: + type: string + maxLength: 160 + type: + $ref: '#/components/schemas/TypeF4fEnum' + init_with_data: + type: boolean + default: false + required: + - name + - type + BuilderBaseApplicationUpdatePolymorphic: + type: object + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + properties: + name: + type: string + maxLength: 160 + required: + - name + BuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + required: + - element_id + - event + - id + - order + - type + Builder_Workflow_Action_TypeBuilderWorkflowAction: + oneOf: + - $ref: '#/components/schemas/NotificationWorkflowActionBuilderWorkflowAction' + - $ref: '#/components/schemas/OpenPageWorkflowActionBuilderWorkflowAction' + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction + - $ref: '#/components/schemas/LogoutWorkflowActionBuilderWorkflowAction' + discriminator: + propertyName: type + mapping: + notification: '#/components/schemas/NotificationWorkflowActionBuilderWorkflowAction' + open_page: '#/components/schemas/OpenPageWorkflowActionBuilderWorkflowAction' + create_row: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction + update_row: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction + logout: '#/components/schemas/LogoutWorkflowActionBuilderWorkflowAction' + Builder_Workflow_Action_TypeCreateBuilderWorkflowAction: + oneOf: + - $ref: >- + #/components/schemas/NotificationWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/OpenPageWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction + - $ref: '#/components/schemas/LogoutWorkflowActionCreateBuilderWorkflowAction' + discriminator: + propertyName: type + mapping: + notification: >- + #/components/schemas/NotificationWorkflowActionCreateBuilderWorkflowAction + open_page: >- + #/components/schemas/OpenPageWorkflowActionCreateBuilderWorkflowAction + create_row: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction + update_row: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction + logout: '#/components/schemas/LogoutWorkflowActionCreateBuilderWorkflowAction' + ButtonElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + ButtonElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + ButtonElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + ButtonElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + CalendarViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + date_field: + type: integer + nullable: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + 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 + 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. + CalendarViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + date_field: + type: integer + nullable: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + ChangePasswordBodyValidation: + type: object + properties: + old_password: + type: string + new_password: + type: string + required: + - new_password + - old_password + CheckboxElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + required: + - order + - type + CheckboxElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + required: + - id + - order + - page_id + - parent_element_id + - type + CheckboxElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + required: + - id + - order + - parent_element_id + - type + CheckboxElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + Collaborator: + type: object + properties: + id: + type: integer + name: + type: string + readOnly: true + required: + - id + - name + CollectionField: + type: object + description: >- + This serializer transform the flat properties object from/to a config + dict property. + + This allows us to see the field on the frontend side as a simple + polymorphic + + object. + properties: + id: + type: integer + readOnly: true + name: + type: string + description: The name of the field. + maxLength: 225 + type: + type: string + description: The type of the field. + maxLength: 225 + required: + - id + - name + - type + ColumnElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - order + - type + ColumnElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - id + - order + - page_id + - parent_element_id + - type + ColumnElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - id + - order + - parent_element_id + - type + ColumnElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + CombinedThemeConfigBlocks: + type: object + properties: + primary_color: + type: string + maxLength: 9 + secondary_color: + type: string + maxLength: 9 + border_color: + type: string + maxLength: 9 + heading_1_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_1_color: + type: string + maxLength: 9 + heading_2_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_2_color: + type: string + maxLength: 9 + heading_3_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_3_color: + type: string + maxLength: 9 + ConditionTypeEnum: + enum: + - AND + - OR + type: string + description: |- + * `AND` - And + * `OR` - Or + ConditionalColorValueProviderConfColor: + type: object + properties: + id: + type: string + description: A unique identifier for this condition. + color: + type: string + description: The color the decorator should take if the defined conditions apply. + filters: + type: array + items: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColorFilter' + description: >- + A list of conditions that the row must meet to get the selected + color. This list of conditions can be empty, in that case, this + color will always match the row values. + filter_groups: + type: array + items: + $ref: >- + #/components/schemas/ConditionalColorValueProviderConfColorFilterGroup + description: >- + A list of filter groups that the row must meet to get the selected + color. + operator: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + default: AND + description: |- + The boolean operator used to group all conditions. + + * `AND` - And + * `OR` - Or + required: + - color + - filters + - id + ConditionalColorValueProviderConfColorFilter: + type: object + properties: + id: + type: string + description: A unique identifier for this condition. + field: + type: integer + nullable: true + description: The field of which the value must be compared to the filter value. + type: + nullable: true + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + oneOf: + - $ref: '#/components/schemas/Type880Enum' + - $ref: '#/components/schemas/NullEnum' + value: + type: string + default: '' + description: The field of which the value must be compared to the filter value. + group: + type: string + nullable: true + description: >- + The id of the filter group this filter belongs to. If this is null, + the filter is not part of a filter group. + required: + - field + - id + - type + ConditionalColorValueProviderConfColorFilterGroup: + type: object + properties: + id: + type: string + description: A unique identifier for this condition. + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + default: AND + description: |- + The boolean operator used to group all conditions. + + * `AND` - And + * `OR` - Or + required: + - id + ConditionalColorValueProviderConfColors: + type: object + properties: + colors: + type: array + items: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColor' + description: >- + A list of color items. For each row, the value provider try to match + the defined colors one by one in the given order. The first matching + color is returned to the decorator. + required: + - colors + CountFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + CountFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + CountFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + CountFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + CreatePage: + type: object + properties: + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + required: + - name + - path + CreateRoleAssignment: + type: object + description: The create role assignment serializer. + properties: + subject_id: + type: integer + minimum: 1 + description: The subject ID. A subject is an actor that can do operations. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectTypeB9aEnum' + description: |- + The subject type. + + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + role: + type: string + nullable: true + description: >- + The uid of the role you want to assign to the user or team in the + given workspace. You can omit this property if you want to remove + the role. + scope_id: + type: integer + minimum: 1 + description: >- + The ID of the scope object. The scope object limit the role + assignment to this scope and all its descendants. + scope_type: + allOf: + - $ref: '#/components/schemas/ScopeTypeEnum' + description: |- + The scope object type. + + * `core` - core + * `application` - application + * `workspace` - workspace + * `workspace_invitation` - workspace_invitation + * `snapshot` - snapshot + * `workspace_user` - workspace_user + * `integration` - integration + * `user_source` - user_source + * `database` - database + * `database_table` - database_table + * `database_field` - database_field + * `database_view` - database_view + * `database_view_decoration` - database_view_decoration + * `database_view_sort` - database_view_sort + * `database_view_group` - database_view_group + * `database_view_filter` - database_view_filter + * `database_view_filter_group` - database_view_filter_group + * `token` - token + * `builder` - builder + * `builder_page` - builder_page + * `builder_element` - builder_element + * `builder_domain` - builder_domain + * `builder_data_source` - builder_data_source + * `builder_workflow_action` - builder_workflow_action + * `team` - team + * `team_subject` - team_subject + * `license` - license + required: + - role + - scope_id + - scope_type + - subject_id + - subject_type + CreateSnapshotJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + CreateSnapshotJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + CreateViewFilter: + type: object + properties: + field: + type: integer + description: The field of which the value must be compared to the filter value. + type: + allOf: + - $ref: '#/components/schemas/Type880Enum' + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + value: + type: string + default: '' + description: The filter value that must be compared to the field's value. + maxLength: 255 + group: + type: integer + nullable: true + description: >- + The id of the filter group the new filter will belong to. If this is + null, the filter will not be part of a filter group, but directly + part of the view. + required: + - field + - type + CreateViewFilterGroup: + type: object + properties: + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + CreateViewGroupBy: + type: object + properties: + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + default: ASC + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + default: 200 + description: The pixel width of the group by in the related view. + required: + - field + CreateViewSort: + type: object + properties: + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + default: ASC + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + CreateWorkspaceInvitation: + type: object + properties: + email: + type: string + format: email + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + maxLength: 254 + permissions: + type: string + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + maxLength: 32 + message: + type: string + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + maxLength: 250 + base_url: + type: string + format: uri + description: >- + The base URL where the user can publicly accept his invitation.The + accept token is going to be appended to the base_url (base_url + '/token'). + required: + - base_url + - email + CreatedByFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + CreatedByFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + CreatedByFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + CreatedByFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + CreatedOnFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + required: + - type + CreatedOnFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + CreatedOnFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + CreatedOnFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + CsvColumnSeparatorEnum: + enum: + - ',' + - ; + - '|' + - tab + - record_separator + - unit_separator + type: string + description: "* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + CsvExporterOptions: + type: object + properties: + view_id: + type: integer + minimum: 0 + nullable: true + description: >- + Optional: The view for this table to export using its filters, sorts + and other view specific settings. + exporter_type: + allOf: + - $ref: '#/components/schemas/ExporterTypeEnum' + description: |- + The file type to export to. + + * `csv` - csv + * `json` - json + * `xml` - xml + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_include_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + required: + - exporter_type + CustomDomainCreateDomain: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type0a6Enum' + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + domain_name: + type: string + maxLength: 255 + required: + - domain_name + - type + CustomDomainDomain: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the domain. + domain_name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + builder_id: + type: integer + readOnly: true + last_published: + type: string + format: date-time + nullable: true + description: Last publication date of this domain + required: + - builder_id + - domain_name + - id + - order + - type + Dashboard: + type: object + properties: + group_invitations: + type: array + items: + $ref: '#/components/schemas/UserWorkspaceInvitation' + workspace_invitations: + type: array + items: + $ref: '#/components/schemas/UserWorkspaceInvitation' + required: + - group_invitations + - workspace_invitations + DatabaseApplication: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + description: The workspace that the application belongs to. + tables: + type: array + items: + $ref: '#/components/schemas/TableSerializerWithFields' + description: >- + This field is specific to the `database` application and contains an + array of tables that are in the database. + views: + type: array + items: + $ref: '#/components/schemas/LocalBaserowView' + description: >- + This field is specific to the `database` application and contains an + array of views that are in the tables. + required: + - group + - id + - name + - order + - tables + - type + - views + - workspace + DatabaseBaseApplicationCreatePolymorphic: + type: object + properties: + name: + type: string + maxLength: 160 + type: + $ref: '#/components/schemas/TypeF4fEnum' + init_with_data: + type: boolean + default: false + required: + - name + - type + DatabaseBaseApplicationUpdatePolymorphic: + type: object + properties: + name: + type: string + maxLength: 160 + required: + - name + DateFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + required: + - type + DateFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + DateFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + DateFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + DateFormatEnum: + enum: + - EU + - US + - ISO + type: string + description: |- + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + DateTimeFormatEnum: + enum: + - '24' + - '12' + type: string + description: |- + * `24` - 24 hour + * `12` - 12 hour + Decorator_Value_Provider_TypeCreateViewDecoration: + oneOf: + - $ref: >- + #/components/schemas/GeneratedSingle_select_colorCreateViewDecoration + - $ref: '#/components/schemas/GeneratedConditional_colorCreateViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: >- + #/components/schemas/GeneratedSingle_select_colorCreateViewDecoration + conditional_color: '#/components/schemas/GeneratedConditional_colorCreateViewDecoration' + Decorator_Value_Provider_TypeViewDecoration: + oneOf: + - $ref: '#/components/schemas/GeneratedSingle_select_colorViewDecoration' + - $ref: '#/components/schemas/GeneratedConditional_colorViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: '#/components/schemas/GeneratedSingle_select_colorViewDecoration' + conditional_color: '#/components/schemas/GeneratedConditional_colorViewDecoration' + Domain_TypeCreateDomain: + oneOf: + - $ref: '#/components/schemas/CustomDomainCreateDomain' + - $ref: '#/components/schemas/SubDomainCreateDomain' + discriminator: + propertyName: type + mapping: + custom: '#/components/schemas/CustomDomainCreateDomain' + sub_domain: '#/components/schemas/SubDomainCreateDomain' + Domain_TypeDomain: + oneOf: + - $ref: '#/components/schemas/CustomDomainDomain' + - $ref: '#/components/schemas/SubDomainDomain' + discriminator: + propertyName: type + mapping: + custom: '#/components/schemas/CustomDomainDomain' + sub_domain: '#/components/schemas/SubDomainDomain' + DropdownElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - order + - type + DropdownElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - id + - order + - page_id + - parent_element_id + - type + DropdownElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - id + - order + - parent_element_id + - type + DropdownElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + DropdownOption: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + description: The value of the option + name: + type: string + description: The display name of the option + required: + - id + DuplicateApplicationJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + application_id: + type: integer + description: The application ID to duplicate. + required: + - application_id + - type + DuplicateApplicationJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + duplicated_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + required: + - duplicated_application + - id + - original_application + - progress_percentage + - state + - type + DuplicateElement: + type: object + properties: + elements: + type: array + items: + $ref: '#/components/schemas/Element' + readOnly: true + description: The duplicated elements. + workflow_actions: + type: array + items: + $ref: '#/components/schemas/BuilderWorkflowAction' + readOnly: true + description: The duplicated workflow actions + required: + - elements + - workflow_actions + DuplicateFieldJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + field_id: + type: integer + description: The ID of the field to duplicate. + duplicate_data: + type: boolean + default: false + description: Whether to duplicate the data of the field. + required: + - field_id + - type + DuplicateFieldJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_field: + allOf: + - $ref: '#/components/schemas/Field' + readOnly: true + duplicated_field: + allOf: + - $ref: '#/components/schemas/FieldSerializerWithRelatedFields' + readOnly: true + required: + - duplicated_field + - id + - original_field + - progress_percentage + - state + - type + DuplicatePageJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + page_id: + type: integer + description: The ID of the page to duplicate. + required: + - page_id + - type + DuplicatePageJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + duplicated_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + required: + - duplicated_page + - id + - original_page + - progress_percentage + - state + - type + DuplicateTableJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + table_id: + type: integer + description: The ID of the table to duplicate. + required: + - table_id + - type + DuplicateTableJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + duplicated_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + required: + - duplicated_table + - id + - original_table + - progress_percentage + - state + - type + DurationFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + required: + - name + - type + DurationFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + required: + - id + - name + - order + - read_only + - table_id + - type + DurationFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + DurationFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + DurationFormatEnum: + enum: + - h:mm + - h:mm:ss + - h:mm:ss.s + - h:mm:ss.ss + - h:mm:ss.sss + - d h + - d h:mm + - d h:mm:ss + type: string + description: |- + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + Element: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + required: + - id + - order + - page_id + - parent_element_id + - type + Element_TypeCreateElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementCreateElement' + - $ref: '#/components/schemas/TextElementCreateElement' + - $ref: '#/components/schemas/LinkElementCreateElement' + - $ref: '#/components/schemas/ImageElementCreateElement' + - $ref: '#/components/schemas/InputTextElementCreateElement' + - $ref: '#/components/schemas/ColumnElementCreateElement' + - $ref: '#/components/schemas/ButtonElementCreateElement' + - $ref: '#/components/schemas/TableElementCreateElement' + - $ref: '#/components/schemas/FormContainerElementCreateElement' + - $ref: '#/components/schemas/DropdownElementCreateElement' + - $ref: '#/components/schemas/CheckboxElementCreateElement' + - $ref: '#/components/schemas/IFrameElementCreateElement' + - $ref: '#/components/schemas/AuthFormElementCreateElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementCreateElement' + text: '#/components/schemas/TextElementCreateElement' + link: '#/components/schemas/LinkElementCreateElement' + image: '#/components/schemas/ImageElementCreateElement' + input_text: '#/components/schemas/InputTextElementCreateElement' + column: '#/components/schemas/ColumnElementCreateElement' + button: '#/components/schemas/ButtonElementCreateElement' + table: '#/components/schemas/TableElementCreateElement' + form_container: '#/components/schemas/FormContainerElementCreateElement' + dropdown: '#/components/schemas/DropdownElementCreateElement' + checkbox: '#/components/schemas/CheckboxElementCreateElement' + iframe: '#/components/schemas/IFrameElementCreateElement' + auth_form: '#/components/schemas/AuthFormElementCreateElement' + Element_TypeElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementElement' + - $ref: '#/components/schemas/TextElementElement' + - $ref: '#/components/schemas/LinkElementElement' + - $ref: '#/components/schemas/ImageElementElement' + - $ref: '#/components/schemas/InputTextElementElement' + - $ref: '#/components/schemas/ColumnElementElement' + - $ref: '#/components/schemas/ButtonElementElement' + - $ref: '#/components/schemas/TableElementElement' + - $ref: '#/components/schemas/FormContainerElementElement' + - $ref: '#/components/schemas/DropdownElementElement' + - $ref: '#/components/schemas/CheckboxElementElement' + - $ref: '#/components/schemas/IFrameElementElement' + - $ref: '#/components/schemas/AuthFormElementElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementElement' + text: '#/components/schemas/TextElementElement' + link: '#/components/schemas/LinkElementElement' + image: '#/components/schemas/ImageElementElement' + input_text: '#/components/schemas/InputTextElementElement' + column: '#/components/schemas/ColumnElementElement' + button: '#/components/schemas/ButtonElementElement' + table: '#/components/schemas/TableElementElement' + form_container: '#/components/schemas/FormContainerElementElement' + dropdown: '#/components/schemas/DropdownElementElement' + checkbox: '#/components/schemas/CheckboxElementElement' + iframe: '#/components/schemas/IFrameElementElement' + auth_form: '#/components/schemas/AuthFormElementElement' + Element_TypePublicElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementPublicElement' + - $ref: '#/components/schemas/TextElementPublicElement' + - $ref: '#/components/schemas/LinkElementPublicElement' + - $ref: '#/components/schemas/ImageElementPublicElement' + - $ref: '#/components/schemas/InputTextElementPublicElement' + - $ref: '#/components/schemas/ColumnElementPublicElement' + - $ref: '#/components/schemas/ButtonElementPublicElement' + - $ref: '#/components/schemas/TableElementPublicElement' + - $ref: '#/components/schemas/FormContainerElementPublicElement' + - $ref: '#/components/schemas/DropdownElementPublicElement' + - $ref: '#/components/schemas/CheckboxElementPublicElement' + - $ref: '#/components/schemas/IFrameElementPublicElement' + - $ref: '#/components/schemas/AuthFormElementPublicElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementPublicElement' + text: '#/components/schemas/TextElementPublicElement' + link: '#/components/schemas/LinkElementPublicElement' + image: '#/components/schemas/ImageElementPublicElement' + input_text: '#/components/schemas/InputTextElementPublicElement' + column: '#/components/schemas/ColumnElementPublicElement' + button: '#/components/schemas/ButtonElementPublicElement' + table: '#/components/schemas/TableElementPublicElement' + form_container: '#/components/schemas/FormContainerElementPublicElement' + dropdown: '#/components/schemas/DropdownElementPublicElement' + checkbox: '#/components/schemas/CheckboxElementPublicElement' + iframe: '#/components/schemas/IFrameElementPublicElement' + auth_form: '#/components/schemas/AuthFormElementPublicElement' + EmailFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + EmailFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + EmailFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + EmailFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + EmailNotificationFrequencyEnum: + enum: + - instant + - daily + - weekly + - never + type: string + description: |- + * `instant` - instant + * `daily` - daily + * `weekly` - weekly + * `never` - never + EmailTesterRequest: + type: object + properties: + target_email: + type: string + format: email + required: + - target_email + EmailTesterResponse: + type: object + properties: + succeeded: + type: boolean + description: Whether or not the test email was sent successfully. + error_stack: + type: string + nullable: true + description: The full stack trace and error message if the test email failed. + error_type: + type: string + nullable: true + description: The type of error that occurred if the test email failed. + error: + type: string + nullable: true + description: >- + A short message describing the error that occured if the test email + failed + required: + - succeeded + EventEnum: + enum: + - click + - submit + - after_login + type: string + description: |- + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + EventTypeEnum: + enum: + - rows.created + - row.created + - rows.updated + - row.updated + - rows.deleted + - row.deleted + type: string + description: |- + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + EventTypesEnum: + enum: + - rows.created + - rows.updated + - rows.deleted + type: string + description: |- + * `rows.created` - rows.created + * `rows.updated` - rows.updated + * `rows.deleted` - rows.deleted + Events3eaEnum: + enum: + - rows.created + - row.created + - rows.updated + - row.updated + - rows.deleted + - row.deleted + type: string + description: |- + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + ExampleBatchRowsRequest: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/ExampleRowRequestSerializerWithUserFieldNames' + maxItems: 200 + minItems: 1 + required: + - items + ExampleBatchRowsResponse: + type: object + properties: + items: + type: array + items: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + maxItems: 200 + minItems: 1 + required: + - items + ExampleBatchUpdateRowRequestSerializerWithUserFieldNames: + type: object + properties: + id: + type: integer + description: The unique identifier of the row in the table. + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + nullable: true + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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/FileFieldRequest' + nullable: true + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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: + type: integer + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + maxLength: 100 + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + required: + - id + ExampleRowRequest: + type: object + properties: + 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_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: + type: integer + nullable: true + 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. + 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/FileFieldRequest' + nullable: true + 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: + type: integer + 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: + type: integer + 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. The response represents + chosen field, but also the value and color is exposed. + 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. 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_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 list of objects representing the chosen + collaborators through the object's `id` property. The id is Baserow + user id. The response objects also contains the collaborator name + directly along with its id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. Allows + setting a write only password value. Providing a string will set the + password, `null` will unset it, `true` will be ignored. The response + will respond with `true` is a password is set, but will never expose + the password itself. + ExampleRowRequestSerializerWithUserFieldNames: + type: object + properties: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + nullable: true + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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/FileFieldRequest' + nullable: true + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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: + type: integer + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + maxLength: 100 + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + 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. + 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. + 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. 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 list of objects representing the chosen + collaborators through the object's `id` property. The id is Baserow + user id. The response objects also contains the collaborator name + directly along with its id. + field_24: + type: string + format: uuid + description: >- + This field represents the `uuid` field. The number in field_24 is in + a normal request or response the id of the field. Contains a unique + and persistent UUID for every row. + field_25: + type: integer + description: >- + This field represents the `autonumber` field. The number in field_25 + is in a normal request or response the id of the field. Contains a + unique and persistent incremental integer number for every row. + field_26: + type: boolean + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. Allows + setting a write only password value. Providing a string will set the + password, `null` will unset it, `true` will be ignored. The response + will respond with `true` is a password is set, but will never expose + the password itself. + required: + - id + ExampleRowResponseSerializerWithUserFieldNames: + 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. + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_24: + type: string + format: uuid + description: >- + This field represents the `uuid` field. The number in field_24 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Contains a unique and persistent + UUID for every row. + field_25: + type: integer + description: >- + This field represents the `autonumber` field. The number in field_25 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Contains a unique and persistent + incremental integer number for every row. + field_26: + type: boolean + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + required: + - id + Export: + oneOf: + - $ref: '#/components/schemas/CsvExporterOptions' + - $ref: '#/components/schemas/BaseExporterOptions' + - $ref: '#/components/schemas/BaseExporterOptions' + discriminator: + propertyName: exporter_type + mapping: + csv: '#/components/schemas/CsvExporterOptions' + json: '#/components/schemas/BaseExporterOptions' + xml: '#/components/schemas/BaseExporterOptions' + ExportCharsetEnum: + enum: + - utf-8 + - iso-8859-6 + - windows-1256 + - iso-8859-4 + - windows-1257 + - iso-8859-14 + - iso-8859-2 + - windows-1250 + - gbk + - gb18030 + - big5 + - koi8-r + - koi8-u + - iso-8859-5 + - windows-1251 + - x-mac-cyrillic + - iso-8859-7 + - windows-1253 + - iso-8859-8 + - windows-1255 + - euc-jp + - iso-2022-jp + - shift-jis + - euc-kr + - macintosh + - iso-8859-10 + - iso-8859-16 + - windows-874 + - windows-1254 + - windows-1258 + - iso-8859-1 + - windows-1252 + - iso-8859-3 + type: string + description: |- + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + ExportJob: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + id: + type: integer + readOnly: true + table: + type: integer + nullable: true + view: + type: integer + nullable: true + exporter_type: + type: string + state: + $ref: '#/components/schemas/StateEnum' + status: + type: string + readOnly: true + description: 'DEPRECATED: Use state instead' + exported_file_name: + type: string + nullable: true + created_at: + type: string + format: date-time + readOnly: true + progress_percentage: + type: number + format: double + url: + type: string + format: uri + readOnly: true + required: + - created_at + - exporter_type + - id + - state + - status + - url + ExporterTypeEnum: + enum: + - csv + - json + - xml + type: string + description: |- + * `csv` - csv + * `json` - json + * `xml` - xml + FacebookAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + Field: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + FieldCreateField: + oneOf: + - $ref: '#/components/schemas/TextFieldCreateField' + - $ref: '#/components/schemas/LongTextFieldCreateField' + - $ref: '#/components/schemas/URLFieldCreateField' + - $ref: '#/components/schemas/EmailFieldCreateField' + - $ref: '#/components/schemas/NumberFieldCreateField' + - $ref: '#/components/schemas/RatingFieldCreateField' + - $ref: '#/components/schemas/BooleanFieldCreateField' + - $ref: '#/components/schemas/DateFieldCreateField' + - $ref: '#/components/schemas/LastModifiedFieldCreateField' + - $ref: '#/components/schemas/LastModifiedByFieldCreateField' + - $ref: '#/components/schemas/CreatedOnFieldCreateField' + - $ref: '#/components/schemas/CreatedByFieldCreateField' + - $ref: '#/components/schemas/DurationFieldCreateField' + - $ref: '#/components/schemas/LinkRowFieldCreateField' + - $ref: '#/components/schemas/FileFieldCreateField' + - $ref: '#/components/schemas/SingleSelectFieldCreateField' + - $ref: '#/components/schemas/MultipleSelectFieldCreateField' + - $ref: '#/components/schemas/PhoneNumberFieldCreateField' + - $ref: '#/components/schemas/FormulaFieldCreateField' + - $ref: '#/components/schemas/CountFieldCreateField' + - $ref: '#/components/schemas/RollupFieldCreateField' + - $ref: '#/components/schemas/LookupFieldCreateField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldCreateField' + - $ref: '#/components/schemas/UUIDFieldCreateField' + - $ref: '#/components/schemas/AutonumberFieldCreateField' + - $ref: '#/components/schemas/PasswordFieldCreateField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldCreateField' + long_text: '#/components/schemas/LongTextFieldCreateField' + url: '#/components/schemas/URLFieldCreateField' + email: '#/components/schemas/EmailFieldCreateField' + number: '#/components/schemas/NumberFieldCreateField' + rating: '#/components/schemas/RatingFieldCreateField' + boolean: '#/components/schemas/BooleanFieldCreateField' + date: '#/components/schemas/DateFieldCreateField' + last_modified: '#/components/schemas/LastModifiedFieldCreateField' + last_modified_by: '#/components/schemas/LastModifiedByFieldCreateField' + created_on: '#/components/schemas/CreatedOnFieldCreateField' + created_by: '#/components/schemas/CreatedByFieldCreateField' + duration: '#/components/schemas/DurationFieldCreateField' + link_row: '#/components/schemas/LinkRowFieldCreateField' + file: '#/components/schemas/FileFieldCreateField' + single_select: '#/components/schemas/SingleSelectFieldCreateField' + multiple_select: '#/components/schemas/MultipleSelectFieldCreateField' + phone_number: '#/components/schemas/PhoneNumberFieldCreateField' + formula: '#/components/schemas/FormulaFieldCreateField' + count: '#/components/schemas/CountFieldCreateField' + rollup: '#/components/schemas/RollupFieldCreateField' + lookup: '#/components/schemas/LookupFieldCreateField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldCreateField' + uuid: '#/components/schemas/UUIDFieldCreateField' + autonumber: '#/components/schemas/AutonumberFieldCreateField' + password: '#/components/schemas/PasswordFieldCreateField' + FieldField: + oneOf: + - $ref: '#/components/schemas/TextFieldField' + - $ref: '#/components/schemas/LongTextFieldField' + - $ref: '#/components/schemas/URLFieldField' + - $ref: '#/components/schemas/EmailFieldField' + - $ref: '#/components/schemas/NumberFieldField' + - $ref: '#/components/schemas/RatingFieldField' + - $ref: '#/components/schemas/BooleanFieldField' + - $ref: '#/components/schemas/DateFieldField' + - $ref: '#/components/schemas/LastModifiedFieldField' + - $ref: '#/components/schemas/LastModifiedByFieldField' + - $ref: '#/components/schemas/CreatedOnFieldField' + - $ref: '#/components/schemas/CreatedByFieldField' + - $ref: '#/components/schemas/DurationFieldField' + - $ref: '#/components/schemas/LinkRowFieldField' + - $ref: '#/components/schemas/FileFieldField' + - $ref: '#/components/schemas/SingleSelectFieldField' + - $ref: '#/components/schemas/MultipleSelectFieldField' + - $ref: '#/components/schemas/PhoneNumberFieldField' + - $ref: '#/components/schemas/FormulaFieldField' + - $ref: '#/components/schemas/CountFieldField' + - $ref: '#/components/schemas/RollupFieldField' + - $ref: '#/components/schemas/LookupFieldField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldField' + - $ref: '#/components/schemas/UUIDFieldField' + - $ref: '#/components/schemas/AutonumberFieldField' + - $ref: '#/components/schemas/PasswordFieldField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldField' + long_text: '#/components/schemas/LongTextFieldField' + url: '#/components/schemas/URLFieldField' + email: '#/components/schemas/EmailFieldField' + number: '#/components/schemas/NumberFieldField' + rating: '#/components/schemas/RatingFieldField' + boolean: '#/components/schemas/BooleanFieldField' + date: '#/components/schemas/DateFieldField' + last_modified: '#/components/schemas/LastModifiedFieldField' + last_modified_by: '#/components/schemas/LastModifiedByFieldField' + created_on: '#/components/schemas/CreatedOnFieldField' + created_by: '#/components/schemas/CreatedByFieldField' + duration: '#/components/schemas/DurationFieldField' + link_row: '#/components/schemas/LinkRowFieldField' + file: '#/components/schemas/FileFieldField' + single_select: '#/components/schemas/SingleSelectFieldField' + multiple_select: '#/components/schemas/MultipleSelectFieldField' + phone_number: '#/components/schemas/PhoneNumberFieldField' + formula: '#/components/schemas/FormulaFieldField' + count: '#/components/schemas/CountFieldField' + rollup: '#/components/schemas/RollupFieldField' + lookup: '#/components/schemas/LookupFieldField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldField' + uuid: '#/components/schemas/UUIDFieldField' + autonumber: '#/components/schemas/AutonumberFieldField' + password: '#/components/schemas/PasswordFieldField' + FieldFieldSerializerWithRelatedFields: + oneOf: + - $ref: '#/components/schemas/TextFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LongTextFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/URLFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/EmailFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/NumberFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/RatingFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/BooleanFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/DateFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/LastModifiedFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/LastModifiedByFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/CreatedOnFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/CreatedByFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/DurationFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LinkRowFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/FileFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/SingleSelectFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/MultipleSelectFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/PhoneNumberFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/FormulaFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/CountFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/RollupFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LookupFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/MultipleCollaboratorsFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/UUIDFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/AutonumberFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/PasswordFieldFieldSerializerWithRelatedFields' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldFieldSerializerWithRelatedFields' + long_text: '#/components/schemas/LongTextFieldFieldSerializerWithRelatedFields' + url: '#/components/schemas/URLFieldFieldSerializerWithRelatedFields' + email: '#/components/schemas/EmailFieldFieldSerializerWithRelatedFields' + number: '#/components/schemas/NumberFieldFieldSerializerWithRelatedFields' + rating: '#/components/schemas/RatingFieldFieldSerializerWithRelatedFields' + boolean: '#/components/schemas/BooleanFieldFieldSerializerWithRelatedFields' + date: '#/components/schemas/DateFieldFieldSerializerWithRelatedFields' + last_modified: >- + #/components/schemas/LastModifiedFieldFieldSerializerWithRelatedFields + last_modified_by: >- + #/components/schemas/LastModifiedByFieldFieldSerializerWithRelatedFields + created_on: '#/components/schemas/CreatedOnFieldFieldSerializerWithRelatedFields' + created_by: '#/components/schemas/CreatedByFieldFieldSerializerWithRelatedFields' + duration: '#/components/schemas/DurationFieldFieldSerializerWithRelatedFields' + link_row: '#/components/schemas/LinkRowFieldFieldSerializerWithRelatedFields' + file: '#/components/schemas/FileFieldFieldSerializerWithRelatedFields' + single_select: >- + #/components/schemas/SingleSelectFieldFieldSerializerWithRelatedFields + multiple_select: >- + #/components/schemas/MultipleSelectFieldFieldSerializerWithRelatedFields + phone_number: >- + #/components/schemas/PhoneNumberFieldFieldSerializerWithRelatedFields + formula: '#/components/schemas/FormulaFieldFieldSerializerWithRelatedFields' + count: '#/components/schemas/CountFieldFieldSerializerWithRelatedFields' + rollup: '#/components/schemas/RollupFieldFieldSerializerWithRelatedFields' + lookup: '#/components/schemas/LookupFieldFieldSerializerWithRelatedFields' + multiple_collaborators: >- + #/components/schemas/MultipleCollaboratorsFieldFieldSerializerWithRelatedFields + uuid: '#/components/schemas/UUIDFieldFieldSerializerWithRelatedFields' + autonumber: '#/components/schemas/AutonumberFieldFieldSerializerWithRelatedFields' + password: '#/components/schemas/PasswordFieldFieldSerializerWithRelatedFields' + FieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + FileFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + FileFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + FileFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + FileFieldRequest: + type: object + properties: + visible_name: + type: string + description: A visually editable name for the field. + name: + type: string + description: Accepts the name of the already uploaded user file. + required: + - name + 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 + FileFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + FileImportJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + FileImportJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + database_id: + type: integer + description: Database id where the table will be created. + name: + type: string + description: The name of the new table. + maxLength: 255 + table_id: + type: integer + description: Table id where the data will be imported. + first_row_header: + type: boolean + default: false + report: + allOf: + - $ref: '#/components/schemas/Report' + description: Import error report. + required: + - database_id + - id + - progress_percentage + - report + - state + - type + FilterActionTypeEnum: + enum: + - create_group + - delete_group + - update_group + - order_groups + - create_application + - update_application + - delete_application + - order_applications + - duplicate_application + - install_template + - create_group_invitation + - delete_group_invitation + - accept_group_invitation + - reject_group_invitation + - update_group_invitation_permissions + - leave_group + - create_snapshot + - delete_snapshot + - restore_snapshot + - empty_trash + - restore_from_trash + - create_user + - update_user + - schedule_user_deletion + - cancel_user_deletion + - sign_in_user + - change_user_password + - send_reset_user_password + - reset_user_password + - create_db_token + - update_db_token_name + - update_db_token_permissions + - rotate_db_token_key + - delete_db_token_key + - create_webhook + - delete_webhook + - update_webhook + - export_table + - import_database_from_airtable + - create_table + - delete_table + - order_tables + - update_table + - duplicate_table + - create_row + - create_rows + - import_rows + - delete_row + - delete_rows + - move_row + - update_row + - update_rows + - create_view + - duplicate_view + - delete_view + - order_views + - update_view + - create_view_filter + - update_view_filter + - delete_view_filter + - create_view_sort + - update_view_sort + - delete_view_sort + - create_view_group + - update_view_group + - delete_view_group + - rotate_view_slug + - update_view_field_options + - create_decoration + - update_decoration + - delete_decoration + - create_view_filter_group + - update_view_filter_group + - delete_view_filter_group + - create_field + - delete_field + - update_field + - duplicate_field + - create_row_comment + - delete_row_comment + - update_row_comment + - create_team + - update_team + - delete_team + - create_team_subject + - delete_team_subject + - batch_assign_role + type: string + description: >- + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + FormContainerElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + FormContainerElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + FormContainerElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + FormContainerElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + FormViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The cover image that must be displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The logo image that must be displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + receive_notification_on_submit: + type: boolean + readOnly: true + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - receive_notification_on_submit + - slug + - type + FormViewFieldOptions: + type: object + properties: + name: + type: string + description: >- + By default, the name of the related field will be shown to the + visitor. Optionally another name can be used by setting this name. + maxLength: 255 + description: + type: string + description: If provided, then this value be will be shown under the field name. + enabled: + type: boolean + description: Indicates whether the field is included in the form. + required: + type: boolean + description: Indicates whether the field is required for the visitor to fill out. + show_when_matching_conditions: + type: boolean + description: Indicates whether this field is visible when the conditions are met. + condition_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all (AND) or any (OR) of the conditions should + match before shown. + + + * `AND` - And + + * `OR` - Or + order: + type: integer + maximum: 32767 + minimum: -32768 + description: The order that the field has in the form. Lower value is first. + conditions: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsCondition' + condition_groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + field_component: + type: string + description: >- + Indicates which field input component is used in the form. The value + is only used in the frontend, and can differ per field. + maxLength: 32 + FormViewFieldOptionsCondition: + type: object + properties: + id: + type: integer + field: + type: integer + type: + type: string + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + maxLength: 48 + value: + type: string + description: The filter value that must be compared to the field's value. + maxLength: 255 + group: + type: integer + nullable: true + required: + - field + - id + - type + FormViewFieldOptionsConditionGroup: + type: object + properties: + id: + type: integer + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + required: + - id + FormViewSubmitted: + type: object + properties: + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + row_id: + type: integer + required: + - row_id + FormViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The cover image that must be displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The logo image that must be displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + receive_notification_on_submit: + type: boolean + readOnly: true + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - receive_notification_on_submit + - slug + - table + - table_id + - type + FormatEnum: + enum: + - plain + - markdown + type: string + description: |- + * `plain` - Plain + * `markdown` - Markdown + FormulaFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - name + - nullable + - type + FormulaFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - id + - name + - nullable + - order + - read_only + - table_id + - type + FormulaFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + FormulaFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - nullable + FormulaTypeEnum: + enum: + - invalid + - text + - char + - button + - link + - date_interval + - duration + - date + - boolean + - number + - array + - single_select + - multiple_select + - single_file + type: string + description: |- + * `invalid` - invalid + * `text` - text + * `char` - char + * `button` - button + * `link` - link + * `date_interval` - date_interval + * `duration` - duration + * `date` - date + * `boolean` - boolean + * `number` - number + * `array` - array + * `single_select` - single_select + * `multiple_select` - multiple_select + * `single_file` - single_file + FullHealthCheck: + type: object + properties: + passing: + type: boolean + readOnly: true + description: >- + False if any of the critical service health checks are failing, true + otherwise. + checks: + type: object + additionalProperties: + type: string + readOnly: true + description: >- + An object keyed by the name of the health check and the value being + the result. + required: + - checks + - passing + GalleryViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + GalleryViewFieldOptions: + 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 form. Lower value is first. + GalleryViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + GeneratedConditional_colorCreateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + default: '' + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - type + GeneratedConditional_colorUpdateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + GeneratedConditional_colorViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: + type: string + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + maxLength: 255 + value_provider_type: + type: string + description: The value provider type that gives the value to the decorator. + maxLength: 255 + value_provider_conf: + allOf: + - $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - id + GeneratedSingle_select_colorCreateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + default: '' + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/SelectColorValueProviderConf' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - type + GeneratedSingle_select_colorUpdateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/SelectColorValueProviderConf' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + GeneratedSingle_select_colorViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: + type: string + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + maxLength: 255 + value_provider_type: + type: string + description: The value provider type that gives the value to the decorator. + maxLength: 255 + value_provider_conf: + allOf: + - $ref: '#/components/schemas/SelectColorValueProviderConf' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - id + GitHubAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + GitLabAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + base_url: + type: string + format: uri + description: Base URL of the authorization server + maxLength: 200 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - base_url + - client_id + - id + - name + - secret + - type + GoogleAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + GridViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + GridViewFieldOptions: + type: object + properties: + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The width of the table field in the related view. + hidden: + type: boolean + description: Whether or not the field should be hidden in the current view. + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position that the field has within the view, lowest first. If + there is another field with the same order value then the field with + the lowest id must be shown first. + aggregation_type: + type: string + description: >- + Indicates how the field value is aggregated. This value is different + from the `aggregation_raw_type`. The `aggregation_raw_type` is the + value extracted from the database, while the `aggregation_type` can + implies further calculations. For example: if you want to compute an + average, `sum` is going to be the `aggregation_raw_type`, the value + extracted from database, and `sum / row_count` will be the + aggregation result displayed to the user. This aggregation_type + should be used by the client to compute the final value. + maxLength: 48 + aggregation_raw_type: + description: >- + Indicates how to compute the raw aggregation value from database. + This type must be registered in the backend prior to use it. + + + * `empty_count` - empty_count + + * `not_empty_count` - not_empty_count + + * `unique_count` - unique_count + + * `min` - min + + * `max` - max + + * `sum` - sum + + * `average` - average + + * `median` - median + + * `decile` - decile + + * `variance` - variance + + * `std_dev` - std_dev + oneOf: + - $ref: '#/components/schemas/AggregationRawTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + GridViewFilter: + type: object + properties: + field_ids: + type: array + items: + type: integer + description: >- + Only the fields related to the provided ids are added to the + response. If None are provided all fields will be returned. + row_ids: + type: array + items: + type: integer + description: Only rows related to the provided ids are added to the response. + required: + - row_ids + GridViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + HeadingElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - order + - type + HeadingElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - id + - order + - page_id + - parent_element_id + - type + HeadingElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - id + - order + - parent_element_id + - type + HeadingElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + IFrameElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + required: + - order + - type + IFrameElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + required: + - id + - order + - page_id + - parent_element_id + - type + IFrameElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + required: + - id + - order + - parent_element_id + - type + IFrameElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + IdEnum: + enum: + - create_group + - delete_group + - update_group + - order_groups + - create_application + - update_application + - delete_application + - order_applications + - duplicate_application + - install_template + - create_group_invitation + - delete_group_invitation + - accept_group_invitation + - reject_group_invitation + - update_group_invitation_permissions + - leave_group + - create_snapshot + - delete_snapshot + - restore_snapshot + - empty_trash + - restore_from_trash + - create_user + - update_user + - schedule_user_deletion + - cancel_user_deletion + - sign_in_user + - change_user_password + - send_reset_user_password + - reset_user_password + - create_db_token + - update_db_token_name + - update_db_token_permissions + - rotate_db_token_key + - delete_db_token_key + - create_webhook + - delete_webhook + - update_webhook + - export_table + - import_database_from_airtable + - create_table + - delete_table + - order_tables + - update_table + - duplicate_table + - create_row + - create_rows + - import_rows + - delete_row + - delete_rows + - move_row + - update_row + - update_rows + - create_view + - duplicate_view + - delete_view + - order_views + - update_view + - create_view_filter + - update_view_filter + - delete_view_filter + - create_view_sort + - update_view_sort + - delete_view_sort + - create_view_group + - update_view_group + - delete_view_group + - rotate_view_slug + - update_view_field_options + - create_decoration + - update_decoration + - delete_decoration + - create_view_filter_group + - update_view_filter_group + - delete_view_filter_group + - create_field + - delete_field + - update_field + - duplicate_field + - create_row_comment + - delete_row_comment + - update_row_comment + - create_team + - update_team + - delete_team + - create_team_subject + - delete_team_subject + - batch_assign_role + type: string + description: >- + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + ImageElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The image file + image_url: + type: string + description: A link to the image file + maxLength: 1000 + alt_text: + type: string + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + nullable: true + default: 100 + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + required: + - order + - type + ImageElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + $ref: '#/components/schemas/UserFile' + image_url: + type: string + default: '' + description: A link to the image file + alt_text: + type: string + default: '' + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + maximum: 100 + minimum: 0 + nullable: true + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + required: + - id + - order + - page_id + - parent_element_id + - type + ImageElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + $ref: '#/components/schemas/UserFile' + image_url: + type: string + default: '' + description: A link to the image file + alt_text: + type: string + default: '' + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + maximum: 100 + minimum: 0 + nullable: true + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + required: + - id + - order + - parent_element_id + - type + ImageElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The image file + image_url: + type: string + description: A link to the image file + maxLength: 1000 + alt_text: + type: string + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + nullable: true + default: 100 + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + ImageSourceTypeEnum: + enum: + - upload + - url + type: string + description: |- + * `upload` - Upload + * `url` - Url + InputTextElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + required: + - order + - type + InputTextElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + required: + - id + - order + - page_id + - parent_element_id + - type + InputTextElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + required: + - id + - order + - parent_element_id + - type + InputTextElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + InstallTemplateJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + group_id: + type: integer + description: The ID of the group where the template will be installed. + workspace_id: + type: integer + description: The ID of the workspace where the template will be installed. + template_id: + type: integer + description: The template ID that will be installed. + required: + - template_id + - type + InstallTemplateJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + template: + allOf: + - $ref: '#/components/schemas/Template' + readOnly: true + installed_applications: + type: object + additionalProperties: {} + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + required: + - group + - id + - installed_applications + - progress_percentage + - state + - template + - type + - workspace + InstanceId: + type: object + properties: + instance_id: + type: string + readOnly: true + pattern: ^[-a-zA-Z0-9_]+$ + required: + - instance_id + IntegrationCreateIntegration: + oneOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationCreateIntegration' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowIntegrationCreateIntegration' + IntegrationIntegration: + oneOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationIntegration' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowIntegrationIntegration' + Integration_Service: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRow' + - $ref: '#/components/schemas/LocalBaserowListRows' + - $ref: '#/components/schemas/LocalBaserowUpsertRow' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRow' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRows' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRow' + Integration_ServiceCreateDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowCreateDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsCreateDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowCreateDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowCreateDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsCreateDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowCreateDataSource' + Integration_ServiceDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowDataSource' + Integration_ServicePublicDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowPublicDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsPublicDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowPublicDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowPublicDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsPublicDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowPublicDataSource' + Integration_ServiceService: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowService' + - $ref: '#/components/schemas/LocalBaserowListRowsService' + - $ref: '#/components/schemas/LocalBaserowUpsertRowService' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowService' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsService' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowService' + Job: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + Job_TypeCreateJob: + oneOf: + - $ref: '#/components/schemas/DuplicateApplicationJobCreateJob' + - $ref: '#/components/schemas/InstallTemplateJobCreateJob' + - $ref: '#/components/schemas/CreateSnapshotJobCreateJob' + - $ref: '#/components/schemas/RestoreSnapshotJobCreateJob' + - $ref: '#/components/schemas/AirtableImportJobCreateJob' + - $ref: '#/components/schemas/FileImportJobCreateJob' + - $ref: '#/components/schemas/DuplicateTableJobCreateJob' + - $ref: '#/components/schemas/DuplicateFieldJobCreateJob' + - $ref: '#/components/schemas/DuplicatePageJobCreateJob' + - $ref: '#/components/schemas/PublishDomainJobCreateJob' + - $ref: '#/components/schemas/AuditLogExportJobCreateJob' + discriminator: + propertyName: type + mapping: + duplicate_application: '#/components/schemas/DuplicateApplicationJobCreateJob' + install_template: '#/components/schemas/InstallTemplateJobCreateJob' + create_snapshot: '#/components/schemas/CreateSnapshotJobCreateJob' + restore_snapshot: '#/components/schemas/RestoreSnapshotJobCreateJob' + airtable: '#/components/schemas/AirtableImportJobCreateJob' + file_import: '#/components/schemas/FileImportJobCreateJob' + duplicate_table: '#/components/schemas/DuplicateTableJobCreateJob' + duplicate_field: '#/components/schemas/DuplicateFieldJobCreateJob' + duplicate_page: '#/components/schemas/DuplicatePageJobCreateJob' + publish_domain: '#/components/schemas/PublishDomainJobCreateJob' + audit_log_export: '#/components/schemas/AuditLogExportJobCreateJob' + Job_TypeJob: + oneOf: + - $ref: '#/components/schemas/DuplicateApplicationJobJob' + - $ref: '#/components/schemas/InstallTemplateJobJob' + - $ref: '#/components/schemas/CreateSnapshotJobJob' + - $ref: '#/components/schemas/RestoreSnapshotJobJob' + - $ref: '#/components/schemas/AirtableImportJobJob' + - $ref: '#/components/schemas/FileImportJobJob' + - $ref: '#/components/schemas/DuplicateTableJobJob' + - $ref: '#/components/schemas/DuplicateFieldJobJob' + - $ref: '#/components/schemas/DuplicatePageJobJob' + - $ref: '#/components/schemas/PublishDomainJobJob' + - $ref: '#/components/schemas/AuditLogExportJobJob' + discriminator: + propertyName: type + mapping: + duplicate_application: '#/components/schemas/DuplicateApplicationJobJob' + install_template: '#/components/schemas/InstallTemplateJobJob' + create_snapshot: '#/components/schemas/CreateSnapshotJobJob' + restore_snapshot: '#/components/schemas/RestoreSnapshotJobJob' + airtable: '#/components/schemas/AirtableImportJobJob' + file_import: '#/components/schemas/FileImportJobJob' + duplicate_table: '#/components/schemas/DuplicateTableJobJob' + duplicate_field: '#/components/schemas/DuplicateFieldJobJob' + duplicate_page: '#/components/schemas/DuplicatePageJobJob' + publish_domain: '#/components/schemas/PublishDomainJobJob' + audit_log_export: '#/components/schemas/AuditLogExportJobJob' + KanbanViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + single_select_field: + type: integer + nullable: true + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + KanbanViewExampleResponse: + type: object + properties: + rows: + type: object + additionalProperties: + $ref: '#/components/schemas/KanbanViewExampleResponseStack' + description: >- + Every select option related to the view's single select field can + have its own entry like this. + field_options: + type: array + items: + $ref: '#/components/schemas/KanbanViewFieldOptions' + 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 + KanbanViewExampleResponseStack: + 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 related with the provided + `limit` and `offset`. + required: + - count + - results + KanbanViewFieldOptions: + 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. + KanbanViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + single_select_field: + type: integer + nullable: true + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + LastModifiedByFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + LastModifiedByFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + LastModifiedByFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + LastModifiedByFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + LastModifiedFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + required: + - type + LastModifiedFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + LastModifiedFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + LastModifiedFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + License: + type: object + properties: + id: + type: integer + readOnly: true + license_id: + type: string + description: Unique identifier of the license. + is_active: + type: boolean + description: Indicates if the backend deems the license valid. + last_check: + type: string + format: date-time + nullable: true + valid_from: + type: string + format: date-time + description: From which timestamp the license becomes active. + valid_through: + type: string + format: date-time + description: Until which timestamp the license is active. + free_users_count: + type: integer + readOnly: true + description: The amount of free users that are currently using the license. + seats_taken: + type: integer + readOnly: true + description: The amount of users that are currently using the license. + seats: + type: integer + description: The maximum amount of users that can use the license. + product_code: + type: string + description: The product code that indicates what the license unlocks. + issued_on: + type: string + format: date-time + description: >- + The date when the license was issued. It could be that a new license + is issued with the same `license_id` because it was updated. In that + case, the one that has been issued last should be used. + issued_to_email: + type: string + format: email + description: Indicates to which email address the license has been issued. + issued_to_name: + type: string + description: Indicates to whom the license has been issued. + required: + - free_users_count + - id + - is_active + - issued_on + - issued_to_email + - issued_to_name + - license_id + - product_code + - seats + - seats_taken + - valid_from + - valid_through + LicenseUser: + type: object + properties: + id: + type: integer + readOnly: true + first_name: + type: string + maxLength: 150 + email: + type: string + format: email + title: Email address + maxLength: 254 + required: + - id + LicenseUserLookup: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + description: The name and the email address of the user. + readOnly: true + required: + - id + - value + LicenseWithUsers: + type: object + properties: + id: + type: integer + readOnly: true + license_id: + type: string + description: Unique identifier of the license. + is_active: + type: boolean + description: Indicates if the backend deems the license valid. + last_check: + type: string + format: date-time + nullable: true + valid_from: + type: string + format: date-time + description: From which timestamp the license becomes active. + valid_through: + type: string + format: date-time + description: Until which timestamp the license is active. + free_users_count: + type: integer + readOnly: true + description: The amount of free users that are currently using the license. + seats_taken: + type: integer + readOnly: true + description: The amount of users that are currently using the license. + seats: + type: integer + description: The maximum amount of users that can use the license. + product_code: + type: string + description: The product code that indicates what the license unlocks. + issued_on: + type: string + format: date-time + description: >- + The date when the license was issued. It could be that a new license + is issued with the same `license_id` because it was updated. In that + case, the one that has been issued last should be used. + issued_to_email: + type: string + format: email + description: Indicates to which email address the license has been issued. + issued_to_name: + type: string + description: Indicates to whom the license has been issued. + users: + type: array + items: + $ref: '#/components/schemas/LicenseUser' + readOnly: true + required: + - free_users_count + - id + - is_active + - issued_on + - issued_to_email + - issued_to_name + - license_id + - product_code + - seats + - seats_taken + - users + - valid_from + - valid_through + LinkElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + LinkElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + LinkElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + LinkElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + LinkRowFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + has_related_field: + type: boolean + required: + - name + - type + LinkRowFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_related_field_id: + type: integer + nullable: true + description: The id of the related field. + readOnly: true + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + link_row_related_field: + type: integer + readOnly: true + description: (Deprecated) The id of the related field. + required: + - id + - link_row_related_field + - link_row_related_field_id + - name + - order + - read_only + - table_id + - type + LinkRowFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_related_field_id: + type: integer + nullable: true + description: The id of the related field. + readOnly: true + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + link_row_related_field: + type: integer + readOnly: true + description: (Deprecated) The id of the related field. + required: + - id + - link_row_related_field + - link_row_related_field_id + - name + - order + - read_only + - related_fields + - table_id + - type + LinkRowFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + has_related_field: + type: boolean + 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. + required: + - id + ListWorkspaceUsersWithMemberData: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + id: + type: integer + readOnly: true + name: + type: string + readOnly: true + description: User defined name. + email: + type: string + readOnly: true + description: User email. + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: The workspace that the user has access to. + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + created_on: + type: string + format: date-time + readOnly: true + user_id: + type: integer + description: The user that has access to the workspace. + readOnly: true + to_be_deleted: + type: boolean + description: True if user account is pending deletion. + teams: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserEnterpriseTeam' + description: >- + Enterprise only: a list of team IDs and names, which this workspace + user belongs to in this workspace. + role_uid: + type: string + nullable: true + description: >- + Enterprise or advanced only: the uid of the role that is assigned to + this workspace user in this workspace. + highest_role_uid: + type: string + nullable: true + description: >- + Enterprise or advanced only: the highest role uid assigned to this + user in this workspace on anything, including roles from teams. + required: + - created_on + - email + - group + - id + - name + - to_be_deleted + - user_id + - workspace + LocalBaserowContextData: + type: object + properties: + databases: + type: array + items: + $ref: '#/components/schemas/DatabaseApplication' + required: + - databases + LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_ServiceService' + description: The service which this workflow action is associated with. + required: + - element_id + - event + - id + - order + - service + - type + LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + required: + - event + - id + - type + LocalBaserowCreateRowWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + LocalBaserowField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + type: + type: string + readOnly: true + description: The type of the related field. + required: + - id + - name + - table_id + - type + LocalBaserowGetRow: + type: object + properties: + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + LocalBaserowGetRowCreateDataSource: + type: object + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC03Enum' + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + name: + type: string + nullable: true + description: Human name for this data source. + page_id: + type: integer + nullable: true + description: Page this data source is linked to. + before_id: + type: integer + description: >- + If provided, creates the data_source before the data_source with the + given id. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - row_id + - table_id + - view_id + LocalBaserowGetRowDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the data source. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - name + - order + - page_id + - row_id + - schema + - table_id + - type + - view_id + LocalBaserowGetRowPublicDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + type: + type: string + readOnly: true + description: The type of the data source. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - name + - order + - page_id + - row_id + - table_id + - type + - view_id + LocalBaserowGetRowService: + type: object + description: Basic service serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the service. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - row_id + - schema + - table_id + - type + - view_id + LocalBaserowGetRowUpdateDataSource: + type: object + properties: + integration_id: + type: integer + nullable: true + description: The related integration id. + name: + type: string + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - row_id + - table_id + - view_id + LocalBaserowIntegrationCreateIntegration: + type: object + description: >- + This serializer allow to set the type of an integration and the + integration id + + before which we want to insert the new integration. + properties: + before_id: + type: integer + description: >- + If provided, creates the integration before the integration with the + given id. + type: + allOf: + - $ref: '#/components/schemas/Type5f7Enum' + description: |- + The type of the integration. + + * `local_baserow` - local_baserow + name: + type: string + maxLength: 255 + context_data: + allOf: + - $ref: '#/components/schemas/LocalBaserowContextData' + readOnly: true + authorized_user: + allOf: + - $ref: '#/components/schemas/SubjectUser' + readOnly: true + required: + - authorized_user + - context_data + - name + - type + LocalBaserowIntegrationIntegration: + type: object + description: Basic integration serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + application_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the integration. + name: + type: string + readOnly: true + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + context_data: + allOf: + - $ref: '#/components/schemas/LocalBaserowContextData' + readOnly: true + authorized_user: + allOf: + - $ref: '#/components/schemas/SubjectUser' + readOnly: true + required: + - application_id + - authorized_user + - context_data + - id + - name + - order + - type + LocalBaserowIntegrationUpdateIntegration: + type: object + properties: + name: + type: string + maxLength: 255 + context_data: + allOf: + - $ref: '#/components/schemas/LocalBaserowContextData' + readOnly: true + authorized_user: + allOf: + - $ref: '#/components/schemas/SubjectUser' + readOnly: true + required: + - authorized_user + - context_data + LocalBaserowListRows: + type: object + properties: + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + LocalBaserowListRowsCreateDataSource: + type: object + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC03Enum' + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + name: + type: string + nullable: true + description: Human name for this data source. + page_id: + type: integer + nullable: true + description: Page this data source is linked to. + before_id: + type: integer + description: >- + If provided, creates the data_source before the data_source with the + given id. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - table_id + - view_id + LocalBaserowListRowsDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the data source. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - name + - order + - page_id + - schema + - table_id + - type + - view_id + LocalBaserowListRowsPublicDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + type: + type: string + readOnly: true + description: The type of the data source. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - name + - order + - page_id + - table_id + - type + - view_id + LocalBaserowListRowsService: + type: object + description: Basic service serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the service. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - schema + - table_id + - type + - view_id + LocalBaserowListRowsUpdateDataSource: + type: object + properties: + integration_id: + type: integer + nullable: true + description: The related integration id. + name: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - table_id + - view_id + LocalBaserowPasswordAppAuthProviderAppAuthProvider: + type: object + description: Basic app_auth_provider serializer mostly for returned values. + properties: + type: + type: string + readOnly: true + description: The type of the app_auth_provider. + id: + type: integer + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + password_field_id: + type: integer + nullable: true + description: The id of the field to use as password for the user account. + required: + - id + - type + LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider: + type: object + description: >- + This serializer allow to set the type of an app_auth_provider and the + + app_auth_provider id before which we want to insert the new + app_auth_provider. + properties: + type: + allOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProviderTypeEnum + description: |- + The type of the app_auth_provider. + + * `local_baserow_password` - local_baserow_password + user_source_id: + type: integer + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + password_field_id: + type: integer + nullable: true + description: The id of the field to use as password for the user account. + required: + - type + - user_source_id + LocalBaserowPasswordAppAuthProviderBaseAppAuthProviderTypeEnum: + enum: + - local_baserow_password + type: string + description: '* `local_baserow_password` - local_baserow_password' + LocalBaserowTableServiceFieldMapping: + type: object + properties: + field_id: + type: integer + description: The primary key of the associated database table field. + value: + type: string + required: + - field_id + - value + LocalBaserowTableServiceFilter: + type: object + properties: + id: + type: integer + readOnly: true + order: + type: integer + readOnly: true + field: + type: integer + description: >- + The database Field, in the LocalBaserowTableService, which we would + like to filter upon. + type: + type: string + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + maxLength: 48 + value: + type: string + description: A formula for the filter's value. + value_is_formula: + type: boolean + default: false + description: Indicates whether the value is a formula or not. + required: + - field + - id + - order + - type + - value + LocalBaserowTableServiceSort: + type: object + properties: + id: + type: integer + readOnly: true + field: + type: integer + description: >- + The database Field, in the LocalBaserowTableService service, which + we would like to sort upon. + order: + type: integer + readOnly: true + order_by: + allOf: + - $ref: '#/components/schemas/OrderByEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + - id + - order + LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_ServiceService' + description: The service which this workflow action is associated with. + required: + - element_id + - event + - id + - order + - service + - type + LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + required: + - event + - id + - type + LocalBaserowUpdateRowWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + LocalBaserowUpsertRow: + type: object + properties: + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + LocalBaserowUpsertRowCreateDataSource: + type: object + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC03Enum' + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + name: + type: string + nullable: true + description: Human name for this data source. + page_id: + type: integer + nullable: true + description: Page this data source is linked to. + before_id: + type: integer + description: >- + If provided, creates the data_source before the data_source with the + given id. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + LocalBaserowUpsertRowDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + type: + type: string + readOnly: true + description: The type of the data source. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + required: + - id + - name + - order + - page_id + - schema + - type + LocalBaserowUpsertRowPublicDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + type: + type: string + readOnly: true + description: The type of the data source. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + required: + - id + - name + - order + - page_id + - type + LocalBaserowUpsertRowService: + type: object + description: Basic service serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + type: + type: string + readOnly: true + description: The type of the service. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + required: + - id + - schema + - type + LocalBaserowUpsertRowUpdateDataSource: + type: object + properties: + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + name: + type: string + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + LocalBaserowUserSourceBasePublicUserSource: + type: object + description: Basic user source serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the user_source. + name: + type: string + readOnly: true + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + required: + - id + - name + - order + - type + LocalBaserowUserSourceCreateUserSource: + type: object + description: >- + This serializer allow to set the type of an user_source and the + user_source id + + before which we want to insert the new user_source. + properties: + before_id: + type: integer + description: >- + If provided, creates the user_source before the user_source with the + given id. + type: + allOf: + - $ref: '#/components/schemas/Type5f7Enum' + description: |- + The type of the user_source. + + * `local_baserow` - local_baserow + name: + type: string + maxLength: 255 + integration_id: + type: integer + description: The related integration id. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderBaseAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + required: + - integration_id + - name + - type + LocalBaserowUserSourceUpdateUserSource: + type: object + description: A serializer to update a user source. + properties: + name: + type: string + maxLength: 255 + integration_id: + type: integer + description: The related integration id. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderBaseAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + LocalBaserowUserSourceUserSource: + type: object + description: Basic user_source serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + application_id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The Integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the user_source. + name: + type: string + readOnly: true + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + required: + - application_id + - id + - integration_id + - name + - order + - type + LocalBaserowView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + required: + - id + - name + - table_id + LogoutWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + required: + - element_id + - event + - id + - order + - type + LogoutWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + required: + - event + - id + - type + LogoutWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + LongTextFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + required: + - name + - type + LongTextFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + required: + - id + - name + - order + - read_only + - table_id + - type + LongTextFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + LongTextFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + LookupFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + LookupFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + LookupFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + LookupFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + ModeC5eEnum: + enum: + - form + - survey + type: string + description: |- + * `form` - form + * `survey` - survey + ModeFf8Enum: + enum: + - all + - mentions + type: string + description: |- + * `all` - all + * `mentions` - mentions + MultipleCollaboratorsFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + notify_user_when_added: + type: boolean + required: + - name + - type + MultipleCollaboratorsFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + notify_user_when_added: + type: boolean + required: + - id + - name + - order + - read_only + - table_id + - type + MultipleCollaboratorsFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + notify_user_when_added: + type: boolean + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + MultipleCollaboratorsFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + notify_user_when_added: + type: boolean + MultipleSelectFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - name + - type + MultipleSelectFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - table_id + - type + MultipleSelectFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + MultipleSelectFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + NavigationTypeEnum: + enum: + - page + - custom + type: string + description: |- + * `page` - Page + * `custom` - Custom + NotificationRecipient: + type: object + description: >- + Serialize notification data along with the recipient information about + the + + read status for the given user. + properties: + id: + type: integer + description: The id of the notification. + type: + type: string + description: The type of notification + sender: + allOf: + - $ref: '#/components/schemas/Sender' + description: The user that sent the notification. + workspace: + type: string + readOnly: true + description: The workspace that the notification is in (if any). + created_on: + type: string + format: date-time + description: The date and time that the notification was created. + read: + type: boolean + description: 'If True, then the notification has been read by the user. ' + data: + type: object + additionalProperties: {} + description: The data associated with the notification. + required: + - created_on + - data + - id + - sender + - type + - workspace + NotificationWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + required: + - element_id + - event + - id + - order + - type + NotificationWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + required: + - event + - id + - type + NotificationWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + NullEnum: + enum: + - null + NumberDecimalPlacesEnum: + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + type: integer + description: |- + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + NumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + required: + - name + - type + NumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + required: + - id + - name + - order + - read_only + - table_id + - type + NumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + NumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + OpenApiRoleAssignment: + type: object + description: Serializer for RoleAssignment used for the Open API spec + properties: + id: + type: integer + readOnly: true + role: + type: string + description: >- + The uid of the role assigned to the user or team in the given + workspace. + subject: + allOf: + - $ref: '#/components/schemas/OpenApiSubjectField' + description: >- + The structure of the subject field depends on the subject + typereturned and will have additional fields accordingly + subject_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The subject ID. + scope_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The unique scope ID. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectTypeB9aEnum' + description: |- + The subject type. + + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + scope_type: + allOf: + - $ref: '#/components/schemas/ScopeTypeEnum' + description: >- + The type of the scope object. The scope object limit the role + assignment to this scope and all its descendants. + + + * `core` - core + + * `application` - application + + * `workspace` - workspace + + * `workspace_invitation` - workspace_invitation + + * `snapshot` - snapshot + + * `workspace_user` - workspace_user + + * `integration` - integration + + * `user_source` - user_source + + * `database` - database + + * `database_table` - database_table + + * `database_field` - database_field + + * `database_view` - database_view + + * `database_view_decoration` - database_view_decoration + + * `database_view_sort` - database_view_sort + + * `database_view_group` - database_view_group + + * `database_view_filter` - database_view_filter + + * `database_view_filter_group` - database_view_filter_group + + * `token` - token + + * `builder` - builder + + * `builder_page` - builder_page + + * `builder_element` - builder_element + + * `builder_domain` - builder_domain + + * `builder_data_source` - builder_data_source + + * `builder_workflow_action` - builder_workflow_action + + * `team` - team + + * `team_subject` - team_subject + + * `license` - license + required: + - id + - role + - scope_id + - scope_type + - subject + - subject_id + - subject_type + OpenApiSubjectField: + type: object + properties: + id: + type: integer + required: + - id + OpenIdConnectAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + base_url: + type: string + format: uri + description: Base URL of the authorization server + maxLength: 200 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - base_url + - client_id + - id + - name + - secret + - type + OpenPageWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + url: + type: string + default: '' + description: The url to open. Must be an formula. + required: + - element_id + - event + - id + - order + - type + OpenPageWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + url: + type: string + default: '' + description: The url to open. Must be an formula. + required: + - event + - id + - type + OpenPageWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + url: + type: string + default: '' + description: The url to open. Must be an formula. + OrderApplications: + type: object + properties: + application_ids: + type: array + items: + type: integer + description: Application ids in the desired order. + required: + - application_ids + OrderByEnum: + enum: + - ASC + - DESC + type: string + description: |- + * `ASC` - Ascending + * `DESC` - Descending + OrderDomains: + type: object + properties: + domain_ids: + type: array + items: + type: integer + description: The ids of the domains in the order they are supposed to be set in + required: + - domain_ids + OrderEnum: + enum: + - ASC + - DESC + type: string + description: |- + * `ASC` - Ascending + * `DESC` - Descending + OrderPages: + type: object + properties: + page_ids: + type: array + items: + type: integer + description: The ids of the pages in the order they are supposed to be set in + required: + - page_ids + OrderTables: + type: object + properties: + table_ids: + type: array + items: + type: integer + description: Table ids in the desired order. + required: + - table_ids + OrderViews: + type: object + properties: + view_ids: + type: array + items: + type: integer + description: View ids in the desired order. + minItems: 1 + required: + - view_ids + OrderWorkflowActions: + type: object + properties: + workflow_action_ids: + type: array + items: + type: integer + description: >- + The ids of the workflow actions in the order they are supposed to be + set in + element_id: + type: integer + description: The element the workflow actions belong to + required: + - workflow_action_ids + OrderWorkspaces: + type: object + properties: + workspaces: + type: array + items: + type: integer + description: Workspace ids in the desired order. + required: + - workspaces + OwnershipTypeEnum: + enum: + - collaborative + - personal + type: string + description: |- + * `collaborative` - collaborative + * `personal` - personal + Page: + type: object + description: |- + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicPageSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + builder_id: + type: integer + readOnly: true + required: + - builder_id + - id + - name + - order + - path + PageParameterValue: + type: object + properties: + name: + type: string + value: + type: string + required: + - name + - value + PaginationSerializerAuditLog: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/AuditLog' + required: + - count + - next + - previous + - results + PaginationSerializerAuditLogUser: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/AuditLogUser' + required: + - count + - next + - previous + - results + PaginationSerializerAuditLogWorkspace: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/AuditLogWorkspace' + required: + - count + - next + - previous + - results + PaginationSerializerExampleRowResponseSerializerWithUserFieldNames: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + required: + - count + - next + - previous + - results + PaginationSerializerLicenseUserLookup: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/LicenseUserLookup' + required: + - count + - next + - previous + - results + PaginationSerializerLinkRowValue: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/LinkRowValue' + required: + - count + - next + - previous + - results + PaginationSerializerNotificationRecipient: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/NotificationRecipient' + required: + - count + - next + - previous + - results + PaginationSerializerRowComment: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/RowComment' + required: + - count + - next + - previous + - results + PaginationSerializerRowHistory: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/RowHistory' + required: + - count + - next + - previous + - results + PaginationSerializerTrashContents: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/TrashContents' + required: + - count + - next + - previous + - results + PaginationSerializerUserAdminResponse: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/UserAdminResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + 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. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWithGridViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + 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. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWorkspacesAdminResponse: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/WorkspacesAdminResponse' + required: + - count + - next + - previous + - results + PasswordAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + description: The email domain (if any) registered with this password provider. + enabled: + type: boolean + description: Whether the provider is enabled or not. + required: + - id + - type + PasswordFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + PasswordFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + PasswordFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + PasswordFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + PatchedAccount: + type: object + description: This serializer must be kept in sync with `UserSerializer`. + properties: + first_name: + type: string + maxLength: 150 + minLength: 2 + language: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + maxLength: 10 + minLength: 2 + email_notification_frequency: + allOf: + - $ref: '#/components/schemas/EmailNotificationFrequencyEnum' + description: >- + The maximum frequency at which the user wants to receive email + notifications. + + + * `instant` - instant + + * `daily` - daily + + * `weekly` - weekly + + * `never` - never + PatchedApplicationBaseApplicationUpdatePolymorphic: + oneOf: + - $ref: '#/components/schemas/DatabaseBaseApplicationUpdatePolymorphic' + - $ref: '#/components/schemas/BuilderBaseApplicationUpdatePolymorphic' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseBaseApplicationUpdatePolymorphic' + builder: '#/components/schemas/BuilderBaseApplicationUpdatePolymorphic' + PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions: + anyOf: + - $ref: >- + #/components/schemas/NotificationWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/OpenPageWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LogoutWorkflowActionUpdateBuilderWorkflowActions + PatchedCombinedThemeConfigBlocks: + type: object + properties: + primary_color: + type: string + maxLength: 9 + secondary_color: + type: string + maxLength: 9 + border_color: + type: string + maxLength: 9 + heading_1_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_1_color: + type: string + maxLength: 9 + heading_2_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_2_color: + type: string + maxLength: 9 + heading_3_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_3_color: + type: string + maxLength: 9 + PatchedDecorator_Value_Provider_TypeUpdateViewDecoration: + oneOf: + - $ref: >- + #/components/schemas/GeneratedSingle_select_colorUpdateViewDecoration + - $ref: '#/components/schemas/GeneratedConditional_colorUpdateViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: >- + #/components/schemas/GeneratedSingle_select_colorUpdateViewDecoration + conditional_color: '#/components/schemas/GeneratedConditional_colorUpdateViewDecoration' + PatchedElement_TypeUpdateElement: + anyOf: + - $ref: '#/components/schemas/HeadingElementUpdateElement' + - $ref: '#/components/schemas/TextElementUpdateElement' + - $ref: '#/components/schemas/LinkElementUpdateElement' + - $ref: '#/components/schemas/ImageElementUpdateElement' + - $ref: '#/components/schemas/InputTextElementUpdateElement' + - $ref: '#/components/schemas/ColumnElementUpdateElement' + - $ref: '#/components/schemas/ButtonElementUpdateElement' + - $ref: '#/components/schemas/TableElementUpdateElement' + - $ref: '#/components/schemas/FormContainerElementUpdateElement' + - $ref: '#/components/schemas/DropdownElementUpdateElement' + - $ref: '#/components/schemas/CheckboxElementUpdateElement' + - $ref: '#/components/schemas/IFrameElementUpdateElement' + - $ref: '#/components/schemas/AuthFormElementUpdateElement' + PatchedExampleBatchUpdateRowsRequest: + type: object + properties: + items: + type: array + items: + $ref: >- + #/components/schemas/ExampleBatchUpdateRowRequestSerializerWithUserFieldNames + maxItems: 200 + minItems: 1 + PatchedExampleUpdateRowRequestSerializerWithUserFieldNames: + type: object + properties: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + nullable: true + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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/FileFieldRequest' + nullable: true + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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: + type: integer + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + maxLength: 100 + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + PatchedFieldUpdateField: + oneOf: + - $ref: '#/components/schemas/TextFieldUpdateField' + - $ref: '#/components/schemas/LongTextFieldUpdateField' + - $ref: '#/components/schemas/URLFieldUpdateField' + - $ref: '#/components/schemas/EmailFieldUpdateField' + - $ref: '#/components/schemas/NumberFieldUpdateField' + - $ref: '#/components/schemas/RatingFieldUpdateField' + - $ref: '#/components/schemas/BooleanFieldUpdateField' + - $ref: '#/components/schemas/DateFieldUpdateField' + - $ref: '#/components/schemas/LastModifiedFieldUpdateField' + - $ref: '#/components/schemas/LastModifiedByFieldUpdateField' + - $ref: '#/components/schemas/CreatedOnFieldUpdateField' + - $ref: '#/components/schemas/CreatedByFieldUpdateField' + - $ref: '#/components/schemas/DurationFieldUpdateField' + - $ref: '#/components/schemas/LinkRowFieldUpdateField' + - $ref: '#/components/schemas/FileFieldUpdateField' + - $ref: '#/components/schemas/SingleSelectFieldUpdateField' + - $ref: '#/components/schemas/MultipleSelectFieldUpdateField' + - $ref: '#/components/schemas/PhoneNumberFieldUpdateField' + - $ref: '#/components/schemas/FormulaFieldUpdateField' + - $ref: '#/components/schemas/CountFieldUpdateField' + - $ref: '#/components/schemas/RollupFieldUpdateField' + - $ref: '#/components/schemas/LookupFieldUpdateField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldUpdateField' + - $ref: '#/components/schemas/UUIDFieldUpdateField' + - $ref: '#/components/schemas/AutonumberFieldUpdateField' + - $ref: '#/components/schemas/PasswordFieldUpdateField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldUpdateField' + long_text: '#/components/schemas/LongTextFieldUpdateField' + url: '#/components/schemas/URLFieldUpdateField' + email: '#/components/schemas/EmailFieldUpdateField' + number: '#/components/schemas/NumberFieldUpdateField' + rating: '#/components/schemas/RatingFieldUpdateField' + boolean: '#/components/schemas/BooleanFieldUpdateField' + date: '#/components/schemas/DateFieldUpdateField' + last_modified: '#/components/schemas/LastModifiedFieldUpdateField' + last_modified_by: '#/components/schemas/LastModifiedByFieldUpdateField' + created_on: '#/components/schemas/CreatedOnFieldUpdateField' + created_by: '#/components/schemas/CreatedByFieldUpdateField' + duration: '#/components/schemas/DurationFieldUpdateField' + link_row: '#/components/schemas/LinkRowFieldUpdateField' + file: '#/components/schemas/FileFieldUpdateField' + single_select: '#/components/schemas/SingleSelectFieldUpdateField' + multiple_select: '#/components/schemas/MultipleSelectFieldUpdateField' + phone_number: '#/components/schemas/PhoneNumberFieldUpdateField' + formula: '#/components/schemas/FormulaFieldUpdateField' + count: '#/components/schemas/CountFieldUpdateField' + rollup: '#/components/schemas/RollupFieldUpdateField' + lookup: '#/components/schemas/LookupFieldUpdateField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldUpdateField' + uuid: '#/components/schemas/UUIDFieldUpdateField' + autonumber: '#/components/schemas/AutonumberFieldUpdateField' + password: '#/components/schemas/PasswordFieldUpdateField' + PatchedIntegrationUpdateIntegration: + anyOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationUpdateIntegration' + PatchedIntegration_ServiceUpdateDataSource: + anyOf: + - $ref: '#/components/schemas/LocalBaserowGetRowUpdateDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsUpdateDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowUpdateDataSource' + PatchedMoveDataSource: + type: object + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the data_source is moved before the data_source with + this Id. Otherwise the data_source is placed last for this page. + PatchedMoveElement: + type: object + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the element is moved before the element with this Id. + Otherwise the element is placed at the end of the page. + parent_element_id: + type: integer + nullable: true + description: >- + If provided, the element is moved as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + PatchedMoveIntegration: + type: object + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the integration is moved before the integration with + this Id. Otherwise the integration is placed at the end of the page. + PatchedMoveUserSource: + type: object + description: Serializer used when moving a user source. + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the user_source is moved before the user_source with + this Id. Otherwise the user_source is placed at the end of the page. + PatchedSettings: + type: object + properties: + allow_new_signups: + type: boolean + description: >- + Indicates whether new users can create a new account when signing + up. + allow_signups_via_workspace_invitations: + type: boolean + description: >- + Indicates whether invited users can create an account when signing + up, even if allow_new_signups is disabled. + allow_signups_via_group_invitations: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_signups_via_workspace_invitations` instead as this attribute + is being removed in the future. + allow_reset_password: + type: boolean + description: Indicates whether users can request a password reset link. + allow_global_workspace_creation: + type: boolean + description: Indicates whether all users can create workspaces, or just staff. + allow_global_group_creation: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_global_workspace_creation` instead as this attribute is being + removed in the future. + account_deletion_grace_delay: + type: integer + maximum: 32767 + minimum: 0 + description: >- + Number of days after the last login for an account pending deletion + to be deleted + show_admin_signup_page: + type: boolean + description: >- + Indicates that there are no admin users in the database yet, so in + the frontend the signup form will be shown instead of the login + page. + track_workspace_usage: + type: boolean + description: >- + Runs a job once per day which calculates per workspace row counts + and file storage usage, displayed on the admin workspace page. + show_baserow_help_request: + type: boolean + description: >- + Indicates whether the `We need your help!` message will be shown on + the dashboard + co_branding_logo: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: Co-branding logo that's placed next to the Baserow logo (176x29). + PatchedTableUpdate: + type: object + properties: + name: + type: string + maxLength: 255 + PatchedTableWebhookUpdateRequest: + type: object + properties: + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + include_all_events: + type: boolean + description: Indicates whether this webhook should listen to all events. + events: + type: array + items: + $ref: '#/components/schemas/EventTypesEnum' + description: A list containing the events that will trigger this webhook. + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + headers: + type: object + additionalProperties: {} + description: >- + The additional headers as an object where the key is the name and + the value the value. + name: + type: string + description: An internal name of the webhook. + maxLength: 255 + active: + type: boolean + description: >- + Indicates whether the web hook is active. When a webhook has failed + multiple times, it will automatically be deactivated. + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + PatchedTokenUpdate: + type: object + properties: + name: + type: string + description: The human readable name of the database token for the user. + maxLength: 100 + permissions: + type: object + description: >- + Indicates per operation which permissions the database token has + within the whole workspace. If the value of for example `create` is + `true`, then the token can create rows in all tables related to the + workspace. If a list is provided with for example `[["table", 1]]` + then the token only has create permissions for the table with id 1. + Same goes for if a database references is provided. `[['database', + 1]]` means create permissions for all tables in the database with id + 1. + + + Example: + + ```json + + { + "create": true// Allows creating rows in all tables. + // Allows reading rows from database 1 and table 10. + "read": [["database", 1], ["table", 10]], + "update": false // Denies updating rows in all tables. + "delete": [] // Denies deleting rows in all tables. + } + ``` + properties: + create: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + read: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + update: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + delete: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + rotate_key: + type: boolean + default: false + description: Indicates if a new key must be generated. + PatchedTrashEntryRequest: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + trash_item_id: + type: integer + minimum: 0 + parent_trash_item_id: + type: integer + minimum: 0 + nullable: true + trash_item_type: + $ref: '#/components/schemas/TrashItemTypeEnum' + PatchedUndoRedoRequest: + type: object + properties: + scopes: + allOf: + - $ref: '#/components/schemas/ActionScopes' + description: >- + A JSON object with keys and values representing the various action + scopes to include when undoing or redoing. Every action in Baserow + will be associated with a action scope, when undoing/redoing only + actions which match any of the provided scope key:value pairs will + included when this endpoint picks the next action to undo/redo. If + no scopes are provided then all actions performed in the client + session will be included when undoing/redoing. + PatchedUpdateDomain: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type0a6Enum' + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + domain_name: + type: string + PatchedUpdatePage: + type: object + properties: + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + PatchedUpdatePremiumViewAttributes: + type: object + properties: + show_logo: + type: boolean + PatchedUpdateViewFilter: + type: object + properties: + field: + type: integer + description: The field of which the value must be compared to the filter value. + type: + allOf: + - $ref: '#/components/schemas/Type880Enum' + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + value: + type: string + description: The filter value that must be compared to the field's value. + maxLength: 255 + PatchedUpdateViewFilterGroup: + type: object + properties: + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + PatchedUpdateViewGroupBy: + type: object + properties: + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The pixel width of the group by in the related view. + PatchedUpdateViewSort: + type: object + properties: + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + PatchedUpdateWorkspaceInvitation: + type: object + properties: + permissions: + type: string + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + maxLength: 32 + PatchedUpdateWorkspaceUser: + type: object + properties: + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + PatchedUserAdminUpdate: + type: object + description: >- + Serializes a request body for updating a given user. Do not use for + returning user + + data as the password will be returned also. + properties: + username: + type: string + format: email + name: + type: string + maxLength: 150 + is_active: + type: boolean + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + is_staff: + type: boolean + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + password: + type: string + PatchedUser_SourceUpdateUserSource: + anyOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceUpdateUserSource' + PatchedViewFieldOptions: + anyOf: + - $ref: '#/components/schemas/grid_view_field_options' + - $ref: '#/components/schemas/gallery_view_field_options' + - $ref: '#/components/schemas/form_view_field_options' + - $ref: '#/components/schemas/kanban_view_field_options' + - $ref: '#/components/schemas/calendar_view_field_options' + PatchedViewUpdateView: + anyOf: + - $ref: '#/components/schemas/grid_view_update' + - $ref: '#/components/schemas/gallery_view_update' + - $ref: '#/components/schemas/form_view_update' + - $ref: '#/components/schemas/kanban_view_update' + - $ref: '#/components/schemas/calendar_view_update' + PatchedWorkspace: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + PathParam: + type: object + properties: + name: + type: string + description: The name of the parameter. + maxLength: 255 + type: + allOf: + - $ref: '#/components/schemas/PathParamTypeEnum' + description: |- + The type of the parameter. + + * `text` - text + * `numeric` - numeric + required: + - name + - type + PathParamTypeEnum: + enum: + - text + - numeric + type: string + description: |- + * `text` - text + * `numeric` - numeric + PermissionObject: + type: object + properties: + name: + type: string + description: The permission manager name. + permissions: + type: object + additionalProperties: {} + description: The content of the permission object for this permission manager. + required: + - name + - permissions + PhoneNumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + PhoneNumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + PhoneNumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + PhoneNumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + PublicBuilder: + type: object + description: >- + A public version of the builder serializer with less data to prevent + data leaks. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + pages: + type: array + items: + $ref: '#/components/schemas/PublicPage' + readOnly: true + description: >- + This field is specific to the `builder` application and contains an + array of pages that are in the builder. + type: + type: string + readOnly: true + description: The type of the object. + theme: + allOf: + - $ref: '#/components/schemas/CombinedThemeConfigBlocks' + readOnly: true + description: >- + This field is specific to the `builder` application and contains the + theme settings. + user_sources: + type: array + items: + $ref: '#/components/schemas/User_SourceBasePublicUserSource' + readOnly: true + description: The user sources related with this builder. + required: + - id + - name + - pages + - theme + - type + - user_sources + PublicField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + PublicFormView: + type: object + properties: + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The user file cover image that is displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The user file logo image that is displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + fields: + type: array + items: + $ref: '#/components/schemas/PublicFormViewFieldOptions' + show_logo: + type: boolean + required: + - fields + PublicFormViewField: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + required: + - id + - type + PublicFormViewFieldOptions: + type: object + properties: + name: + type: string + readOnly: true + description: If provided, then this value will be visible above the field input. + description: + type: string + description: If provided, then this value be will be shown under the field name. + required: + type: boolean + description: Indicates whether the field is required for the visitor to fill out. + order: + type: integer + maximum: 32767 + minimum: -32768 + description: The order that the field has in the form. Lower value is first. + field: + allOf: + - $ref: '#/components/schemas/PublicFormViewField' + readOnly: true + description: >- + The properties of the related field. These can be used to construct + the correct input. Additional properties could be added depending on + the field type. + show_when_matching_conditions: + type: boolean + description: Indicates whether this field is visible when the conditions are met. + condition_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all (AND) or any (OR) of the conditions should + match before shown. + + + * `AND` - And + + * `OR` - Or + conditions: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsCondition' + condition_groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + field_component: + type: string + description: >- + Indicates which field input component is used in the form. The value + is only used in the frontend, and can differ per field. + maxLength: 32 + required: + - field + - name + PublicNone: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + required: + - element_id + - event + - id + - order + - type + PublicPage: + type: object + description: >- + A public version of the page serializer with less data to prevent data + leaks. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + required: + - id + - name + - path + PublicPaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PublicPaginationSerializerWithGridViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PublicView: + type: object + properties: + id: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + table: + $ref: '#/components/schemas/PublicViewTable' + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + sortings: + type: array + items: + $ref: '#/components/schemas/PublicViewSort' + readOnly: true + group_bys: + type: array + items: + $ref: '#/components/schemas/PublicViewGroupBy' + readOnly: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug where the view can be accessed publicly on. + pattern: ^[-a-zA-Z0-9_]+$ + show_logo: + type: boolean + required: + - group_bys + - id + - name + - order + - slug + - sortings + - table + - type + PublicViewAuthRequest: + type: object + properties: + password: + type: string + required: + - password + PublicViewAuthResponse: + type: object + properties: + access_token: + type: string + required: + - access_token + PublicViewGroupBy: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The pixel width of the group by in the related view. + required: + - field + - id + - view + PublicViewInfo: + type: object + properties: + fields: + type: array + items: + $ref: '#/components/schemas/PublicField' + readOnly: true + view: + allOf: + - $ref: '#/components/schemas/PublicView' + readOnly: true + required: + - fields + - view + PublicViewSort: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + - id + - view + PublicViewTable: + type: object + properties: + id: + type: integer + readOnly: true + database_id: + type: integer + readOnly: true + required: + - database_id + - id + PublishDomainJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + PublishDomainJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + RatingFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + required: + - name + - type + RatingFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + required: + - id + - name + - order + - read_only + - table_id + - type + RatingFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + RatingFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + Register: + type: object + properties: + name: + type: string + maxLength: 150 + minLength: 2 + email: + type: string + format: email + description: The email address is also going to be the username. + password: + type: string + language: + type: string + default: en + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + maxLength: 10 + minLength: 2 + authenticate: + type: boolean + default: false + description: >- + Indicates whether an authentication JWT should be generated and be + included in the response. + group_invitation_token: + type: string + description: >- + DEPRECATED: Please use `workspace_invitation_token` which this + attribute is being renamed to in 2024. + workspace_invitation_token: + type: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after signing up. + template_id: + type: integer + description: >- + The id of the template that must be installed after creating the + account. This only works if the `workspace_invitation_token` param + is not provided. + required: + - email + - name + - password + RegisterLicense: + type: object + properties: + license: + type: string + description: The license that you want to register. + required: + - license + RelatedFields: + type: object + properties: + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - related_fields + Report: + type: object + properties: + failing_rows: + type: object + additionalProperties: + type: object + additionalProperties: + type: array + items: + type: string + description: Error messages for this field. + description: >- + An object containing error messages by fields. The key is the + field name and the value is an array of error messages for this + field. These messages are localized for the user who has created + the job when the translation is available. + description: >- + An object containing field in error by rows. The keys are the row + indexes from original file and values are objects of errors by + fields. + required: + - failing_rows + RequestMethodEnum: + enum: + - POST + - GET + - PUT + - PATCH + - DELETE + type: string + description: |- + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + ResetPasswordBodyValidation: + type: object + properties: + token: + type: string + password: + type: string + required: + - password + - token + RestoreSnapshotJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + RestoreSnapshotJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + RollupFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + RollupFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + RollupFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + RollupFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + RowComment: + type: object + properties: + id: + type: integer + readOnly: true + user_id: + type: integer + nullable: true + description: The user who made the comment. + readOnly: true + first_name: + type: string + maxLength: 32 + table_id: + type: integer + description: 'The table the row this comment is for is found in. ' + readOnly: true + row_id: + type: integer + maximum: 2147483647 + minimum: 0 + description: The id of the row the comment is for. + message: + type: string + readOnly: true + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + edited: + type: string + readOnly: true + trashed: + type: boolean + required: + - created_on + - edited + - id + - message + - row_id + - table_id + - updated_on + - user_id + RowCommentCreate: + type: object + properties: + message: + type: object + additionalProperties: {} + description: The rich text comment content. + required: + - message + RowCommentsNotificationMode: + type: object + properties: + mode: + allOf: + - $ref: '#/components/schemas/ModeFf8Enum' + description: >- + The mode to use to receive notifications for new comments on a table + row. + + + * `all` - all + + * `mentions` - mentions + required: + - mode + RowCommentsNotificationModeEnum: + enum: + - all + - mentions + type: string + description: |- + * `all` - all + * `mentions` - mentions + RowHistory: + type: object + properties: + id: + type: integer + readOnly: true + action_type: + type: string + description: The type of the action that was performed. + user: + allOf: + - $ref: '#/components/schemas/RowHistoryUser' + description: The user that performed the action. + timestamp: + type: string + format: date-time + description: The timestamp of the action that was performed. + before: + type: object + additionalProperties: {} + description: >- + The mapping between field_ids and values for the row before the + action was performed. + after: + type: object + additionalProperties: {} + description: >- + The mapping between field_ids and values for the row after the + action was performed. + fields_metadata: + type: object + additionalProperties: {} + description: The metadata of the fields that were changed. + required: + - action_type + - after + - before + - fields_metadata + - id + - timestamp + - user + RowHistoryUser: + type: object + properties: + id: + type: integer + description: The id of the user. + name: + type: string + description: The first name of the user. + required: + - id + - name + RowIdentifierTypeEnum: + enum: + - id + - count + type: string + description: |- + * `id` - Id + * `count` - Count + 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' + SAMLResponse: + type: object + properties: + SAMLResponse: + type: string + description: The encoded SAML response from the IdP. + RelayState: + type: string + description: The frontend URL where redirect the authenticated user. + required: + - RelayState + - SAMLResponse + SamlAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + description: The email domain registered with this provider. + enabled: + type: boolean + description: Whether the provider is enabled or not. + metadata: + type: string + description: The SAML metadata XML provided by the IdP. + is_verified: + type: boolean + readOnly: true + description: Whether or not a user sign in correctly with this SAML provider. + required: + - domain + - id + - is_verified + - metadata + - type + ScopeTypeEnum: + enum: + - core + - application + - workspace + - workspace_invitation + - snapshot + - workspace_user + - integration + - user_source + - database + - database_table + - database_field + - database_view + - database_view_decoration + - database_view_sort + - database_view_group + - database_view_filter + - database_view_filter_group + - token + - builder + - builder_page + - builder_element + - builder_domain + - builder_data_source + - builder_workflow_action + - team + - team_subject + - license + type: string + description: |- + * `core` - core + * `application` - application + * `workspace` - workspace + * `workspace_invitation` - workspace_invitation + * `snapshot` - snapshot + * `workspace_user` - workspace_user + * `integration` - integration + * `user_source` - user_source + * `database` - database + * `database_table` - database_table + * `database_field` - database_field + * `database_view` - database_view + * `database_view_decoration` - database_view_decoration + * `database_view_sort` - database_view_sort + * `database_view_group` - database_view_group + * `database_view_filter` - database_view_filter + * `database_view_filter_group` - database_view_filter_group + * `token` - token + * `builder` - builder + * `builder_page` - builder_page + * `builder_element` - builder_element + * `builder_domain` - builder_domain + * `builder_data_source` - builder_data_source + * `builder_workflow_action` - builder_workflow_action + * `team` - team + * `team_subject` - team_subject + * `license` - license + SelectColorValueProviderConf: + type: object + properties: + field_id: + type: integer + nullable: true + description: >- + An id of a select field of the table. The value provider return the + color of the selected option for each row. + required: + - field_id + SelectOption: + type: object + properties: + id: + type: integer + value: + type: string + maxLength: 255 + color: + type: string + maxLength: 255 + required: + - color + - value + SendResetPasswordEmailBodyValidation: + type: object + properties: + email: + type: string + format: email + description: The email address of the user that has requested a password reset. + base_url: + type: string + format: uri + description: >- + The base URL where the user can reset his password. The reset token + is going to be appended to the base_url (base_url '/token'). + required: + - base_url + - email + Sender: + type: object + properties: + id: + type: integer + readOnly: true + username: + type: string + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + pattern: ^[\w.@+-]+$ + maxLength: 150 + first_name: + type: string + maxLength: 150 + required: + - id + - username + Settings: + type: object + properties: + allow_new_signups: + type: boolean + description: >- + Indicates whether new users can create a new account when signing + up. + allow_signups_via_workspace_invitations: + type: boolean + description: >- + Indicates whether invited users can create an account when signing + up, even if allow_new_signups is disabled. + allow_signups_via_group_invitations: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_signups_via_workspace_invitations` instead as this attribute + is being removed in the future. + allow_reset_password: + type: boolean + description: Indicates whether users can request a password reset link. + allow_global_workspace_creation: + type: boolean + description: Indicates whether all users can create workspaces, or just staff. + allow_global_group_creation: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_global_workspace_creation` instead as this attribute is being + removed in the future. + account_deletion_grace_delay: + type: integer + maximum: 32767 + minimum: 0 + description: >- + Number of days after the last login for an account pending deletion + to be deleted + show_admin_signup_page: + type: boolean + description: >- + Indicates that there are no admin users in the database yet, so in + the frontend the signup form will be shown instead of the login + page. + track_workspace_usage: + type: boolean + description: >- + Runs a job once per day which calculates per workspace row counts + and file storage usage, displayed on the admin workspace page. + show_baserow_help_request: + type: boolean + description: >- + Indicates whether the `We need your help!` message will be shown on + the dashboard + co_branding_logo: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: Co-branding logo that's placed next to the Baserow logo (176x29). + SingleAuditLogExportJobRequest: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + url: + type: string + format: uri + readOnly: true + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + required: + - url + SingleAuditLogExportJobResponse: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + url: + type: string + format: uri + readOnly: true + description: The URL to download the exported file. + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + created_on: + type: string + format: date-time + readOnly: true + description: The date and time when the export job was created. + exported_file_name: + type: string + readOnly: true + description: The name of the file that was created by the export job. + required: + - created_on + - exported_file_name + - url + SingleDuplicateApplicationJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + duplicated_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + required: + - duplicated_application + - id + - original_application + - progress_percentage + - state + - type + SingleDuplicateFieldJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_field: + allOf: + - $ref: '#/components/schemas/Field' + readOnly: true + duplicated_field: + allOf: + - $ref: '#/components/schemas/FieldSerializerWithRelatedFields' + readOnly: true + required: + - duplicated_field + - id + - original_field + - progress_percentage + - state + - type + SingleDuplicatePageJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + duplicated_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + required: + - duplicated_page + - id + - original_page + - progress_percentage + - state + - type + SingleDuplicateTableJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + duplicated_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + required: + - duplicated_table + - id + - original_table + - progress_percentage + - state + - type + SingleFileImportJobSerializerClass: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + database_id: + type: integer + description: Database id where the table will be created. + name: + type: string + description: The name of the new table. + maxLength: 255 + table_id: + type: integer + description: Table id where the data will be imported. + first_row_header: + type: boolean + default: false + report: + allOf: + - $ref: '#/components/schemas/Report' + description: Import error report. + required: + - database_id + - id + - progress_percentage + - report + - state + - type + SingleInstallTemplateJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + template: + allOf: + - $ref: '#/components/schemas/Template' + readOnly: true + installed_applications: + type: object + additionalProperties: {} + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + required: + - group + - id + - installed_applications + - progress_percentage + - state + - template + - type + - workspace + SingleSelectFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - name + - type + SingleSelectFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - table_id + - type + SingleSelectFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + SingleSelectFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + Snapshot: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + snapshot_from_application: + type: integer + readOnly: true + created_by: + allOf: + - $ref: '#/components/schemas/User' + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + required: + - created_at + - created_by + - id + - name + - snapshot_from_application + SourceTypeEnum: + enum: + - url + - embed + type: string + description: |- + * `url` - Url + * `embed` - Embed + StateEnum: + enum: + - pending + - exporting + - cancelled + - finished + - failed + - expired + type: string + description: |- + * `pending` - pending + * `exporting` - exporting + * `cancelled` - cancelled + * `finished` - finished + * `failed` - failed + * `expired` - expired + StyleBackgroundEnum: + enum: + - none + - color + type: string + description: |- + * `none` - None + * `color` - Color + StyleEnum: + enum: + - star + - heart + - thumbs-up + - flag + - smile + type: string + description: |- + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + StyleImageConstraintEnum: + enum: + - cover + - contain + - full-width + type: string + description: |- + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + StyleWidthEnum: + enum: + - full + - normal + - medium + - small + type: string + description: |- + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + SubDomainCreateDomain: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type0a6Enum' + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + domain_name: + type: string + maxLength: 255 + required: + - domain_name + - type + SubDomainDomain: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the domain. + domain_name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + builder_id: + type: integer + readOnly: true + last_published: + type: string + format: date-time + nullable: true + description: Last publication date of this domain + required: + - builder_id + - domain_name + - id + - order + - type + SubjectType3ffEnum: + enum: + - auth.User + type: string + description: '* `auth.User` - auth.User' + SubjectTypeB9aEnum: + enum: + - auth.User + - anonymous + - user_source.user + - core.Token + - baserow_enterprise.Team + type: string + description: |- + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + SubjectUser: + type: object + properties: + id: + type: integer + readOnly: true + username: + type: string + readOnly: true + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + first_name: + type: string + readOnly: true + email: + type: string + format: email + readOnly: true + title: Email address + required: + - email + - first_name + - id + - username + SubmitActionEnum: + enum: + - MESSAGE + - REDIRECT + type: string + description: |- + * `MESSAGE` - Message + * `REDIRECT` - Redirect + Table: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + database_id: + type: integer + readOnly: true + required: + - database_id + - id + - name + - order + TableCreate: + type: object + properties: + name: + type: string + maxLength: 255 + data: + type: array + items: {} + description: >- + A list of rows that needs to be created as initial table data. Each + row is a list of values that are going to be added in the new table + in the same order as provided. + + + Ex: + + ```json + + [ + ["row1_field1_value", "row1_field2_value"], + ["row2_field1_value", "row2_field2_value"], + ] + + ``` + + for creating a two rows table with two fields. + + + If not provided, some example data is going to be created. + minItems: 1 + first_row_header: + type: boolean + default: false + description: >- + Indicates if the first provided row is the header. If true the field + names are going to be the values of the first row. Otherwise they + will be called "Field N" + required: + - name + TableElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + TableElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + TableElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + TableElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + TableImport: + type: object + properties: + data: + type: array + items: {} + description: >- + A list of rows you want to add to the specified table. Each row is a + list of values, one for each **writable** field. The field values + must be ordered according to the field order in the table. All + values must be compatible with the corresponding field type. + + + Ex: + + ```json + + [ + ["row1_field1_value", "row1_field2_value"], + ["row2_field1_value", "row2_field2_value"], + ] + + ``` + + for adding two rows to a table with two writable fields. + minItems: 1 + required: + - data + TableSerializerWithFields: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + database_id: + type: integer + readOnly: true + fields: + type: array + items: + $ref: '#/components/schemas/LocalBaserowField' + description: Fields of this table + required: + - database_id + - fields + - id + - name + - order + TableWebhook: + type: object + properties: + id: + type: integer + readOnly: true + events: + type: object + additionalProperties: {} + readOnly: true + description: A list containing the events that will trigger this webhook. + headers: + type: object + additionalProperties: {} + readOnly: true + description: >- + The additional headers as an object where the key is the name and + the value the value. + calls: + type: array + items: + $ref: '#/components/schemas/TableWebhookCall' + description: All the calls that this webhook made. + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + name: + type: string + description: An internal name of the webhook. + maxLength: 255 + include_all_events: + type: boolean + description: Indicates whether this webhook should listen to all events. + failed_triggers: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The amount of failed webhook calls. + active: + type: boolean + description: >- + Indicates whether the web hook is active. When a webhook has failed + multiple times, it will automatically be deactivated. + required: + - calls + - created_on + - events + - headers + - id + - name + - updated_on + - url + TableWebhookCall: + type: object + properties: + id: + type: integer + readOnly: true + event_id: + type: string + format: uuid + readOnly: true + description: Event ID where the call originated from. + event_type: + type: string + maxLength: 50 + called_time: + type: string + format: date-time + nullable: true + called_url: + type: string + maxLength: 2000 + request: + type: string + nullable: true + description: A text copy of the request headers and body. + response: + type: string + nullable: true + description: A text copy of the response headers and body. + response_status: + type: integer + maximum: 2147483647 + minimum: -2147483648 + nullable: true + description: The HTTP response status code. + error: + type: string + nullable: true + description: An internal error reflecting what went wrong. + required: + - called_url + - event_id + - event_type + - id + TableWebhookCreateRequest: + type: object + properties: + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + include_all_events: + type: boolean + description: Indicates whether this webhook should listen to all events. + events: + type: array + items: + $ref: '#/components/schemas/Events3eaEnum' + description: A list containing the events that will trigger this webhook. + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + headers: + type: object + additionalProperties: {} + description: >- + The additional headers as an object where the key is the name and + the value the value. + name: + type: string + description: An internal name of the webhook. + maxLength: 255 + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + required: + - name + - url + TableWebhookTestCallRequest: + type: object + properties: + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + event_type: + allOf: + - $ref: '#/components/schemas/EventTypeEnum' + description: |- + The event type that must be used for the test call. + + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + headers: + type: object + additionalProperties: {} + description: >- + The additional headers as an object where the key is the name and + the value the value. + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + required: + - event_type + - url + TableWebhookTestCallResponse: + type: object + properties: + request: + type: string + readOnly: true + description: A text copy of the request headers and body. + response: + type: string + readOnly: true + description: A text copy of the response headers and body. + status_code: + type: integer + readOnly: true + description: The HTTP response status code. + is_unreachable: + type: boolean + readOnly: true + description: Indicates whether the provided URL could be reached. + required: + - is_unreachable + - request + - response + - status_code + TargetEnum: + enum: + - self + - blank + type: string + description: |- + * `self` - Self + * `blank` - Blank + Team: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + name: + type: string + description: A human friendly name for this team. + maxLength: 160 + default_role: + type: string + nullable: true + description: >- + The uid of the role you want to assign to the team in the given + workspace. You can omit this property if you want to remove the + role. + subjects: + type: array + items: + $ref: '#/components/schemas/TeamSubject' + default: [] + description: >- + An array of subject ID/type objects to be used during team create + and update. + required: + - name + TeamResponse: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + description: A human friendly name for this team. + maxLength: 160 + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: The workspace that this team belongs to. + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + default_role: + type: string + description: The uid of the role this team has in its workspace. + subject_count: + type: integer + description: >- + The amount of subjects (e.g. users) that are currently assigned to + this team. + subject_sample: + type: array + items: + $ref: '#/components/schemas/TeamSampleSubject' + description: >- + A sample, by default 10, of the most recent subjects to join this + team. + required: + - created_on + - group + - id + - name + - subject_count + - updated_on + - workspace + TeamSampleSubject: + type: object + properties: + subject_id: + type: integer + description: The subject's unique identifier. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectType3ffEnum' + description: |- + The type of subject who belongs to the team. + + * `auth.User` - auth.User + subject_label: + type: string + description: The subject's label. Defaults to a user's first name. + team_subject_id: + type: integer + description: The team subject unique identifier. + required: + - subject_id + - subject_label + - subject_type + - team_subject_id + TeamSubject: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + id: + type: integer + readOnly: true + subject_id: + type: integer + description: The subject's unique identifier. + subject_user_email: + type: string + format: email + description: The user subject's email address. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectType3ffEnum' + description: |- + The type of subject that is being invited. + + * `auth.User` - auth.User + required: + - id + - subject_type + TeamSubjectResponse: + type: object + properties: + id: + type: integer + readOnly: true + subject_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The unique subject ID. + subject_type: + type: string + description: |- + Returns the TeamSubject's `subject_type` natural key. + + :param obj: The TeamSubject record. + :return: The subject's content type natural key. + readOnly: true + team: + type: integer + description: The team this subject belongs to. + required: + - id + - subject_id + - subject_type + - team + Template: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 64 + icon: + type: string + description: The icon class name that can be used for displaying purposes. + maxLength: 32 + keywords: + type: string + description: Keywords related to the template that can be used for search. + group_id: + type: string + readOnly: true + workspace_id: + type: integer + nullable: true + description: >- + The group containing the applications related to the template. The + read endpoints related to that group are publicly accessible for + preview purposes. + readOnly: true + is_default: + type: string + readOnly: true + description: >- + Indicates if the template must be selected by default. The + web-frontend automatically selects the first `is_default` template + that it can find. + required: + - group_id + - icon + - id + - is_default + - name + - workspace_id + TemplateCategories: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 32 + templates: + type: array + items: + $ref: '#/components/schemas/Template' + readOnly: true + required: + - id + - name + - templates + TextElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + required: + - order + - type + TextElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + required: + - id + - order + - page_id + - parent_element_id + - type + TextElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + required: + - id + - order + - parent_element_id + - type + TextElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + TextFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + required: + - name + - type + TextFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + TextFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + TextFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + Token: + type: object + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + properties: + id: + type: integer + readOnly: true + name: + type: string + description: The human readable name of the database token for the user. + maxLength: 100 + group: + type: string + readOnly: true + workspace: + type: integer + description: Only the tables of the workspace can be accessed. + key: + type: string + description: >- + The unique token key that can be used to authorize for the table row + endpoints. + maxLength: 32 + permissions: + type: object + description: >- + Indicates per operation which permissions the database token has + within the whole workspace. If the value of for example `create` is + `true`, then the token can create rows in all tables related to the + workspace. If a list is provided with for example `[["table", 1]]` + then the token only has create permissions for the table with id 1. + Same goes for if a database references is provided. `[['database', + 1]]` means create permissions for all tables in the database with id + 1. + + + Example: + + ```json + + { + "create": true// Allows creating rows in all tables. + // Allows reading rows from database 1 and table 10. + "read": [["database", 1], ["table", 10]], + "update": false // Denies updating rows in all tables. + "delete": [] // Denies deleting rows in all tables. + } + ``` + properties: + create: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + read: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + update: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + delete: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + required: + - group + - id + - key + - name + - permissions + - workspace + TokenBlacklist: + type: object + properties: + refresh: + type: string + required: + - refresh + TokenCreate: + type: object + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + properties: + name: + type: string + description: The human readable name of the database token for the user. + maxLength: 100 + group: + type: string + readOnly: true + workspace: + type: integer + description: Only the tables of the workspace can be accessed. + required: + - group + - name + - workspace + TokenObtainPair: + type: object + properties: + username: + type: string + writeOnly: true + password: + type: string + writeOnly: true + access: + type: string + readOnly: true + refresh: + type: string + readOnly: true + required: + - access + - password + - refresh + - username + TokenObtainPairWithUser: + type: object + properties: + email: + type: string + format: email + username: + type: string + format: email + description: Deprecated. Use `email` instead. + deprecated: true + password: + type: string + writeOnly: true + required: + - password + TokenRefreshWithUser: + type: object + properties: + access: + type: string + readOnly: true + refresh_token: + type: string + token: + type: string + description: Deprecated. Use `refresh_token` instead. + deprecated: true + required: + - access + TokenVerifyWithUser: + type: object + properties: + token: + type: string + description: Deprecated. Use `refresh_token` instead. + deprecated: true + refresh_token: + type: string + required: + - refresh_token + TrashContents: + type: object + properties: + id: + type: integer + readOnly: true + user_who_trashed: + type: string + readOnly: true + trash_item_type: + type: string + description: |- + If an API consumer hasn't yet adopted the "workspace" + `trash_item_type`, give them the option to return "group" + by testing the `respond_with_workspace_rename` querystring. + readOnly: true + trash_item_id: + type: integer + maximum: 2147483647 + minimum: 0 + parent_trash_item_id: + type: integer + maximum: 2147483647 + minimum: 0 + nullable: true + trashed_at: + type: string + format: date-time + readOnly: true + application: + type: integer + nullable: true + group: + type: integer + workspace: + type: integer + name: + type: string + names: + type: array + items: + type: string + nullable: true + parent_name: + type: string + nullable: true + required: + - group + - id + - name + - trash_item_id + - trash_item_type + - trashed_at + - user_who_trashed + - workspace + TrashItemTypeEnum: + enum: + - workspace + - application + - group + - table + - field + - row + - rows + - view + - builder_domain + - row_comment + - team + type: string + description: |- + * `workspace` - workspace + * `application` - application + * `group` - group + * `table` - table + * `field` - field + * `row` - row + * `rows` - rows + * `view` - view + * `builder_domain` - builder_domain + * `row_comment` - row_comment + * `team` - team + TrashStructure: + type: object + properties: + groups: + type: array + items: + $ref: '#/components/schemas/TrashStructureGroup' + description: >- + An array of group trash structure records. Deprecated, please use + `workspaces`. + workspaces: + type: array + items: + $ref: '#/components/schemas/TrashStructureGroup' + description: An array of workspace trash structure records + required: + - groups + - workspaces + TrashStructureApplication: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + trashed: + type: boolean + required: + - id + - name + TrashStructureGroup: + type: object + properties: + id: + type: integer + minimum: 0 + trashed: + type: boolean + name: + type: string + applications: + type: array + items: + $ref: '#/components/schemas/TrashStructureApplication' + required: + - applications + - id + - name + - trashed + Type0a6Enum: + enum: + - custom + - sub_domain + type: string + description: |- + * `custom` - custom + * `sub_domain` - sub_domain + Type2a6Enum: + enum: + - heading + - text + - link + - image + - input_text + - column + - button + - table + - form_container + - dropdown + - checkbox + - iframe + - auth_form + type: string + description: |- + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + Type5f7Enum: + enum: + - local_baserow + type: string + description: '* `local_baserow` - local_baserow' + Type60cEnum: + enum: + - notification + - open_page + - create_row + - update_row + - logout + type: string + description: |- + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + Type880Enum: + enum: + - 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 + - lower_than + - 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 + - single_select_equal + - single_select_not_equal + - 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 + type: string + description: |- + * `equal` - equal + * `not_equal` - not_equal + * `filename_contains` - filename_contains + * `files_lower_than` - files_lower_than + * `has_file_type` - has_file_type + * `contains` - contains + * `contains_not` - contains_not + * `contains_word` - contains_word + * `doesnt_contain_word` - doesnt_contain_word + * `length_is_lower_than` - length_is_lower_than + * `higher_than` - higher_than + * `lower_than` - lower_than + * `is_even_and_whole` - is_even_and_whole + * `date_equal` - date_equal + * `date_before` - date_before + * `date_before_or_equal` - date_before_or_equal + * `date_after_days_ago` - date_after_days_ago + * `date_after` - date_after + * `date_after_or_equal` - date_after_or_equal + * `date_not_equal` - date_not_equal + * `date_equals_today` - date_equals_today + * `date_before_today` - date_before_today + * `date_after_today` - date_after_today + * `date_within_days` - date_within_days + * `date_within_weeks` - date_within_weeks + * `date_within_months` - date_within_months + * `date_equals_days_ago` - date_equals_days_ago + * `date_equals_months_ago` - date_equals_months_ago + * `date_equals_years_ago` - date_equals_years_ago + * `date_equals_week` - date_equals_week + * `date_equals_month` - date_equals_month + * `date_equals_day_of_month` - date_equals_day_of_month + * `date_equals_year` - date_equals_year + * `single_select_equal` - single_select_equal + * `single_select_not_equal` - single_select_not_equal + * `link_row_has` - link_row_has + * `link_row_has_not` - link_row_has_not + * `link_row_contains` - link_row_contains + * `link_row_not_contains` - link_row_not_contains + * `boolean` - boolean + * `empty` - empty + * `not_empty` - not_empty + * `multiple_select_has` - multiple_select_has + * `multiple_select_has_not` - multiple_select_has_not + * `multiple_collaborators_has` - multiple_collaborators_has + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + * `user_is` - user_is + * `user_is_not` - user_is_not + TypeC03Enum: + enum: + - local_baserow_get_row + - local_baserow_list_rows + - local_baserow_upsert_row + type: string + description: |- + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + TypeC5eEnum: + enum: + - duplicate_application + - install_template + - create_snapshot + - restore_snapshot + - airtable + - file_import + - duplicate_table + - duplicate_field + - duplicate_page + - publish_domain + - audit_log_export + type: string + description: |- + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + TypeD64Enum: + enum: + - text + - long_text + - url + - email + - number + - rating + - boolean + - date + - last_modified + - last_modified_by + - created_on + - created_by + - duration + - link_row + - file + - single_select + - multiple_select + - phone_number + - formula + - count + - rollup + - lookup + - multiple_collaborators + - uuid + - autonumber + - password + type: string + description: |- + * `text` - text + * `long_text` - long_text + * `url` - url + * `email` - email + * `number` - number + * `rating` - rating + * `boolean` - boolean + * `date` - date + * `last_modified` - last_modified + * `last_modified_by` - last_modified_by + * `created_on` - created_on + * `created_by` - created_by + * `duration` - duration + * `link_row` - link_row + * `file` - file + * `single_select` - single_select + * `multiple_select` - multiple_select + * `phone_number` - phone_number + * `formula` - formula + * `count` - count + * `rollup` - rollup + * `lookup` - lookup + * `multiple_collaborators` - multiple_collaborators + * `uuid` - uuid + * `autonumber` - autonumber + * `password` - password + TypeF4fEnum: + enum: + - database + - builder + type: string + description: |- + * `database` - database + * `builder` - builder + TypeFc4Enum: + enum: + - left_border_color + - background_color + type: string + description: |- + * `left_border_color` - left_border_color + * `background_color` - background_color + TypeFormulaRequest: + type: object + properties: + formula: + type: string + name: + type: string + maxLength: 255 + required: + - formula + - name + TypeFormulaResult: + type: object + properties: + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - formula + - nullable + URLFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + URLFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + URLFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + URLFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + UUIDFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + UUIDFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + UUIDFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + UUIDFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + UndoRedoAction: + type: object + properties: + action_type: + type: string + nullable: true + description: >- + If an action was undone/redone/skipped due to an error this field + will contain the type of the action that was undone/redone. + action_scope: + type: string + nullable: true + description: >- + If an action was undone/redone/skipped due to an error this field + will contain the scope of the action that was undone/redone. + UndoRedoResponse: + type: object + properties: + actions: + type: array + items: + $ref: '#/components/schemas/UndoRedoAction' + result_code: + type: string + description: >- + Indicates the result of the undo/redo operation. Will be 'SUCCESS' + on success, 'NOTHING_TO_DO' when there is no action to undo/redo and + 'SKIPPED_DUE_TO_ERROR' when the undo/redo failed due to a conflict + or error and was skipped over. + required: + - actions + - result_code + UniqueRowValues: + type: object + properties: + values: + type: array + items: + type: string + required: + - values + User: + type: object + properties: + username: + type: string + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + pattern: ^[\w.@+-]+$ + maxLength: 150 + required: + - username + UserAdminCreate: + type: object + description: >- + Serializes a request body for creating a new user. Do not use for + returning user + + data as the password will be returned also. + properties: + username: + type: string + format: email + name: + type: string + maxLength: 150 + is_active: + type: boolean + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + is_staff: + type: boolean + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + password: + type: string + required: + - name + - password + - username + UserAdminGroups: + type: object + properties: + id: + type: integer + name: + type: string + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + required: + - id + - name + UserAdminResponse: + type: object + description: >- + Serializes the safe user attributes to expose for a response back to the + user. + properties: + id: + type: integer + readOnly: true + username: + type: string + format: email + name: + type: string + maxLength: 150 + groups: + type: array + items: + $ref: '#/components/schemas/UserAdminGroups' + workspaces: + type: array + items: + $ref: '#/components/schemas/UserAdminGroups' + last_login: + type: string + format: date-time + nullable: true + date_joined: + type: string + format: date-time + is_active: + type: boolean + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + is_staff: + type: boolean + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + required: + - groups + - id + - name + - username + - workspaces + UserFile: + type: object + properties: + size: + type: integer + maximum: 2147483647 + minimum: 0 + mime_type: + type: string + maxLength: 127 + is_image: + type: boolean + image_width: + type: integer + maximum: 32767 + minimum: 0 + nullable: true + image_height: + type: integer + maximum: 32767 + minimum: 0 + nullable: true + uploaded_at: + type: string + format: date-time + readOnly: true + url: + type: string + format: uri + readOnly: true + thumbnails: + type: object + additionalProperties: {} + readOnly: true + name: + type: string + readOnly: true + original_name: + type: string + maxLength: 255 + required: + - name + - original_name + - size + - thumbnails + - uploaded_at + - url + UserFileUploadViaURLRequest: + type: object + properties: + url: + type: string + format: uri + required: + - url + UserSourceUser: + type: object + description: A serializer used to serialize a UserSourceUser object. + properties: + id: + type: integer + username: + type: string + email: + type: string + format: email + user_source_id: + type: integer + required: + - email + - id + - user_source_id + - username + UserWorkspaceInvitation: + type: object + description: >- + This serializer is used for displaying the invitation to the user that + doesn't + + have access to the workspace yet, so not for invitation management + purposes. + properties: + id: + type: integer + readOnly: true + invited_by: + type: string + readOnly: true + group: + type: string + readOnly: true + workspace: + type: string + readOnly: true + email: + type: string + format: email + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + maxLength: 254 + message: + type: string + readOnly: true + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + created_on: + type: string + format: date-time + readOnly: true + email_exists: + type: boolean + readOnly: true + required: + - created_on + - email + - email_exists + - group + - id + - invited_by + - message + - workspace + User_SourceBasePublicUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceBasePublicUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceBasePublicUserSource' + User_SourceCreateUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceCreateUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceCreateUserSource' + User_SourceUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceUserSource' + UsersPerUserSource: + type: object + description: The response of the list user source users endpoint. + properties: + users_per_user_sources: + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/UserSourceUser' + description: >- + An object keyed by the id of the user source and the value being the + list of users for this user source. + required: + - users_per_user_sources + ValueProviderTypeEnum: + enum: + - single_select_color + - conditional_color + type: string + description: |- + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + VariantEnum: + enum: + - link + - button + type: string + description: |- + * `link` - Link + * `button` - Button + View: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - table + - table_id + - type + ViewCreateView: + oneOf: + - $ref: '#/components/schemas/GridViewCreateView' + - $ref: '#/components/schemas/GalleryViewCreateView' + - $ref: '#/components/schemas/FormViewCreateView' + - $ref: '#/components/schemas/KanbanViewCreateView' + - $ref: '#/components/schemas/CalendarViewCreateView' + discriminator: + propertyName: type + mapping: + grid: '#/components/schemas/GridViewCreateView' + gallery: '#/components/schemas/GalleryViewCreateView' + form: '#/components/schemas/FormViewCreateView' + kanban: '#/components/schemas/KanbanViewCreateView' + calendar: '#/components/schemas/CalendarViewCreateView' + ViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: + type: string + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + maxLength: 255 + value_provider_type: + type: string + description: The value provider type that gives the value to the decorator. + maxLength: 255 + value_provider_conf: + type: object + additionalProperties: {} + description: The configuration consumed by the value provider. + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - id + ViewFieldOptions: + anyOf: + - $ref: '#/components/schemas/grid_view_field_options' + - $ref: '#/components/schemas/gallery_view_field_options' + - $ref: '#/components/schemas/form_view_field_options' + - $ref: '#/components/schemas/kanban_view_field_options' + - $ref: '#/components/schemas/calendar_view_field_options' + ViewFilter: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the filter applies. Each view can have his own + filters. + field: + type: integer + description: The field of which the value must be compared to the filter value. + type: + type: string + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + maxLength: 48 + value: + type: string + description: The filter value that must be compared to the field's value. + maxLength: 255 + preload_values: + type: object + additionalProperties: {} + readOnly: true + description: >- + Can contain unique preloaded values per filter. This is for example + used by the `link_row_has` filter to communicate the display name if + a value is provided. + group: + type: integer + nullable: true + description: >- + The id of the filter group this filter belongs to. If this is null, + the filter is not part of a filter group. + required: + - field + - id + - preload_values + - type + - view + ViewFilterGroup: + type: object + properties: + id: + type: integer + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + view: + type: integer + description: >- + The view to which the filter group applies to. Each view can have + its own filter groups. + required: + - id + - view + ViewGroupBy: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the group by applies. Each view can have his own + group bys. + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The pixel width of the group by in the related view. + required: + - field + - id + - view + ViewSort: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the sort applies. Each view can have his own + sortings. + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + - id + - view + ViewTypesEnum: + enum: + - grid + - gallery + - form + - kanban + - calendar + type: string + description: |- + * `grid` - grid + * `gallery` - gallery + * `form` - form + * `kanban` - kanban + * `calendar` - calendar + ViewView: + oneOf: + - $ref: '#/components/schemas/GridViewView' + - $ref: '#/components/schemas/GalleryViewView' + - $ref: '#/components/schemas/FormViewView' + - $ref: '#/components/schemas/KanbanViewView' + - $ref: '#/components/schemas/CalendarViewView' + discriminator: + propertyName: type + mapping: + grid: '#/components/schemas/GridViewView' + gallery: '#/components/schemas/GalleryViewView' + form: '#/components/schemas/FormViewView' + kanban: '#/components/schemas/KanbanViewView' + calendar: '#/components/schemas/CalendarViewView' + WidthEnum: + enum: + - auto + - full + type: string + description: |- + * `auto` - Auto + * `full` - Full + Workspace: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + required: + - id + - name + WorkspaceAdminUsers: + type: object + properties: + id: + type: integer + email: + type: string + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + required: + - email + - id + WorkspaceInvitation: + type: object + properties: + id: + type: integer + readOnly: true + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: >- + The workspace that the user will get access to once the invitation + is accepted. + email: + type: string + format: email + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + maxLength: 254 + permissions: + type: string + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + maxLength: 32 + message: + type: string + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + maxLength: 250 + created_on: + type: string + format: date-time + readOnly: true + required: + - created_on + - email + - group + - id + - workspace + WorkspaceUser: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + readOnly: true + description: User defined name. + email: + type: string + readOnly: true + description: User email. + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: The workspace that the user has access to. + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + created_on: + type: string + format: date-time + readOnly: true + user_id: + type: integer + description: The user that has access to the workspace. + readOnly: true + to_be_deleted: + type: boolean + description: True if user account is pending deletion. + required: + - created_on + - email + - group + - id + - name + - to_be_deleted + - user_id + - workspace + WorkspaceUserEnterpriseTeam: + type: object + description: A serializer for the `WorkspaceUserSerializer.teams` field. + properties: + id: + type: integer + readOnly: true + description: The unique identifier for this team. + name: + type: string + readOnly: true + description: The team name that this group user belongs to. + required: + - id + - name + WorkspaceUserWorkspace: + type: object + description: >- + This serializers includes relevant fields of the Workspace model, but + also + + some WorkspaceUser specific fields related to the workspace user + relation. + + + Additionally, the list of users are included for each workspace. + properties: + id: + type: integer + readOnly: true + description: Workspace id. + name: + type: string + readOnly: true + description: Workspace name. + users: + type: array + items: + $ref: '#/components/schemas/WorkspaceUser' + readOnly: true + description: List of all workspace users. + order: + type: integer + readOnly: true + description: The requesting user's order within the workspace users. + permissions: + type: string + readOnly: true + description: The requesting user's permissions for the workspace. + unread_notifications_count: + type: integer + readOnly: true + description: The number of unread notifications for the requesting user. + required: + - id + - name + - order + - permissions + - unread_notifications_count + - users + WorkspacesAdminResponse: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + users: + type: array + items: + $ref: '#/components/schemas/WorkspaceAdminUsers' + application_count: + type: integer + row_count: + type: integer + readOnly: true + storage_usage: + type: integer + maximum: 2147483647 + minimum: -2147483648 + nullable: true + seats_taken: + type: integer + free_users: + type: integer + readOnly: true + created_on: + type: string + format: date-time + readOnly: true + required: + - application_count + - created_on + - free_users + - id + - name + - row_count + - seats_taken + - users + calendar_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/CalendarViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + calendar_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + date_field: + type: integer + nullable: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + form_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/FormViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + form_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The cover image that must be displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The logo image that must be displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + receive_notification_on_submit: + type: boolean + readOnly: true + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - receive_notification_on_submit + - slug + gallery_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + gallery_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + grid_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + grid_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + kanban_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/KanbanViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + kanban_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + single_select_field: + type: integer + nullable: true + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + public_Builder_Workflow_Action_TypeBuilderWorkflowAction: + oneOf: + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + discriminator: + propertyName: type + mapping: + public_notification: '#/components/schemas/PublicNone' + public_open_page: '#/components/schemas/PublicNone' + public_create_row: '#/components/schemas/PublicNone' + public_update_row: '#/components/schemas/PublicNone' + public_logout: '#/components/schemas/PublicNone' + securitySchemes: + Database token: + type: http + scheme: bearer + bearerFormat: Token your_token + JWT: + type: http + scheme: bearer + bearerFormat: JWT your_token + tags: + - name: Settings + - name: User + - name: User files + - name: Groups + - name: Group invitations + - name: Workspaces + - name: Workspace invitations + - name: Templates + - name: Trash + - name: Applications + - name: Snapshots + - name: Jobs + - name: Integrations + - name: User sources + - name: Database tables + - name: Database table fields + - name: Database table views + - name: Database table view filters + - name: Database table view sortings + - name: Database table view decorations + - name: Database table view groupings + - name: Database table grid view + - name: Database table gallery view + - name: Database table form view + - name: Database table kanban view + - name: Database table calendar view + - name: Database table rows + - name: Database table export + - name: Database table webhooks + - name: Database tokens + - name: Builder pages + - name: Builder elements + - name: Builder domains + - name: Builder public + - name: Builder data sources + - name: Builder workflow actions + - name: Builder theme + - name: Admin + servers: + - url: api.baserow.io +konfigCliVersion: 1.38.34 diff --git a/sdks/db/fixed-specs-cache/beam-fixed-spec.yaml b/sdks/db/fixed-specs-cache/beam-fixed-spec.yaml index a88253166d..5baee67da3 100644 --- a/sdks/db/fixed-specs-cache/beam-fixed-spec.yaml +++ b/sdks/db/fixed-specs-cache/beam-fixed-spec.yaml @@ -19,7 +19,7 @@ publishJson: statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated - credit decisions. + credit decisions. Our completely digital customer onboarding process allows for near-instant diff --git a/sdks/db/fixed-specs-cache/browse-ai-fixed-spec.yaml b/sdks/db/fixed-specs-cache/browse-ai-fixed-spec.yaml new file mode 100644 index 0000000000..f997c4642b --- /dev/null +++ b/sdks/db/fixed-specs-cache/browse-ai-fixed-spec.yaml @@ -0,0 +1,8179 @@ +publishJson: + company: Browse AI + serviceName: false + sdkName: browse-ai-{language}-sdk + clientName: BrowseAi + metaDescription: >- + We're creating the easiest way to scrape and monitor any website with no + code. + + + Our mission is to give every individual and business equal opportunity to + benefit from information on the internet. + apiStatusUrls: inherit + homepage: browse.ai + developerDocumentation: www.browse.ai/docs/api/v2 + categories: + - ai + - web_scraping +rawSpecString: | + openapi: 3.1.0 + info: + title: Browse AI API Documentation + description: >- + If you are still using the deprecated API v1 version, you can see its + documentation [here](https://www.browse.ai/docs/api/v1). + version: v2 + servers: + - url: https://api.browse.ai/v2 + tags: + - name: internal + x-displayName: Internal + description: > + There are some endpoints that are only used by our integrations, so we + don't add this tag to our core resources + - name: system + x-displayName: System + description: > + This tag is used for endpoints that are used to check the status of Browse + AI infrastructure + - name: robots + x-displayName: Robots + description: > + A robot can be trained do almost anything you do manually on the web. For + example: + + - Open a webpage, + - Log in, + - Click on buttons, + - Fill out forms, + - Extract structured data from a webpage into a spreadsheet, + - Take screenshots, + - Monitor specific parts of webpages for visual or content changes. + + Robots are created either by using Prebuilt Robots or using Browse AI + Recorder and its click-and-extract interface. Every robot has a few input + parameters (like the webpage address) that you can adjust every time you + run it. + - name: tasks + x-displayName: Tasks + description: > + Each robot is trained to perform a certain task. Every time you run that + robot, it will perform that task and the details, including the extracted + data, will be stored under that task. + + + If you set up a monitoring robot to monitor a webpage for changes daily, + it will have to run a task every day or about 30 tasks per month for you. + - name: monitors + x-displayName: Monitors + description: > + Each robot on Browse AI can optionally have one or more monitors. + Monitoring robots come with one monitor by default. + + + For example, if you set up a monitoring robot to monitor a category page + on an e-commerce site for changes daily, you can set up additional + monitors to monitor other category pages on the same site using the same + robot. + + + Each monitor can have different input parameters and schedule. + - name: webhooks + x-displayName: Webhooks + description: | + After a robot finishes a task, its webhooks will be called. + - name: bulk runs + x-displayName: Bulk Runs + description: > + You can run up to 50,000 tasks at once using a robot with different input + parameters for each task. + x-tagGroups: + - name: Core Resources + tags: + - system + - robots + - tasks + - monitors + - webhooks + - bulk runs + paths: + /status: + get: + tags: + - system + summary: Endpoint for checking the status of Browse AI infrastructure + operationId: getSystemStatus + description: > + This endpoint provides you with real-time information regarding the + operational status of the Browse AI infrastructure. It gives insights + into the condition of the tasks queue, thus allowing you to understand + if the services are running smoothly or are under maintenance. + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/status"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/status\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/status") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/status", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/status', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/status"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/status", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/status", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/status" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/status") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/status \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/status + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/status")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON containing Browse AI infrastructure status + content: + application/json: + schema: + $ref: '#/components/schemas/getSystemStatus-200' + /teams: + get: + tags: + - internal + summary: Retrieve list of teams under user account + operationId: getUserTeams + description: > + this endpoint be used on Browse AI integrations to fetch all of the + teams by auth0 access token + parameters: + - $ref: '#/components/parameters/authorization' + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/teams"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/teams\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/teams") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/teams", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/teams', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/teams"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/teams", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/teams", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/teams" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/teams") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/teams \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/teams + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/teams")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON containing the total number of the user. + content: + application/json: + schema: + $ref: '#/components/schemas/getUserTeams-200' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + /robots: + get: + tags: + - robots + summary: Retrieve list of robots under your account + operationId: getRobots + description: > + If you have already created a few robots on [your + dashboard](https://dashboard.browse.ai), you can use this endpoint to + retrieve a list of them. + + You can then use other endpoints to retrieve more information about your + robots or run robots. + parameters: + - $ref: '#/components/parameters/authorization' + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/robots"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/robots", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: >- + A JSON containing the total number of robots and an array of robots + under this team. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobots-200' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + /robots/{robotId}: + get: + tags: + - robots + summary: Retrieve single robot by ID + operationId: getRobot + description: | + You can use this endpoint to retrieve a single robot by ID. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID You can find a robot's ID by opening it on the + dashboard and copying its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/robots/{robotId}", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: >- + A JSON containing the total number of robots and an array of robots + under this team. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobot-200' + '400': + description: A JSON containing an error code and message. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobot-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/cookies: + patch: + tags: + - robots + summary: Update a robot's cookies + operationId: upsertRobotCookies + description: Update a robot's cookies + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/RobotCookie' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.PATCH); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":false,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":16}\")\n\n\treq, _ := http.NewRequest(\"PATCH\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.patch("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "PATCH", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'PATCH', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @NO, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @16 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"PATCH"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "PATCH", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("PATCH", "/v2/robots/{robotId}/monitors/{monitorId}", + payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": False, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 16 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("PATCH", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Patch.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request PATCH \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method PATCH \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": false, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 16 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "PATCH" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the updated monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/upsertRobotCookies-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/upsertRobotCookies-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/tasks: + get: + tags: + - tasks + summary: Get all tasks by a robot + operationId: getRobotTasks + description: | + Get all of a robot's tasks + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + description: Page number + - in: query + name: pageSize + schema: + type: integer + minimum: 1 + maximum: 10 + default: 10 + example: 10 + required: false + description: Page size + - in: query + name: status + schema: + type: string + enum: + - failed + - successful + - in-progress + example: successful + required: false + description: Task status + - in: query + name: robotBulkRunId + schema: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + required: false + description: filter the result based on robot bulk run ID + - in: query + name: sort + schema: + type: string + example: '-createdAt,finishedAt' + required: false + description: >- + A comma separated list of fields to sort by. Default sorting is + ascending and prefixing field names with a hyphen '-' yields a + descending order. + - in: query + name: includeRetried + schema: + type: boolean + example: false + required: false + description: by passing false you can exclude the retried tasks + - in: query + name: fromDate + schema: + type: integer + example: 1678795867879 + required: false + description: From task creation date and time in the form of a Unix timestamp + - in: query + name: toDate + schema: + type: integer + example: 1678795867879 + required: false + description: To task creation date and time in the form of a Unix timestamp + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/tasks?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/tasks?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/tasks?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks?page=1")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTasks-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTasks-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + post: + tags: + - tasks + summary: Run a robot + operationId: newRobotTask + description: > + Run a robot on-demand with custom input parameters. + + + When you need to run a robot and get its captured data, you can use this + endpoint to run the task, and then use webhooks to receive the captured + data as soon as the task is finished. Alternatively, you can poll the + GET endpoint to retrieve a task's details as soon as it is finished. + requestBody: + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/NewRobotTaskBodyParams' + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks\"\n\n\tpayload := strings.NewReader(\"{\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/tasks") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + } + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + } + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"inputParameters": @{ @"originUrl": + @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" + } }; + + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/tasks", payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks" + + + payload = {"inputParameters": {"originUrl": + "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}} + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/tasks") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/tasks \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/tasks + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = ["inputParameters": ["originUrl": + "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"]] + as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/newRobotTask-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/newRobotTask-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: The request can not be processed + content: + application/json: + schema: + $ref: '#/components/schemas/CreditsLimitReachedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + '503': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/RobotUnderMaintenanceResponse' + /robots/{robotId}/tasks/{taskId}: + get: + tags: + - tasks + summary: Retrieve a task + operationId: getRobotTask + description: Retrieve a task's details and captured data. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: taskId + schema: + type: string + required: true + example: f3672790-4561-424b-8a7b-7b7df182b236 + description: Unique task ID + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks/{taskId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/tasks/{taskId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTask-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTask-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + /robots/{robotId}/monitors: + get: + tags: + - monitors + summary: Retrieve a robot's monitors + operationId: getMonitors + description: Retrieve a robot's monitors list. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/monitors", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including monitors list. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitors-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitors-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + post: + tags: + - monitors + summary: Create a new monitor on a robot + operationId: createNewMonitor + description: Create a new monitor on a robot. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNewMonitorRequestBody' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":true,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":15}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @YES, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @15 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/monitors", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": True, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 15 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": true, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 15 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the newly created monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorBadRequestResponse' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorForbiddenResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/monitors/{monitorId}: + get: + tags: + - monitors + summary: Retrieve a robot's monitor + operationId: getMonitor + description: Retrieve a robot's monitor. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/monitors/{monitorId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitor-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + patch: + tags: + - monitors + summary: Update a robot's monitor + operationId: updateMonitor + description: Update a robot's monitor + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitorUpdateBodyParams' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.PATCH); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":false,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":16}\")\n\n\treq, _ := http.NewRequest(\"PATCH\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.patch("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "PATCH", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'PATCH', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @NO, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @16 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"PATCH"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "PATCH", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("PATCH", "/v2/robots/{robotId}/monitors/{monitorId}", + payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": False, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 16 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("PATCH", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Patch.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request PATCH \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method PATCH \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": false, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 16 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "PATCH" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the updated monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/updateMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorBadRequestResponse' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorForbiddenResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + delete: + tags: + - monitors + summary: Delete a robot's monitor + operationId: deleteMonitor + description: Delete a robot's monitor. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.DELETE); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.delete("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "DELETE", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'DELETE', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"DELETE"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "DELETE", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("DELETE", "/v2/robots/{robotId}/monitors/{monitorId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("DELETE", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Delete.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request DELETE \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method DELETE \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "DELETE" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the deleted monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteMonitor-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/bulk-runs: + post: + tags: + - bulk runs + summary: Bulk run tasks + operationId: newBulkRun + description: Bulk run up to 1,000 tasks at a time using a robot. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BulkRunBodyParams' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs\"\n\n\tpayload := strings.NewReader(\"{\\\"title\\\":\\\"Bulk Run Title\\\",\\\"inputParameters\\\":[{\\\"originUrl\\\":\\\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\\\"},{\\\"originUrl\\\":\\\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\\\"}]}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/bulk-runs") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"title\":\"Bulk Run Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + title: 'Bulk Run Title', + inputParameters: [ + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories' + }, + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers' + } + ] + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + title: 'Bulk Run Title', + inputParameters: [ + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories' + }, + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers' + } + ] + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"title": @"Bulk Run Title", + @"inputParameters": @[ @{ @"originUrl": @"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories" }, @{ @"originUrl": @"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers" } ] }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"title\":\"Bulk Run Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/bulk-runs", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/bulk-runs" + + + payload = { + "title": "Bulk Run Title", + "inputParameters": [{"originUrl": "https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"}, {"originUrl": "https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}] + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/bulk-runs \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"title":"Bulk Run Title","inputParameters":[{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"},{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}]}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"title":"Bulk Run Title","inputParameters":[{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"},{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}]}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/bulk-runs + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "title": "Bulk Run Title", + "inputParameters": [["originUrl": "https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"], ["originUrl": "https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"]] + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the newly created Bulk run. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-403' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + '503': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/RobotUnderMaintenanceResponse' + get: + tags: + - bulk runs + summary: Retrieve a robot's bulk runs list + operationId: getBulkRuns + description: Retrieve a robot's bulk runs list. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + description: Page number + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/bulk-runs?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/bulk-runs" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1")! as + URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the bulk runs list. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRuns-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRuns-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + /robots/{robotId}/bulk-runs/{bulkRunId}: + get: + tags: + - bulk runs + summary: Retrieve a robot's bulk run + operationId: getBulkRun + description: >- + Retrieve a robot's bulk run along with a list of tasks run within the + bulk run. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: bulkRunId + schema: + type: string + required: true + example: 5aa4df52-25bb-48da-bf38-ce4f2bd98dd5 + description: | + Unique bulk run ID + - in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + description: Page number + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", + "/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: >- + A JSON object containing the bulk run information along with a + paginated list of all its tasks. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRun-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRun-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + /robots/{robotId}/webhooks: + get: + tags: + - webhooks + summary: Retrieve a robot's webhooks + operationId: getWebhooks + description: Retrieve a robot's webhook list. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/webhooks"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/webhooks\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/webhooks") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/webhooks", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/webhooks', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/webhooks"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/webhooks", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/webhooks", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/webhooks" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/webhooks") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/webhooks \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/webhooks + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/webhooks")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including monitors list. + content: + application/json: + schema: + $ref: '#/components/schemas/getWebhooks-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getWebhooks-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + post: + tags: + - webhooks + summary: Create a new webhook on a robot + operationId: createNewWebhook + description: Create a new webhook on a robot + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNewWebhookBodyParams' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":true,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":15}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @YES, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @15 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/monitors", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": True, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 15 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": true, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 15 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the newly created monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewWebhook-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewWebhook-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/webhooks/{webhookId}: + delete: + tags: + - webhooks + summary: Delete a robot's webhook + operationId: deleteWebhook + description: Delete a robot's webhook. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: webhookId + schema: + type: string + required: true + example: 6d7f1218-43fb-4735-ac71-21e81b1ab23e + description: | + Unique webhookId ID + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}"); + + var request = new RestRequest(Method.DELETE); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.delete("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "DELETE", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/webhooks/{webhookId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'DELETE', + url: 'https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"DELETE"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "DELETE", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("DELETE", "/v2/robots/{robotId}/webhooks/{webhookId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("DELETE", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Delete.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request DELETE \ + --url https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method DELETE \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "DELETE" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the deleted monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteWebhook-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteWebhook-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + webhooks: + taskWebhook: + post: + summary: Task Finished + tags: + - webhooks + requestBody: + content: + application/json: + schema: + type: object + required: + - event + - task + properties: + event: + type: string + enum: + - task.finishedSuccessfully + - task.finishedWithError + - task.capturedDataChanged + example: task.finishedSuccessfully + description: The event type that triggered the webhook + task: + $ref: '#/components/schemas/RobotTaskWebhook' + responses: + '200': + description: >- + Your webhook URL is called only once – regardless of the response + status. This behavior may change in the future and we may introduce + automatic retries in cases where the response status is not 200 and + your software is having a downtime. At this time, however, you need + to make sure that the webhook URL is always available and set the + response status code to 200. + content: + application/json: + example: + status: success + tableExportWebhook: + post: + summary: Table Export Finished (Beta) + tags: + - webhooks + - Beta + description: > + This webhook is called when a table export is finished. The exported + file can be a CSV, JSON, or zip file. + + + Your webhook URL is called only once regardless of the response status. + requestBody: + content: + application/json: + schema: + type: object + required: + - exportId + - exportFile + - robotName + - robotId + - exportFinishedAt + - exportCreatedAt + properties: + exportId: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: The unique ID of the export + robotId: + type: string + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: The unique ID of the robot + fileTemporaryUrl: + type: string + example: https://s3.amazonaws.com/some-bucket/your-export.csv + description: The URL of the exported file + fileTemporaryUrlExpiresAt: + type: number + format: timestamp + example: 1678795867879 + description: >- + The unix timestamp of when the file URL expires in + milliseconds + exportFinishedAt: + type: number + format: timestamp + example: 1678795867879 + description: >- + The unix timestamp of when the export was finished in + milliseconds + exportCreatedAt: + type: number + format: timestamp + example: 1678795867879 + description: >- + The unix timestamp of when the export was created in + milliseconds + responses: + '200': + content: + application/json: + example: + status: success + components: + schemas: + getSystemStatus-200: + type: object + required: + - tasksQueueStatus + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + tasksQueueStatus: + type: string + enum: + - OK + - UNDER_MAINTENANCE + example: OK + Team: + type: object + required: + - id + - api + - createdAt + properties: + id: + type: string + example: b04eaafa-00c2-41a2-9c6a-7f7d32805a91 + description: Unique team ID + name: + type: string + nullable: true + example: Browse AI team + description: Team name + api: + type: boolean + example: true + description: API accessibility + createdAt: + type: integer + example: 1678795867879 + description: Team creation date and time in the form of a Unix timestamp + getUserTeams-200: + type: object + required: + - statusCode + - messageCode + - teams + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + teams: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of Team this user has. + items: + type: array + items: + $ref: '#/components/schemas/Team' + UnauthorizedResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 401 + messageCode: + type: string + enum: + - unauthorized + - no_api_access + example: unauthorized + CommonParameterPart: + type: object + required: + - name + - label + properties: + type: + type: string + description: Parameter type + name: + type: string + example: originUrl + description: Parameter name + label: + type: string + example: Origin URL + description: Parameter title + TextParameter: + title: Text Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - defaultValue + - encrypted + properties: + encrypted: + type: boolean + example: false + description: Whether parameter value and defaultValue are encrypted + defaultValue: + type: string + example: >- + https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines + description: > + Parameter default value that will be used as a fallback if you + do not specify a parameter's value when running a robot. If + `encrypted` is `true`, this will appear as an arbitrary string + like `******`. Parameter default values can be updated on robot + Settings page on your dashboard. + value: + type: string + nullable: true + example: null + description: > + Parameter value specified when running robot. If `encrypted` is + `true`, this will appear as an arbitrary string like `******`. + type: + type: string + enum: ["text"] + example: "text" + description: Parameter type + pattern: + type: string + description: Parameter Pattern + NumberParameter: + title: Numeric Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - type + - name + - label + - defaultValue + properties: + type: + type: string + enum: + - number + example: number + description: Parameter type + name: + type: string + example: limit + description: Parameter name + label: + type: string + example: Limit + description: Parameter title + defaultValue: + type: number + example: 10 + description: >- + Parameter default value that will be used if you do not specify + a parameter's value when running a robot. + value: + type: number + nullable: true + example: null + description: Parameter value specified when running robot. + min: + type: number + nullable: true + example: 0 + description: Minimum value this parameter accepts + max: + type: number + nullable: true + example: 200 + description: Maximum value this parameter accepts + URLParameter: + title: URL Parameter + allOf: + - $ref: '#/components/schemas/TextParameter' + - type: object + required: + - type + - encrypted + properties: + type: + type: string + enum: + - url + example: url + description: Parameter type + encrypted: + type: boolean + example: false + description: Whether parameter value and defaultValue are encrypted + SelectParameterOption: + type: object + required: + - label + - value + properties: + label: + type: string + example: Option 1 + description: The label for the select option + value: + type: string + example: option1 + description: The value for the select option + SelectParameter: + title: Select Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - type + - name + - label + - defaultValue + - options + properties: + type: + type: string + enum: + - select + example: select + description: Parameter type + name: + type: string + example: choice + description: Parameter name + label: + type: string + example: Choice + description: Parameter title + defaultValue: + type: array + items: + type: string + example: + - option_1 + - option_2 + description: > + Parameter default value that will be used as a fallback if you + do not specify a parameter's value when running a robot. + + It should be an array of string values. Each string value should + be one of the `value` or `label` of the `options` array. For + each string value, if there is a matching `value` in the + `options` array, it will be used as the default value. + Otherwise, it looks for the `label` in the `options` and uses + the `value` of the option with that `label`. If no matching + `value` or `label` is found, it throws an error. + value: + type: array + items: + type: string + nullable: true + example: + - option_1 + - option_2 + description: > + Parameter value specified when running robot. + + If it is specified, it should be an array of string values. Each + string value should be one of the `value` or `label` of the + `options` array. For each string value, if there is a matching + `value` in the `options` array, it will be used as the default + value. Otherwise, it looks for the `label` in the `options` and + uses the `value` of the option with that `label`. If no matching + `value` or `label` is found, it throws an error. + options: + type: array + items: + $ref: '#/components/schemas/SelectParameterOption' + example: + - label: Option 1 label + value: option_1 + - label: Option 2 label + value: option_2 + description: Available options for the select parameter + RobotInputParameters: + type: array + items: + oneOf: + - $ref: '#/components/schemas/TextParameter' + - $ref: '#/components/schemas/NumberParameter' + - $ref: '#/components/schemas/URLParameter' + - $ref: '#/components/schemas/SelectParameter' + Robot: + type: object + required: + - id + - createdAt + properties: + id: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + name: + type: string + example: Extract data from Realtor.com + description: Robot name + createdAt: + type: integer + example: 1678795867879 + description: Robot creation date and time in the form of a Unix timestamp + inputParameters: + $ref: '#/components/schemas/RobotInputParameters' + getRobots-200: + type: object + required: + - statusCode + - messageCode + - robots + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + robots: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of robots this team has. + items: + type: array + items: + $ref: '#/components/schemas/Robot' + getRobot-200: + type: object + required: + - statusCode + - messageCode + - robot + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + robot: + $ref: '#/components/schemas/Robot' + getRobot-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + NotFoundResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 404 + messageCode: + type: string + enum: + - not_found + InternalServerResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 500 + messageCode: + type: string + enum: + - internal_server_error + RobotCookie: + type: object + properties: + name: + type: string + description: The name of the cookie. + example: ACCOUNT_CHOOSER + value: + type: string + description: The value of the cookie. + example: 12341234 + domain: + type: string + description: >- + The domain associated with the cookie. Specifies the domains to + which the cookie should be sent. + example: .example.com + expirationDate: + type: number + format: int64 + description: >- + The expiration date of the cookie in seconds since the UNIX epoch + (e.g., POSIX time). If not provided, the cookie will be treated as a + session cookie. + example: 1723659417 + path: + type: string + description: >- + The URL path to which the cookie should be sent. If not provided, it + defaults to the current path of the document location. + example: /products/ + secure: + type: boolean + description: >- + Indicates whether the cookie should only be sent over secure (HTTPS) + connections. If true, the cookie will not be sent over unencrypted + HTTP connections. + example: true + httpOnly: + type: boolean + description: >- + If true, the cookie is accessible only through the HTTP(S) protocol + and cannot be accessed through JavaScript or other client-side + scripts. + example: true + hostOnly: + type: boolean + description: >- + If true, the cookie is only sent to the exact domain specified in + the "domain" property. If false, the cookie is sent to subdomains as + well, provided that the "domain" property allows it. + example: true + required: + - name + - value + upsertRobotCookies-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + cookies: + type: array + items: + $ref: '#/components/schemas/RobotCookie' + CookieError: + type: object + required: + - summary + - fields + properties: + name: + type: string + description: Name of the cookie + example: ACCOUNT_CHOOSER + summary: + type: string + description: Summary of the error + example: Errors found in existing cookie fields + fields: + type: array + items: + type: object + required: + - field + - message + properties: + field: + type: string + description: Field name with the error + example: value + message: + type: string + description: Error message for the field + example: Required + upsertRobotCookies-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + example: bad_request + errors: + type: array + items: + $ref: '#/components/schemas/CookieError' + InputParameters: + type: object + description: An object of input parameters to override default input parameters. + example: + originUrl: https://www.ycombinator.com/companies/airbnb + companies_skip: 0 + companies_limit: 10 + additionalProperties: + oneOf: + - type: string + - type: number + - type: array + items: + type: string + CapturedTexts: + type: object + description: Captured texts + example: + Product Name: Alexis + Width: '15' + Pattern Repeat: PATTERN REPEAT + Construction: Hand woven + Fiber: 100% Wool + Color: null + Main Image: >- + https://isteam.wsimg.com/ip/e31f7bba-252b-4669-9209-639d1c00765d/ols/258_original + additionalProperties: + type: string + nullable: true + CapturedScreenshots: + type: object + description: All screenshots captured in this task. + example: + top-ads: + id: b4d132f3-12d9-4770-ac7d-88e481fc5b47 + name: Top ads + src: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + width: 600 + height: 120 + x: 201 + 'y': 142 + deviceScaleFactor: 1.2 + full: page + comparedToScreenshotId: 29d742c2-6f45-4f29-9d48-ba6fe66e6e3d + diffImageSrc: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + changePercentage: 20 + diffThreshold: 5 + fileRemovedAt: 1678795867879 + additionalProperties: + type: object + required: + - id + - src + - width + - height + - x + - 'y' + - deviceScaleFactor + - changePercentage + - diffThreshold + properties: + id: + type: string + example: b4d132f3-12d9-4770-ac7d-88e481fc5b47 + description: Unique screenshot ID + name: + type: string + nullable: true + example: Top ads + description: Screenshot name + src: + type: string + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + description: Screenshot image link + width: + type: number + example: 600 + minimum: 0 + description: Screenshot rectangle width in pixels + height: + type: number + example: 120 + minimum: 0 + description: Screenshot rectangle height in pixels + x: + type: number + example: 201 + description: >- + Screenshot rectangle distance from the left edge of the page in + pixels + 'y': + type: number + example: 142 + description: >- + Screenshot rectangle distance from the top edge of the page in + pixels + deviceScaleFactor: + type: number + example: 1.2 + description: Device scale factor when screenshot was taken + full: + type: string + nullable: true + example: page + description: > + Whether this is a full *page* screenshot, a *viewport* screenshot, + or a different type of screenshot. + + + `null` means it is either an HTML element screenshot or a + particular rectangle (x, y, w, h) screenshot. + comparedToScreenshotId: + type: string + nullable: true + example: 29d742c2-6f45-4f29-9d48-ba6fe66e6e3d + description: >- + If screenshot was taken in a monitoring check, this is the ID of + the screenshot it was compared to. + diffImageSrc: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + description: >- + A transparent PNG highlighting changes compared to previous + screenshot in red + changePercentage: + type: number + example: 20 + minimum: 0 + description: How much screenshot changed compared to previous screenshot + diffThreshold: + type: integer + example: 5 + minimum: 0 + description: >- + The change percentage threshold above which the user would be + notified of the change, based on monitor settings. + fileRemovedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + After your account's data retention period, screenshots get + removed and this field will be screenshot removal date and time + in the form of a Unix timestamp. + CapturedLists: + type: object + description: All lists captured in this task. + example: + companies: + - Position: '1' + name: Airbnb + location: San Francisco, CA, USA + description: Book accommodations around the world. + - Position: '2' + name: Coin base + location: San Francisco, CA, USA + description: Buy, sell, and manage crypto currencies. + - Position: '3' + name: DoorDash + location: San Francisco, CA, USA + description: Restaurant delivery. + additionalProperties: + type: array + items: + $ref: '#/components/schemas/CapturedTexts' + RobotTask: + type: object + required: + - id + - inputParameters + - robotId + - createdAt + - runByAPI + - triedRecordingVideo + - capturedTexts + - capturedScreenshots + - capturedLists + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique task ID + inputParameters: + $ref: '#/components/schemas/InputParameters' + robotId: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + status: + type: string + enum: + - failed + - successful + - in-progress + example: successful + description: task status + runByUserId: + type: string + nullable: true + example: null + description: User ID who ran the robot on the dashboard + robotBulkRunId: + type: string + nullable: true + example: null + description: Robot bulk run ID associated with this task + runByTaskMonitorId: + type: string + nullable: true + example: null + description: Monitor ID that ran this check + runByAPI: + type: boolean + example: true + description: Whether the robot was ran through the API + createdAt: + type: integer + example: 1678795867879 + description: Task creation date and time in the form of a Unix timestamp + startedAt: + type: integer + nullable: true + example: 1678795867879 + description: Task start date and time in the form of a Unix timestamp + finishedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + Task finish date and time in the form of a Unix timestamp. + + + If `null`, it means robot is still running and capturing data. + + + Tasks time out with an error if they are not finished within 15 + minutes (or the maximum duration allowed on your plan). + userFriendlyError: + type: string + nullable: true + example: null + description: If task fails, a user-friendly error will be provided here. + triedRecordingVideo: + type: boolean + example: true + description: > + Whether the robot tried to record a video while performing this + task. + + + You can change a robot's video recording setting on its Settings + page. + + + Robots try to record a video when a task is failed and auto-retried + as well. + videoUrl: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4 + description: >- + If a video was recorded for this task, this is the link to the + video. + videoRemovedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + After your account's data retention period, task videos get removed + and this field will be video removal date and time in the form of a + Unix timestamp. + retriedOriginalTaskId: + type: string + nullable: true + example: 673da019-bf0c-476e-9c4f-d35252a151dc + description: >- + The ID of the original failed task this task was retrying. For + example, if task A failed and was retried by task B, and task B was + retried by task C, `retriedOriginalTaskId` will point to task A in + both task B and C. + retriedByTaskId: + type: string + nullable: true + example: null + description: > + The ID of the task that retried this task, if this task failed with + an error and was retried. + + + Failed tasks get retried if "Double Check" option is enabled on + robot Settings page. "Double Check" is enabled by default. + capturedDataTemporaryUrl: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host + description: >- + If your task's captured data exceeds 100KB, the data will be only + accessible through this link. There's a 24 hours expiration time for + this link (you need to call this API again to get a new link if it + expires). + capturedTexts: + $ref: '#/components/schemas/CapturedTexts' + capturedScreenshots: + $ref: '#/components/schemas/CapturedScreenshots' + capturedLists: + $ref: '#/components/schemas/CapturedLists' + getRobotTasks-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + required: + - robotTasks + properties: + robotTasks: + type: object + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of tasks this robot has. + pageNumber: + type: integer + example: 1 + description: Current page number. + hasMore: + type: boolean + example: true + description: Whether there are more tasks on the next page. + items: + type: array + items: + $ref: '#/components/schemas/RobotTask' + getRobotTasks-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - invalid_from_date + - invalid_to_date + example: invalid_robot_id + NewRobotTaskBodyParams: + type: object + properties: + recordVideo: + type: boolean + example: false + description: >- + Try to record a video while running the task. This is not guaranteed + to work as the robot might skip video recording if the site is too + heavy. + minLength: 1 + maxLength: 200 + required: false + inputParameters: + $ref: '#/components/schemas/InputParameters' + newRobotTask-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/RobotTask' + newRobotTask-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - body_parse_error + - invalid_robot_id + - invalid_input_parameters + example: bad_request + CreditsLimitReachedResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - credits_limit_reached + RobotUnderMaintenanceResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 503 + messageCode: + type: string + enum: + - robot_under_maintenance + getRobotTask-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/RobotTask' + getRobotTask-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + - invalid_task_id + example: bad_request + Schedules: + type: array + description: | + Array of schedules. + deprecated: true + items: + type: object + title: Fixed interval schedule + required: + - type + - everyMinutes + properties: + type: + type: string + enum: + - FIXED_INTERVAL + example: FIXED_INTERVAL + description: Schedule type + everyMinutes: + type: number + example: 60 + description: Schedule interval in minutes + example: + - type: FIXED_INTERVAL + everyMinutes: 60 + Schedule: + type: string + description: | + recurring schedule. + example: FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR + Monitor: + type: object + required: + - id + - name + - status + - pausedReason + - inputParameters + - notifyOnCapturedScreenshotChange + - notifyOnCapturedTextChange + - capturedScreenshotNotificationThreshold + - createdAt + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique robot monitor ID + name: + type: string + example: Monitor Products + description: Monitor name + status: + type: string + enum: + - active + - paused + example: active + description: >- + Represents the current state of the monitor. 'active' indicates that + the monitor is currently operational and performing its intended + functions, while 'paused' signifies that the monitor's activities + are temporarily suspended. The 'paused' state may be due to reasons + specified in the 'pausedReason' attribute. + pausedReason: + type: string + nullable: true + enum: + - lowCredits + - tooManyFailures + - userRequested + - userInactivity + example: null + description: Specifies the reason why the monitor is in a paused state. + inputParameters: + $ref: '#/components/schemas/InputParameters' + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + notifyOnCapturedTextChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + capturedScreenshotNotificationThreshold: + type: number + example: 15 + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + createdAt: + type: integer + example: 1678795867879 + description: Monitor creation date and time in the form of a Unix timestamp. + pausedAt: + type: integer + nullable: true + example: 1678795867879 + description: Monitor pause date and time in the form of a Unix timestamp. + updatedAt: + type: integer + nullable: true + example: 1678795867879 + description: Monitor last update date and time in the form of a Unix timestamp. + getMonitors-200: + type: object + required: + - statusCode + - messageCode + - monitors + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitors: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: number + example: 10 + description: Total number of monitors this robot has + items: + type: array + description: Array of all monitors + items: + $ref: '#/components/schemas/Monitor' + getMonitors-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + example: bad_request + CreateNewMonitorRequestBody: + type: object + required: + - name + - inputParameters + - notifyOnCapturedScreenshotChange + - notifyOnCapturedTextChange + - capturedScreenshotNotificationThreshold + properties: + name: + type: string + example: Monitor Products + description: Monitor name + minLength: 1 + maxLength: 200 + inputParameters: + $ref: '#/components/schemas/InputParameters' + description: An object of input parameters to override default input parameters. + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + notifyOnCapturedTextChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + capturedScreenshotNotificationThreshold: + type: number + example: 15 + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + createNewMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + CreateOrUpdateMonitorBadRequestResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + - invalid_name + - invalid_status + - invalid_input_parameters + - invalid_notifyOnCapturedScreenshotChange + - invalid_notifyOnCapturedTextChange + - invalid_capturedScreenshotNotificationThreshold + - invalid_schedules + - invalid_schedule + - invalid_monitor_id + example: bad_request + CreateOrUpdateMonitorForbiddenResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - schedule_interval_below_minimum + example: schedule_interval_below_minimum + getMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + getMonitor-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - invalid_monitor_id + example: bad_request + deleteMonitor-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + deleteMonitor-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - invalid_monitor_id + example: invalid_robot_id + MonitorUpdateBodyParams: + type: object + properties: + name: + type: string + example: Monitor Products + description: Monitor name + nullable: true + status: + type: string + enum: + - active + - paused + example: active + description: >- + If set to `paused`, the monitor will stop working until an `active` + status is sent. + nullable: true + inputParameters: + $ref: '#/components/schemas/InputParameters' + nullable: true + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + nullable: true + notifyOnCapturedTextChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + nullable: true + capturedScreenshotNotificationThreshold: + type: number + example: 15 + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + nullable: true + updateMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + BulkRun: + type: object + required: + - id + - tasksCount + - robotId + - createdAt + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique bulk run ID + title: + type: string + nullable: true + example: Bulk Run Title + description: An optional string that describes the bulk run. + minLength: 1 + maxLength: 200 + tasksCount: + type: integer + example: 10 + description: Number of tasks under this bulk run. + robotId: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + createdAt: + type: integer + example: 1678795867879 + description: Bulk run creation date and time in the form of a Unix timestamp. + BulkRuns: + type: object + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of bulk runs a robot has had. + pageNumber: + type: integer + example: 1 + description: Current page number. + hasMore: + type: boolean + example: true + description: Whether there are more bulk runs on the next page. + items: + type: array + items: + $ref: '#/components/schemas/BulkRun' + getBulkRuns-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/BulkRuns' + getBulkRuns-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + ArrayOfUserInputParameters: + type: array + description: >- + An array of input parameters to override the task's default input + parameters. + example: + - originUrl: https://www.ycombinator.com/companies/airbnb + companies_skip: 0 + companies_limit: 10 + - originUrl: https://www.ycombinator.com/companies/coinbase + companies_skip: 0 + companies_limit: 20 + items: + $ref: '#/components/schemas/InputParameters' + BulkRunBodyParams: + type: object + required: + - inputParameters + properties: + title: + type: string + example: Bulk Run Title + description: A string that describes the bulk run. + minLength: 1 + maxLength: 200 + required: false + inputParameters: + $ref: '#/components/schemas/ArrayOfUserInputParameters' + newBulkRun-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + properties: + bulkRun: + $ref: '#/components/schemas/BulkRun' + newBulkRun-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - body_parse_error + - invalid_robot_id + - invalid_input_parameters + - zero_length_parameters + example: bad_request + newBulkRun-403: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - credits_limit_reached + - exceeded_bulk_run_threshold + example: exceeded_bulk_run_threshold + RobotTasks: + type: object + description: A paginated list of tasks. + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of tasks. + pageNumber: + type: integer + example: 1 + description: Current page number. + hasMore: + type: boolean + example: true + description: Whether there are more tasks on the next page. + items: + type: array + items: + $ref: '#/components/schemas/RobotTask' + getBulkRun-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + required: + - bulkRun + - robotTasks + properties: + bulkRun: + $ref: '#/components/schemas/BulkRun' + robotTasks: + $ref: '#/components/schemas/RobotTasks' + getBulkRun-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + Webhook: + type: object + required: + - id + - url + - webhookEvent + - createdAt + properties: + id: + type: string + example: 6d7f1218-43fb-4735-ac71-21e81b1ab23e + description: Unique webhook ID + url: + type: string + example: https://example.com/v2/webhooks/callback/events + description: Webhook URL + webhookEvent: + type: string + enum: + - taskCapturedDataChanged + - taskFinished + - taskFinishedSuccessfully + - taskFinishedWithError + - tableExportFinishedSuccessfully + example: taskFinished + createdAt: + type: integer + example: 1678795867879 + description: Monitor creation date and time in the form of a Unix timestamp. + getWebhooks-200: + type: object + required: + - statusCode + - messageCode + - webhooks + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + webhooks: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: number + example: 10 + description: Total number of webhooks this robot has + items: + type: array + description: Array of all webhooks + items: + $ref: '#/components/schemas/Webhook' + getWebhooks-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + example: bad_request + CreateNewWebhookBodyParams: + type: object + required: + - hookUrl + - eventType + properties: + hookUrl: + type: string + example: https://example.com/v2/webhooks/callback/events + description: Webhook URL + eventType: + type: string + enum: + - taskCapturedDataChanged + - taskFinished + - taskFinishedSuccessfully + - taskFinishedWithError + - tableExportFinishedSuccessfully + example: taskFinished + createNewWebhook-200: + type: object + required: + - statusCode + - messageCode + - webhook + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + webhook: + $ref: '#/components/schemas/Webhook' + createNewWebhook-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + - invalid_hookUrl + - invalid_eventType + example: bad_request + deleteWebhook-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + deleteWebhook-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - invalid_webhook_id + - bad_request + example: invalid_robot_id + RobotTaskWebhook: + type: object + required: + - id + - inputParameters + - robotId + - createdAt + - runByAPI + - triedRecordingVideo + - capturedTexts + - capturedScreenshots + - capturedLists + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique task ID + inputParameters: + $ref: '#/components/schemas/InputParameters' + robotId: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + status: + type: string + enum: + - failed + - successful + - in-progress + example: successful + description: task status + runByUserId: + type: string + nullable: true + example: null + description: User ID who ran the robot on the dashboard + robotBulkRunId: + type: string + nullable: true + example: null + description: Robot bulk run ID associated with this task + runByTaskMonitorId: + type: string + nullable: true + example: null + description: Monitor ID that ran this check + runByAPI: + type: boolean + example: true + description: Whether the robot was ran through the API + createdAt: + type: integer + example: 1678795867879 + description: Task creation date and time in the form of a Unix timestamp + startedAt: + type: integer + nullable: true + example: 1678795867879 + description: Task start date and time in the form of a Unix timestamp + finishedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + Task finish date and time in the form of a Unix timestamp. + + + If `null`, it means robot is still running and capturing data. + + + Tasks time out with an error if they are not finished within 15 + minutes (or the maximum duration allowed on your plan). + userFriendlyError: + type: string + nullable: true + example: null + description: If task fails, a user-friendly error will be provided here. + triedRecordingVideo: + type: boolean + example: true + description: > + Whether the robot tried to record a video while performing this + task. + + + You can change a robot's video recording setting on its Settings + page. + + + Robots try to record a video when a task is failed and auto-retried + as well. + videoUrl: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4 + description: >- + If a video was recorded for this task, this is the link to the + video. + videoRemovedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + After your account's data retention period, task videos get removed + and this field will be video removal date and time in the form of a + Unix timestamp. + retriedOriginalTaskId: + type: string + nullable: true + example: 673da019-bf0c-476e-9c4f-d35252a151dc + description: >- + The ID of the original failed task this task was retrying. For + example, if task A failed and was retried by task B, and task B was + retried by task C, `retriedOriginalTaskId` will point to task A in + both task B and C. + retriedByTaskId: + type: string + nullable: true + example: null + description: > + The ID of the task that retried this task, if this task failed with + an error and was retried. + + + Failed tasks get retried if "Double Check" option is enabled on + robot Settings page. "Double Check" is enabled by default. + capturedTexts: + $ref: '#/components/schemas/CapturedTexts' + capturedScreenshots: + $ref: '#/components/schemas/CapturedScreenshots' + capturedLists: + $ref: '#/components/schemas/CapturedLists' + parameters: + authorization: + in: header + name: authorization + required: true + schema: + type: string + example: Bearer YOUR_SECRET_API_KEY + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. +konfigCliVersion: 1.38.34 diff --git a/sdks/db/fixed-specs-cache/chat-kitty-fixed-spec.yaml b/sdks/db/fixed-specs-cache/chat-kitty-fixed-spec.yaml new file mode 100644 index 0000000000..1e2bed1fb2 --- /dev/null +++ b/sdks/db/fixed-specs-cache/chat-kitty-fixed-spec.yaml @@ -0,0 +1,15856 @@ +publishJson: + company: ChatKitty + serviceName: false + sdkName: chat-kitty-{language}-sdk + clientName: ChatKitty + metaDescription: >- + ChatKitty gives you the tools to build real-time chat for web and mobile + apps, complete with advanced features like moderation, offline messaging and + analytics. + apiStatusUrls: inherit + homepage: chatkitty.com + developerDocumentation: chatkitty.com/docs/api/reference + categories: + - communications_software + - messaging + - chat_platforms + - chat_sdks +rawSpecString: | + openapi: 3.0.1 + info: + title: ChatKitty Platform API + description: |- + OpenAPI specification (OAS) for the ChatKitty Platform API. + See the Interactive Docs to try ChatKitty API methods without writing code, + and get the complete schema of resources exposed by the API. + termsOfService: https://chatkitty.com/terms-of-service + contact: + name: Support + url: mailto:support@chatkitty.com + license: + name: MIT + url: https://opensource.org/licenses/MIT + version: 2.57.0 + externalDocs: + description: Platform API Interactive Docs + url: https://api.chatkitty.com/docs/reference + servers: + - url: https://api.chatkitty.com + tags: + - name: analytics + description: Export analytics data from your ChatKitty application + x-displayName: Analytics + - name: application + description: Configure and manage your ChatKitty application + x-displayName: Application + - name: channels + description: Operations to create, retrieve, update and delete channels + x-displayName: Channels + - name: chat-sessions + description: Chat session operations + x-displayName: Chat Sessions + - name: function-versions + description: Chat function version operations + x-displayName: Chat Function Versions + - name: functions + description: Chat function operations + x-displayName: Chat Functions + - name: imports + description: Import user, channel, message data into your ChatKitty application + x-displayName: Imports + - name: jobs + description: >- + Retrieve information about long running scheduled jobs like imports and + exports + x-displayName: Jobs + - name: messages + description: Operations to retrieve, update and delete messages + x-displayName: Messages + - name: runtime + description: Chat runtime operations + x-displayName: Chat Runtime + - name: threads + description: Message thread operations + x-displayName: Threads + - name: user-sessions + description: User session operations + x-displayName: User Sessions + - name: users + description: User operations + x-displayName: Users + paths: + /v1/analytics/messages: + post: + tags: + - analytics + summary: Export message analytics + description: Batch export message analytics data + operationId: export-message-analytics + responses: + '202': + description: Export job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + x-codeSamples: [] + /v1/analytics/users: + post: + tags: + - analytics + summary: Export user analytics + description: Batch export user analytics data + operationId: export-user-analytics + responses: + '202': + description: Export job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: [] + /v1/application: + get: + tags: + - application + summary: Retrieve the authenticated application + description: >- + Returns the ChatKitty application associated with the authentication + credentials used. + + + You must use an **OAuth V2 Bearer token** to access this endpoint. + operationId: retrieve-authenticated-application + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:application + x-codeSamples: + - lang: cURL + source: | + curl -X 'GET' \ + 'https://api.chatkitty.com/v1/application' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Application.retrieveAuthenticatedApplication() + /v1/application/settings: + get: + tags: + - application + summary: Retrieve the authenticated application settings + description: Returns the current settings configuring this application + operationId: retrieve-authenticated-application-settings + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:application + x-codeSamples: + - lang: cURL + source: | + curl -X 'GET' \ + 'https://api.chatkitty.com/v1/application/settings' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: > + // npm install chatkitty-platform-sdk + + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await + chatkitty.Application.retrieveAuthenticatedApplicationSettings() + put: + tags: + - application + summary: Update the authenticated application settings + description: Update the settings configuring this application + operationId: update-authenticated-application-settings + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - update:application + x-codeSamples: + - lang: cURL + source: | + curl -X 'PUT' \ + 'https://api.chatkitty.com/v1/application/settings' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "guestUsers": "DISABLED", + "userCreatedChannels": "DISABLED" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Application.updateAuthenticatedApplicationSettings({ + guestUsers: 'DISABLED', + userCreatedChannels: 'DISABLED' + }) + /v1/channels: + get: + tags: + - channels + summary: List channels + description: Returns a page of channels belonging to this application + operationId: list-channels + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: type + in: query + description: Filters by channel type + required: false + schema: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + - name: members + in: query + description: Filters by channel members using their usernames + required: false + schema: + uniqueItems: true + type: array + items: + type: string + - name: startTime + in: query + description: 'Filters for channels created within a time range: start time' + required: false + schema: + type: string + format: date-time + - name: endTime + in: query + description: 'Filters for channels created within a time range: end time' + required: false + schema: + type: string + format: date-time + - name: properties + in: query + description: Filters by channel custom properties + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels?page=0&size=5' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannels() + post: + tags: + - channels + summary: Create a channel + description: Creates a new channel or returns an equivalent existing channel + operationId: create-channel + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "PUBLIC", + "name": "b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.createChannel({ + type: "PUBLIC", + name: "b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7" + }) + /v1/channels/{id}: + get: + tags: + - channels + summary: Retrieve a channel + description: Returns a channel by ID + operationId: retrieve-channel + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.retrieveChannel(55913) + delete: + tags: + - channels + summary: Delete a channel + description: Deletes a channel by ID + operationId: delete-channel + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - delete:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.deleteChannel(55913) + patch: + tags: + - channels + summary: Update a channel + description: Updates a channel properties + operationId: update-channel + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - update:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PATCH' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json+merge-patch' \ + -d '{ + "displayName": "A chatty channel" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.updateChannel(55913, { + displayName: "A chatty channel" + }) + /v1/channels/{id}/events: + post: + tags: + - channels + summary: Send a channel event + description: Sends a custom channel event + operationId: send-channel-event + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelGenericEventResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - create:channel_event + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/events' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "My Custom Event", + "properties": { + "payload": "Boom!", + "stuff": { + "favoriteNumber": 42, + "favoriteMovie": "Lilo and Stitch" + } + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelEvent(55913, { + type: "My Custom Event", + properties: { + payload: "Boom!", + stuff: { + "favoriteNumber": 42, + "favoriteMovie": "Lilo and Stitch" + } + } + }) + /v1/channels/{id}/invites: + get: + tags: + - channels + summary: List channel invites + description: Returns a page of invites sent to join this channel + operationId: list-channel-invites + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel_invite + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/invites?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelInvites(67026) + post: + tags: + - channels + summary: Send a channel invite + description: Sends a channel invite to user + operationId: send-channel-invite + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelInviteResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:channel_invite + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/67026/invites' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + user: { + "username": "jane@chatkitty.com" + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelInvite(67026, { + user: { + username: "jane@chatkitty.com" + } + }) + /v1/channels/{id}/keystrokes: + post: + tags: + - channels + summary: Send channel keystrokes + description: Sends keystrokes in this channel on behalf of a user + operationId: send-channel-keystrokes + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/CreateDelegatedReplyThreadKeystrokesResource + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:keystrokes + x-codeSamples: [] + /v1/channels/{id}/members: + get: + tags: + - channels + summary: List a channel's members + description: Returns a page of channel members + operationId: list-channel-members + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/members?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMembers(67026) + post: + tags: + - channels + summary: Add a channel member + description: Makes a user a group channel member + operationId: add-channel-member + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserReference' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/members' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "username": "jane@chatkitty.com" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.addChannelMember(55913, { + username: "jane@chatkitty.com" + }) + /v1/channels/{id}/members/{user_id}: + delete: + tags: + - channels + summary: Remove a channel member + description: Removes a member from a group channel + operationId: remove-channel-member + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: user_id + in: path + description: User ID of member to be removed + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - delete:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913/members/14503' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.removeChannelMember(55913, 14503) + /v1/channels/{id}/memberships: + get: + tags: + - channels + summary: List channel memberships + description: Returns a page of channel membership info for this channel + operationId: list-channel-memberships + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/memberships?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMemberships(702) + /v1/channels/{id}/messages: + get: + tags: + - channels + summary: List channel messages + description: Returns a page of messages sent in this channel + operationId: list-channel-messages + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - name: username + in: query + required: false + schema: + type: string + - name: query + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMessages(702) + post: + tags: + - channels + summary: Send a channel message + description: Sends a message in this channel as the system or on behalf of a user + operationId: send-channel-message + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateMessageResource' + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + format: binary + groupTag: + type: string + username: + type: string + properties: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/702/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "TEXT", + "body": "🌞" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelMessage(702, { + "type": "TEXT", + "body": "🌞" + }) + /v1/channels/{id}/moderators: + get: + tags: + - channels + summary: Lists a channel's moderators + description: Returns a page of channel moderators + operationId: list-channel-moderators + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:channel_moderator + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/moderators?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelModerators(67026) + post: + tags: + - channels + summary: Add a channel moderator + description: Makes a user a group channel moderator + operationId: add-channel-moderator + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserReference' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - read:channel_membership + - create:channel_moderator + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/moderators' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "username": "jane@chatkitty.com" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.addChannelModerator(55913, { + username: "jane@chatkitty.com" + }) + /v1/channels/{id}/moderators/{user_id}: + delete: + tags: + - channels + summary: Remove a channel moderator + description: Removes a moderator from a group channel + operationId: remove-channel-moderator + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: user_id + in: path + description: User ID of moderator to be removed + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - delete:channel_moderator + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913/moderators/14503' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.removeChannelModerator(55913, 14503) + /v1/channels/{id}/participants: + get: + tags: + - channels + summary: List channel participants + description: >- + Returns a page of channel active participants: members that currently + online + operationId: list-channel-participants + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:chat_session + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/participants?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelParticipants(702) + /v1/channels/{id}/reported-messages: + get: + tags: + - channels + summary: List channel reported messages + description: Returns a page of reported messages in this channel + operationId: list-channel-reported-messages + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:message_report + x-codeSamples: [] + /v1/chat-sessions: + get: + tags: + - chat-sessions + summary: List chat sessions + description: Returns a page of chat sessions belonging to this application + operationId: list-chat-sessions + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: state + in: query + description: Filters by state + required: false + schema: + type: string + enum: + - ACTIVE + - ENDED + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:chat_session + x-codeSamples: [] + /v1/function-versions/{id}: + get: + tags: + - function-versions + summary: Retrieve a chat function version + description: Returns a chat function version by ID + operationId: retrieve-function-version + parameters: + - name: id + in: path + description: Chat function version ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/function-versions/13515' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.FunctionVersions.retrieveFunctionVersion(13515) + /v1/functions/{id}: + get: + tags: + - functions + summary: Retrieve a chat function + description: Returns a chat function by ID + operationId: retrieve-function + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.retrieveFunction(1) + + + /v1/functions/{id}/current-version: + get: + tags: + - functions + summary: Retrieve chat function current version + description: Returns the version of this chat function currently deployed + operationId: retrieve-function-current-version + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - read:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/13515/current-version' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.retrieveFunctionCurrentVersion(13515) + + + /v1/functions/{id}/invocations: + get: + tags: + - functions + summary: List chat function invocations + description: >- + Returns a page of invocations of this chat function. A log of previous + runs of the function + operationId: list-function-invocations + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - read:function_invocation + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1/invocations?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.listFunctionInvocations(1) + /v1/functions/{id}/versions: + get: + tags: + - functions + summary: List chat function versions + description: Returns a page of versions of this chat function + operationId: list-function-versions + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - read:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1/versions?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Functions.listFunctionVersions(1) + + post: + tags: + - functions + summary: Create a chat function version + description: Creates a new version of this chat function + operationId: create-function-version + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChatFunctionVersionResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - create:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/functions/1/versions' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "handlerScript": "const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('\''Hello '\'' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n '\''name'\'': email,\n '\''displayName'\'': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { '\''id'\'': user.data.id });\n });\n\n return logs;\n}" + } + + ' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Functions.createFunctionVersion(13515,{ + "handlerScript": "const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello ' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}" + }) + /v1/imports/channels: + post: + tags: + - imports + summary: Import channels + description: Batch imports channels from a JSON array file + externalDocs: + description: >- + Learn more about importing channels and the channel import JSON array + file format + url: https://chatkitty.com/docs/concepts/imports#importing-channels + operationId: import-channels + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with channels + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/channels' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@channels_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["jane@chatkitty.com","john@chatkitty.com"]}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importChannels(file) + /v1/imports/channels/{id}/members: + post: + tags: + - imports + summary: Import channel members + description: Batch imports channel members from a JSON array file + externalDocs: + description: >- + Learn more about importing channel members and the channel member + import JSON array file format + url: https://chatkitty.com/docs/concepts/imports#importing-channel-members + operationId: import-channel-members + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with user references to be added as members + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/channels/1/members' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@members_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["b2a6da08-88bf-4778-b993-7234e6d8a3ff","c6f75947-af48-4893-a78e-0e0b9bd68580"]}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importChannelMembers(1, [{ + idempotencyKey: "123", + username: "string" + }]) + /v1/imports/messages: + post: + tags: + - imports + summary: Import messages + description: Batch imports messages from a JSON array file + externalDocs: + description: >- + Learn more about importing messages and the message import JSON array + file format + url: https://chatkitty.com/docs/concepts/imports#importing-messages + operationId: import-messages + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with messages + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@messages_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"type":"TEXT","body":"Hello, World!"}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importMessages(file) + /v1/imports/users: + post: + tags: + - imports + summary: Import users + description: Batch imports users from a JSON array file + externalDocs: + description: >- + Learn more about importing users and the user import JSON array file + format + url: https://chatkitty.com/docs/concepts/imports#importing-users + operationId: import-users + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with users + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/users' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@users_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{name:"jane@chatkitty.com",displayName:"JaneDoe",isGuest:false,properties:{favoriteNumber:42}}]'], + "import.json", + { + type: "application/json" + }) + + + await chatkitty.Imports.importUsers(file) + /v1/jobs: + get: + tags: + - jobs + summary: List jobs + description: Returns a page of jobs created for this application + operationId: list-jobs + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: running + in: query + description: Filters for jobs currently running + required: false + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:job + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/jobs' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Jobs.listJobs() + /v1/jobs/{id}: + get: + tags: + - jobs + summary: Retrieve a job + description: Returns a job by ID + operationId: retrieve-job + parameters: + - name: id + in: path + description: Job ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:job + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/jobs/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Jobs.retrieveJob(1) + /v1/messages: + get: + tags: + - messages + summary: List messages + description: Returns a page of messages belonging to this application + operationId: list-messages + parameters: + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - name: username + in: query + description: Filters messages by a sender's username + required: false + schema: + type: string + - name: query + in: query + description: Filters text messages by text contained in the message body + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.listMessages() + delete: + tags: + - messages + summary: Delete messages + description: Deletes all messages belonging to this application + operationId: delete-messages + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - delete:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.deleteMessages() + /v1/messages/{id}: + get: + tags: + - messages + summary: Retrieve a message + description: Returns a message by ID + operationId: retrieve-message + parameters: + - name: id + in: path + description: Message ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages/44902' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.retrieveMessage(44902) + delete: + tags: + - messages + summary: Delete a message + description: Deletes a message by ID + operationId: delete-message + parameters: + - name: id + in: path + description: Message ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - delete:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/messages/67528' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.deleteMessage(67528) + + patch: + tags: + - messages + summary: Update a message + description: Updates a message properties + operationId: update-message + parameters: + - name: id + in: path + description: Message ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - update:message + x-codeSamples: [] + /v1/messages/{id}/read-receipts: + get: + tags: + - messages + summary: List message read receipts + description: Returns a page of read receipts for this message + operationId: list-message-read-receipts + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - read:read_receipt + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages/1/read-receipts?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.listMessageReadReceipts(1) + + /v1/runtimes/nodejs: + get: + tags: + - runtime + summary: Retrieve NodeJS chat runtime + description: Return this application's NodeJS chat runtime + operationId: retrieve-nodejs-runtime + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.retrieveNodejsRuntime() + + /v1/runtimes/nodejs/dependencies: + put: + tags: + - runtime + summary: Update NodeJS chat runtime NPM dependencies + description: Updates the NPM dependencies for this application's NodeJS chat runtime + operationId: update-nodejs-runtime-dependencies + requestBody: + content: + application/vnd.chatkitty+json: + schema: + type: array + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/dependencies' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '[ + { + "name": "firebase", + "version": "^9.8.2" + } + ]' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeDependencies([ + { + "name": "firebase", + "version": "^9.8.2" + } + ]) + /v1/runtimes/nodejs/environment-variables: + put: + tags: + - runtime + summary: Update NodeJS chat runtime environment variables + description: >- + Updates the runtime environment variables of this application's NodeJS + chat runtime + operationId: update-nodejs-runtime-environment-variables + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeEnvironmentVariablesProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/environment-variables' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "CUSTOM_ENV_AWS_REGION": "us-east-1" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeEnvironmentVariables({ + "CUSTOM_ENV_AWS_REGION": "us-east-1" + }) + /v1/runtimes/nodejs/functions: + get: + tags: + - runtime + summary: List NodeJS chat runtime functions + description: Returns a page of functions for this application's NodeJS chat runtime + operationId: list-nodejs-runtime-functions + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - read:function + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/functions?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.listNodejsRuntimeFunctions() + + post: + tags: + - runtime + summary: Create a NodeJS chat runtime function + description: Creates a NodeJS chat function for this runtime + operationId: create-nodejs-runtime-function + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChatFunctionResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - read:function + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/functions' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "user.attempted.start_session", + "name": "User Attempted Start Session" + }' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Runtime.createNodejsRuntimeFunction({ + "type": "user.attempted.start_session", + "name": "User Attempted Start Session" + }) + + /v1/runtimes/nodejs/initialization-script: + put: + tags: + - runtime + summary: Update NodeJS chat runtime initialization script + description: >- + Updates the initialization script for this application's NodeJS chat + runtime + operationId: update-nodejs-runtime-initialization-script + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/initialization-script' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "script": "import firebase from '\''firebase'\'';\r\nimport '\''@firebase/auth'\'';\r\nimport '\''@firebase/firestore'\'';\r\n\r\nconst firebaseConfig = {\r\n apiKey: '\''AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY'\'',\r\n authDomain: '\''chatkitty-example.firebaseapp.com'\'',\r\n databaseURL: '\''https://chatkitty-example.firebaseio.com'\'',\r\n projectId: '\''chatkitty-example'\'',\r\n storageBucket: '\''chatkitty-example.appspot.com'\'',\r\n messagingSenderId: '\''540634290949'\'',\r\n appId: '\''1:540634290949:web:cd754ff7e98087230ff56c'\'',\r\n measurementId: '\''G-BB7Q5DRQK6'\'',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeInitializationScript({ + "script": "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + }) + /v1/threads/{id}: + get: + tags: + - threads + summary: Retrieve a thread + description: Returns a thread by ID + operationId: retrieve-thread + parameters: + - name: id + in: path + description: Reply thread ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/threads/67528' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.retrieveThread(67528) + + /v1/threads/{id}/keystrokes: + post: + tags: + - threads + summary: Send thread keystrokes + description: Sends keystrokes in this thread on behalf of a user + operationId: send-thread-keystrokes + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/CreateDelegatedReplyThreadKeystrokesResource + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + - read:user + - create:keystrokes + x-codeSamples: [] + /v1/threads/{id}/messages: + get: + tags: + - threads + summary: List reply thread messages + description: Returns a page of replies sent in this thread + operationId: list-thread-messages + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/threads/1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.listThreadMessages(1) + post: + tags: + - threads + summary: Send a reply thread message + description: >- + Sends a reply message in this thread as the system or on behalf of a + user + operationId: send-thread-message + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateMessageResource' + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + format: binary + groupTag: + type: string + properties: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + - read:user + - create:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/threads/44902/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "TEXT", + "body": "🌞", + + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.sendThreadMessage(44902, { + "type": "TEXT", + "body": "🌞", + + }) + /v1/user-sessions: + get: + tags: + - user-sessions + summary: List user sessions + description: Returns a page of user sessions belonging to this application + operationId: list-user-sessions + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: state + in: query + description: Filters by state + required: false + schema: + type: string + enum: + - ACTIVE + - ENDED + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user_session + x-codeSamples: [] + /v1/users: + get: + tags: + - users + summary: List users + description: Returns a page of users belonging to this application + operationId: list-users + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: name + in: query + description: Filters by username + required: false + schema: + type: string + - name: properties + in: query + description: Filters by user custom properties + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUsers() + post: + tags: + - users + summary: Create a user + description: Creates a new user + operationId: create-user + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreatePersonChatUserResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/users' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "name": "jane@chatkitty.com", + "displayName": "Jane Doe", + "isGuest": false, + "properties": { + "favoriteNumber": 42 + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.createUser({ + "name": "jane@chatkitty.com", + "displayName": "Jane Doe", + "isGuest": false, + "properties": { + "favoriteNumber": 42 + } + }) + head: + tags: + - users + summary: Check a user exists + description: Checks if a user exists + operationId: check-user-exists + parameters: + - name: name + in: query + description: Username of the user + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Empty object + application/vnd.chatkitty+json: + schema: + type: object + description: Empty object + application/vnd.hal+json: + schema: + type: object + description: Empty object + application/hal+json: + schema: + type: object + description: Empty object + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: User does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'HEAD' \ + 'https://api.chatkitty.com/v1/users?name=Jane%20Doe' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.checkUserExists("Jane Doe") + /v1/users/{id}: + get: + tags: + - users + summary: Retrieve a user + description: Returns a user by ID + operationId: retrieve-user + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.retrieveUser(1) + delete: + tags: + - users + summary: Delete a user + description: Delets a user + operationId: delete-user + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - delete:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.deleteUser(1) + patch: + tags: + - users + summary: Update a user + description: Updates a user + operationId: update-user + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - update:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PATCH' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json+merge-patch' \ + -d '{ + "displayName": "Jane Doe" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.updateUser(1) + /v1/users/{id}/channels: + get: + tags: + - users + summary: List a user's channels + description: Returns a page of channels for this user created or joined + operationId: list-user-channels + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - read:channels + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/channels?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserChannels(1) + /v1/users/{id}/display-picture: + post: + tags: + - users + summary: Update a user's display picture + description: Updates a user's display picture + operationId: update-user-display-picture + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateExternalFileProperties' + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + format: binary + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - update:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/users/1/display-picture' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "url": "https://example.com/files/jane.png", + "name": "jane.png", + "contentType": "image/png", + "size": 32768 + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.updateUserDisplayPicture(1, { + "url": "https://example.com/files/jane.png", + "name": "jane.png", + "contentType": "image/png", + "size": 32768 + }) + /v1/users/{id}/messages: + get: + tags: + - users + summary: List a user's messages + description: Returns a page of messages sent by this user + operationId: list-user-messages + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - name: unread + in: query + description: Filters by returning unread messages + required: false + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - read:channels + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserMessages(1) + /v1/users/{id}/notifications: + get: + tags: + - users + summary: List a user's notifications + description: Returns a page of notifications received by this user + operationId: list-user-notifications + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - read:notifications + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/notifications' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserNotifications(1) + /v1/users/{id}/secrets/{name}: + get: + tags: + - users + summary: Retrieve a user secret + description: Returns a user secret + operationId: retrieve-user-secret + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: name + in: path + description: The secret's name + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SecretResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/SecretResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/SecretResource' + application/hal+json: + schema: + $ref: '#/components/schemas/SecretResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user_secret + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Secret%20Name' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.retrieveUserSecret(1,"Secret Name") + put: + tags: + - users + summary: Set a user secret + description: Sets a user secret's value + operationId: set-user-secret + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: name + in: path + description: The secret's name + required: true + schema: + type: string + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/SecretResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - update:user_secret + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Jane%20Doe' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "secret": "My secret is... well, I'\''d never tell." + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.setUserSecret(1, "Jane Doe", { + "secret": "My secret is... well, I'd never tell." + }) + delete: + tags: + - users + summary: Remove a user secret + description: Removes a user secret's value + operationId: remove-user-secret + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: name + in: path + description: The secret's name + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - delete:user_secret + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Secret%20Name' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.removeUserSecret(1,"Secret Name") + components: + schemas: + AuthenticationError: + required: + - error + - error_description + type: object + properties: + error: + type: string + error_description: + type: string + ApiError: + required: + - error + - message + - timestamp + type: object + properties: + error: + type: string + explanation: + type: string + message: + type: string + properties: + type: object + additionalProperties: + type: object + writeOnly: true + timestamp: + type: string + SecretResource: + type: object + properties: + secret: + type: object + description: Secret value + example: + secret: My secret is... well, I'd never tell. + ChatUserPresenceProperties: + required: + - online + - status + type: object + properties: + online: + type: boolean + description: True if this user has an active user session + status: + type: string + description: The availability status of this user + description: Presence status of this user + ChatUserProperties: + required: + - display_name + - display_picture_url + - id + - isGuest + - name + - presence + - properties + - type + type: object + properties: + type: + type: string + description: Type of user + enum: + - PERSON + - BOT + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + call_status: + type: string + description: Call presence status of this user + enum: + - AVAILABLE + - IN_CALL + display_name: + type: string + description: Human readable name of this user. Shown to other users + display_picture_url: + type: string + description: URL for this user's display picture + isGuest: + type: boolean + description: True if this user was created by a guest user session + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + presence: + $ref: '#/components/schemas/ChatUserPresenceProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + ChatUserResource: + required: + - display_name + - display_picture_url + - id + - isGuest + - name + - presence + - properties + - type + type: object + properties: + type: + type: string + description: Type of user + enum: + - PERSON + - BOT + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + call_status: + type: string + description: Call presence status of this user + enum: + - AVAILABLE + - IN_CALL + display_name: + type: string + description: Human readable name of this user. Shown to other users + display_picture_url: + type: string + description: URL for this user's display picture + isGuest: + type: boolean + description: True if this user was created by a guest user session + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + presence: + $ref: '#/components/schemas/ChatUserPresenceProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/1 + channels: + href: https://api.chatkitty.com/v1/applications/1/users/1/channels + notifications: + href: https://api.chatkitty.com/v1/applications/1/users/1/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/1/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + Link: + type: object + properties: + href: + type: string + hreflang: + type: string + title: + type: string + type: + type: string + deprecation: + type: string + profile: + type: string + name: + type: string + templated: + type: boolean + ChatRuntimeScriptProperties: + required: + - script + type: object + properties: + script: + type: string + description: The JavaScript/TypeScript source of this script + example: + script: "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + ChatRuntimeDependencyProperties: + required: + - default_dependency + - name + - version + type: object + properties: + default_dependency: + type: boolean + description: >- + True if this NPM package is automatically installed by ChatKitty and + available by default in your chat functions + name: + type: string + description: The name of the dependency NPM package + version: + type: string + description: The version of the NPM package + description: The NPM dependencies version of this runtime + example: + name: firebase + version: ^9.8.2 + ChatRuntimeEnvironmentVariablesProperties: + type: object + additionalProperties: + type: string + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this runtime + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this runtime + example: + CUSTOM_ENV_AWS_REGION: us-east-1 + ChatRuntimeProperties: + required: + - dependencies + - environment_variables + - id + - type + - version + type: object + properties: + type: + type: string + description: The type of this runtime. Always NODEJS + enum: + - NODEJS + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + dependencies: + type: array + description: The NPM dependencies version of this runtime + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + environment_variables: + type: object + additionalProperties: + type: string + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + initialization_script: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + version: + type: string + description: The semantic version of this runtime + example: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + ChatRuntimeResource: + required: + - dependencies + - environment_variables + - id + - type + - version + type: object + properties: + type: + type: string + description: The type of this runtime. Always NODEJS + enum: + - NODEJS + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + dependencies: + type: array + description: The NPM dependencies version of this runtime + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + environment_variables: + type: object + additionalProperties: + type: string + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + initialization_script: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + version: + type: string + description: The semantic version of this runtime + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/runtimes/nodejs + dependencies: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/dependencies + initializationScript: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/initialization-script + functions: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationSettingsProperties: + required: + - guest_users + - user_created_channels + type: object + properties: + guest_users: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + user_created_channels: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + ApplicationSettingsResource: + required: + - guest_users + - user_created_channels + type: object + properties: + guest_users: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + user_created_channels: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + features: + guest_users: ENABLED + user_created_channels: DISABLED + CreateExternalFileProperties: + required: + - content_type + - name + - size + - url + type: object + properties: + content_type: + type: string + description: File MIME content type + name: + type: string + description: File name + size: + type: integer + description: File size in bytes + format: int64 + url: + type: string + description: External file URL + example: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreatePersonChatUserResource: + required: + - display_name + - is_guest + - name + type: object + properties: + display_name: + type: string + description: Human readable name of this user. Shown to other users + is_guest: + type: boolean + description: True if this user was created by a guest user session + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + example: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMessageMentionProperties: + required: + - channel + - end_position + - start_position + - tag + - type + type: object + description: A channel mention + allOf: + - $ref: '#/components/schemas/MessageMentionProperties' + - type: object + properties: + channel: + $ref: '#/components/schemas/MessageMentionChannelProperties' + ChatUserMessageMentionProperties: + required: + - end_position + - start_position + - tag + - type + - user + type: object + description: A user mention + allOf: + - $ref: '#/components/schemas/MessageMentionProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + EmojiProperties: + required: + - aliases + - character + - description + - tags + type: object + properties: + aliases: + uniqueItems: true + type: array + description: List of possible aliases for this emoji + items: + type: string + description: List of possible aliases for this emoji + character: + type: string + description: The unicode character of this emoji + description: + type: string + description: Description of this emoji + tags: + uniqueItems: true + type: array + description: Tags used to describe this emoji + items: + type: string + description: Tags used to describe this emoji + description: The emoji these users reacted with + FileChatUserMessageProperties: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + - user + type: object + description: A file message sent by or behalf of a user + allOf: + - $ref: '#/components/schemas/FileMessageProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + - $ref: '#/components/schemas/MessageProperties' + FileChatUserMessageResource: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + - user + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + file: + $ref: '#/components/schemas/FileProperties' + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44904 + type: FILE + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44904 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + FileMessageProperties: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + allOf: + - $ref: '#/components/schemas/MessageProperties' + - type: object + properties: + file: + $ref: '#/components/schemas/FileProperties' + FileProperties: + required: + - content_type + - name + - size + - type + - url + type: object + properties: + type: + type: string + description: The type of this file. Either external or hosted by ChatKitty + enum: + - HOSTED + - EXTERNAL + content_type: + type: string + description: The mime type of this file + name: + type: string + description: The file name + size: + type: integer + description: The size of this file in bytes + format: int64 + url: + type: string + description: The file URL + description: The file data of this message + FileSystemMessageProperties: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + description: >- + A file message sent by this application itself. Used for systems + announcements independent of any user + allOf: + - $ref: '#/components/schemas/FileMessageProperties' + - $ref: '#/components/schemas/MessageProperties' + FileSystemMessageResource: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + file: + $ref: '#/components/schemas/FileProperties' + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44905 + type: SYSTEM_FILE + channelId: 702 + file: + url: https://example.com/files/my-application-file.png + name: file.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44905 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + MessageLinkPreviewImageProperties: + required: + - source + type: object + properties: + source: + type: string + description: The url source of this image + description: Image data of this link preview + MessageLinkPreviewProperties: + required: + - image + - title + - url + type: object + properties: + description: + type: string + description: Description of this link preview + image: + $ref: '#/components/schemas/MessageLinkPreviewImageProperties' + site_name: + type: string + description: The name of the site linked + title: + type: string + description: The title of this link + url: + type: string + description: The URL of the link being previewed + description: Embedded link preview data + MessageLinkProperties: + required: + - end_position + - source + - start_position + type: object + properties: + end_position: + type: integer + description: The ending index of this link within the message + format: int32 + preview: + $ref: '#/components/schemas/MessageLinkPreviewProperties' + source: + type: string + description: The href of the URL this message link represents + start_position: + type: integer + description: The starting index of this link within the message + format: int32 + description: Link previews in this message + MessageMentionChannelProperties: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: >- + Human readable name of this channel shown to users. Present if this + is a group channel + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + Present if this is a group channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: Channel properties embedded in channel mentions + MessageMentionProperties: + required: + - end_position + - start_position + - tag + - type + type: object + properties: + type: + type: string + description: The type of this message mention + enum: + - CHANNEL + - USER + end_position: + type: integer + description: The ending position of this mention reference inside its message + format: int32 + start_position: + type: integer + description: The starting position of this mention reference inside its message + format: int32 + tag: + type: string + description: The literal text referencing the mentioned entity inside the message + description: Mentions in this message + discriminator: + propertyName: type + mapping: + CHANNEL: '#/components/schemas/ChannelMessageMentionProperties' + USER: '#/components/schemas/ChatUserMessageMentionProperties' + MessageProperties: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageProperties' + FILE: '#/components/schemas/FileChatUserMessageProperties' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageProperties' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageProperties' + MessageReactionsSummaryProperties: + required: + - count + - emoji + - users + type: object + properties: + count: + type: integer + description: The number of users that reacted with this emoji + format: int64 + emoji: + $ref: '#/components/schemas/EmojiProperties' + users: + type: array + description: The users that reacted with this emoji + items: + $ref: '#/components/schemas/ChatUserProperties' + description: Reactions to this message + MessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + FILE: '#/components/schemas/FileChatUserMessageResource' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/FileChatUserMessageResource' + - $ref: '#/components/schemas/TextSystemMessageResource' + - $ref: '#/components/schemas/FileSystemMessageResource' + TextChatUserMessageProperties: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + - user + type: object + description: A text message sent by or behalf of a user + allOf: + - $ref: '#/components/schemas/TextMessageProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + - $ref: '#/components/schemas/MessageProperties' + TextChatUserMessageResource: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + - user + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + body: + type: string + description: The text body of this message + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + links: + type: array + description: Link previews in this message + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + type: array + description: Mentions in this message + items: + $ref: '#/components/schemas/MessageMentionProperties' + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextMessageProperties: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + allOf: + - $ref: '#/components/schemas/MessageProperties' + - type: object + properties: + body: + type: string + description: The text body of this message + links: + type: array + description: Link previews in this message + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + type: array + description: Mentions in this message + items: + $ref: '#/components/schemas/MessageMentionProperties' + TextSystemMessageProperties: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + description: >- + A text message sent by this application itself. Used for systems + announcements independent of any user + allOf: + - $ref: '#/components/schemas/TextMessageProperties' + - $ref: '#/components/schemas/MessageProperties' + TextSystemMessageResource: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + body: + type: string + description: The text body of this message + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + links: + type: array + description: Link previews in this message + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + type: array + description: Mentions in this message + items: + $ref: '#/components/schemas/MessageMentionProperties' + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44903 + type: SYSTEM_TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: This is a system announcement. Keep calm and carry on. + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44903 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChatUserIdReference: + required: + - id + type: object + description: Reference to a user by ID + allOf: + - $ref: '#/components/schemas/ChatUserReference' + - type: object + properties: + id: + type: integer + description: 'User ID associated with this user ' + format: int64 + ChatUserReference: + type: object + description: Reference to a user + example: + username: jane@chatkitty.com + ChatUserUsernameReference: + required: + - username + type: object + description: Reference to a user by username + allOf: + - $ref: '#/components/schemas/ChatUserReference' + - type: object + properties: + username: + type: string + description: Username associated with this user + CreateFileMessageResource: + required: + - file + type: object + example: + type: FILE + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + allOf: + - $ref: '#/components/schemas/CreateMessageResource' + - type: object + properties: + file: + $ref: '#/components/schemas/CreateExternalFileProperties' + CreateMessageResource: + required: + - type + type: object + properties: + type: + type: string + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + user: + $ref: '#/components/schemas/ChatUserReference' + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/CreateTextMessageResource' + FILE: '#/components/schemas/CreateFileMessageResource' + CreateTextMessageResource: + required: + - body + type: object + example: + type: TEXT + body: Hello, World! + allOf: + - $ref: '#/components/schemas/CreateMessageResource' + - type: object + properties: + body: + type: string + description: The text body of this message + CreateDelegatedReplyThreadKeystrokesResource: + required: + - keys + - user + type: object + properties: + keys: + type: string + user: + $ref: '#/components/schemas/ChatUserReference' + ReplyThreadKeystrokesResource: + required: + - keys + - username + type: object + properties: + keys: + type: string + username: + type: string + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + CreateChatFunctionResource: + required: + - initialize_asynchronously + - name + - type + type: object + properties: + type: + type: string + description: + type: string + initialize_asynchronously: + type: boolean + name: + type: string + example: + type: user.attempted.start_session + name: User Attempted Start Session + ChatFunctionChatRuntimeProperties: + required: + - id + - type + - version + type: object + properties: + type: + type: string + description: The type of this runtime. Always NODEJS + enum: + - NODEJS + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + version: + type: string + description: The semantic version of this runtime + description: The runtime this function executes on. Always a NodeJS runtime + ChatFunctionResource: + required: + - current_version_number + - enabled + - id + - name + - runtime + - type + type: object + properties: + type: + type: string + description: The type of this function + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + current_version_number: + type: integer + description: >- + The current version number of this function. Incremented every time + a new version is deployed + format: int64 + description: + type: string + description: Optional description of this function + enabled: + type: boolean + description: True if this function is enabled + name: + type: string + description: The name of this function + runtime: + $ref: '#/components/schemas/ChatFunctionChatRuntimeProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationJobResource: + required: + - created_time + - id + - state + - type + type: object + properties: + type: + type: string + description: The type of application job + enum: + - CHANNEL_IMPORT + - CHANNEL_MEMBERS_IMPORT + - MESSAGE_IMPORT + - USER_IMPORT + - MESSAGE_ANALYTICS_EXPORT + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + format: date-time + ended_time: + type: string + format: date-time + file: + type: string + state: + type: string + description: The running state of an application job + enum: + - PENDING + - RUNNING + - FINISHED + - FAILED + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChatFunctionVersionResource: + required: + - handler_script + type: object + properties: + handler_script: + type: string + description: JavaScript/TypeScript code that runs when this function is executed + example: + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + ChatFunctionVersionResource: + required: + - handler_script + - id + - version_number + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + handler_script: + type: string + description: JavaScript/TypeScript code that runs when this function is executed + version_number: + type: integer + description: >- + The version number of this function version. Incremented from the + previous version + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChannelProperties: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelProperties' + PRIVATE: '#/components/schemas/PrivateChannelProperties' + DIRECT: '#/components/schemas/DirectChannelProperties' + ChannelResource: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelResource' + PRIVATE: '#/components/schemas/PrivateChannelResource' + DIRECT: '#/components/schemas/DirectChannelResource' + oneOf: + - $ref: '#/components/schemas/PublicChannelResource' + - $ref: '#/components/schemas/PrivateChannelResource' + - $ref: '#/components/schemas/DirectChannelResource' + DirectChannelProperties: + required: + - created_time + - id + - members + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + members: + type: array + description: >- + The members of this channel. Present if this is a direct channel. + For other channel types, use [**list channel + messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) + items: + $ref: '#/components/schemas/ChatUserProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: A direct channel + DirectChannelResource: + required: + - created_time + - id + - members + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + members: + type: array + description: >- + The members of this channel. Present if this is a direct channel. + For other channel types, use [**list channel + messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) + items: + $ref: '#/components/schemas/ChatUserProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 19354 + type: DIRECT + creator: + id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + members: + - id: 2 + type: PERSON + name: aaron + displayName: aaron + displayPictureUrl: https://api.chatkitty.com/v1/picture/aaron + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + - id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + properties: {} + createdTime: '2021-05-18T20:40:29.472Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/19354 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/19354/events + application: + href: https://api.chatkitty.com/v1/applications/1 + PrivateChannelProperties: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: A private channel + PrivateChannelResource: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 55914 + type: PRIVATE + name: a3e9118e-4c60-4a87-a19f-cb8bf5351462 + displayName: Our private channel + properties: {} + createdTime: '2021-09-28T01:45:20.542Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55914 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + PublicChannelProperties: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: A public channel + PublicChannelResource: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelInviteResource: + required: + - user + type: object + properties: + user: + $ref: '#/components/schemas/ChatUserReference' + example: + user: + username: jane@chatkitty.com + ChannelInviteResource: + required: + - created_time + type: object + properties: + created_time: + type: string + description: The time this invite was created + format: date-time + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelGenericEventResource: + required: + - properties + - type + type: object + properties: + type: + type: string + description: Custom type of this event + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this event + description: Custom data associated with this event + example: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + ChannelGenericEventResource: + required: + - properties + - type + type: object + properties: + type: + type: string + description: Custom type of this event + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this event + description: Custom data associated with this event + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelResource: + required: + - type + type: object + properties: + type: + type: string + creator: + $ref: '#/components/schemas/ChatUserReference' + members: + uniqueItems: true + type: array + description: List of user references of members of this channel + items: + $ref: '#/components/schemas/ChatUserReference' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/CreatePublicChannelResource' + PRIVATE: '#/components/schemas/CreatePrivateChannelResource' + DIRECT: '#/components/schemas/CreateDirectChannelResource' + CreateDirectChannelResource: + required: + - members + type: object + description: Creates a direct channel + example: + type: DIRECT + members: + - username: jane@chatkitty.com + - username: john@chatkitty.com + allOf: + - $ref: '#/components/schemas/CreateChannelResource' + CreateGroupChannelResource: + type: object + allOf: + - $ref: '#/components/schemas/CreateChannelResource' + - type: object + properties: + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + CreatePrivateChannelResource: + type: object + description: Creates a private channel + example: + type: PRIVATE + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/CreateGroupChannelResource' + - $ref: '#/components/schemas/CreateChannelResource' + CreatePublicChannelResource: + type: object + description: Creates a public channel + example: + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/CreateGroupChannelResource' + - $ref: '#/components/schemas/CreateChannelResource' + JsonMergePatch: + type: object + ApplicationSentSystemMessageNotificationData: + required: + - channel_id + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID channel the message was sent. Deprecated: Use the channel + property of this notification + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/SystemMessageResource' + description: Sent when a system message is sent + ChatUserMentionedChannelNotificationData: + required: + - channel_id + - mentioned_channel + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID of the channel the mentioning message was sent. Deprecated: + Use the channel property of this notification + format: int64 + deprecated: true + mentioned_channel: + $ref: '#/components/schemas/ChannelResource' + message: + $ref: '#/components/schemas/TextMessageResource' + description: Sent when a user mentions a channel in a message + ChatUserMentionedChatUserNotificationData: + required: + - channel_id + - mentioned_user + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID of the channel the mentioning message was sent. Deprecated: + Use the channel property of this notification + format: int64 + deprecated: true + mentioned_user: + $ref: '#/components/schemas/ChatUserResource' + message: + $ref: '#/components/schemas/TextMessageResource' + description: Sent when a user mentions a user in a message + ChatUserMessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + description: The message that was sent + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + FILE: '#/components/schemas/FileChatUserMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/FileChatUserMessageResource' + ChatUserRepliedToChatUserMessageNotificationData: + required: + - channel_id + - message + - parent + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID of channel the reply message was sent. Deprecated: Use the + channel property of this notification + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/MessageResource' + parent: + $ref: '#/components/schemas/MessageResource' + description: Sent when a user replies to a message + ChatUserSentChatUserMessageNotificationData: + required: + - channel_id + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID channel the message was sent. Deprecated: Use the channel + property of this notification + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/ChatUserMessageResource' + description: Sent when a user sends a message + CursorPageMetadata: + required: + - size + type: object + properties: + next: + type: string + size: + type: integer + format: int64 + start: + type: string + CursorPagedModelNotificationResource: + required: + - page + type: object + properties: + _embedded: + type: object + properties: + notifications: + type: array + items: + $ref: '#/components/schemas/NotificationResource' + page: + $ref: '#/components/schemas/CursorPageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + notifications: + - id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3255805 + title: System message sent + body: Hello, World! + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85216 + type: SYSTEM_TEXT + channelId: 702 + body: Hello, World! + properties: {} + createdTime: '2022-06-02T16:34:58.871950Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85216 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85216.relay + createdTime: '2022-06-02T16:35:14.296158Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1750641 + title: hey sent a message + body: 🌞 + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T16:45:33.696Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44902.relay + createdTime: '2021-09-16T16:45:48.351Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749995 + title: ho sent a message + body: ok + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T05:13:48.030Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44759.relay + createdTime: '2021-09-16T05:14:00.993Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749225 + title: Nisar sent a message + body: hi + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44559 + type: TEXT + channelId: 702 + user: + id: 39827 + type: PERSON + name: ss@dd.com + displayName: Nisar + displayPictureUrl: https://api.chatkitty.com/v1/picture/Nisar + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-14T20:13:37.357Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44559 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39827 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44559.relay + createdTime: '2021-09-14T20:13:49.998Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=NEXT + page: + size: 5 + NotificationData: + required: + - type + type: object + properties: + type: + type: string + description: >- + The type of notification that was received. This specifies the + schema of the notification data + description: Additional context data of this notification + discriminator: + propertyName: type + mapping: + SYSTEM:SENT:MESSAGE: '#/components/schemas/ApplicationSentSystemMessageNotificationData' + USER:MENTIONED:CHANNEL: '#/components/schemas/ChatUserMentionedChannelNotificationData' + USER:MENTIONED:USER: '#/components/schemas/ChatUserMentionedChatUserNotificationData' + USER:REPLIED_TO:MESSAGE: >- + #/components/schemas/ChatUserRepliedToChatUserMessageNotificationData + USER:SENT:MESSAGE: '#/components/schemas/ChatUserSentChatUserMessageNotificationData' + NotificationResource: + required: + - body + - created_time + - data + - id + - muted + - title + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + body: + type: string + description: The text body of this notification + channel: + $ref: '#/components/schemas/ChannelProperties' + created_time: + type: string + description: Time this notification was created + format: date-time + data: + $ref: '#/components/schemas/NotificationData' + muted: + type: boolean + description: True if this notification should be muted + read_time: + type: string + description: Time this notification was read + format: date-time + title: + type: string + description: The title of this notification + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + SystemMessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + description: The message that was sent + discriminator: + propertyName: type + mapping: + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextSystemMessageResource' + - $ref: '#/components/schemas/FileSystemMessageResource' + TextMessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + description: The message in which the user was mentioned + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/TextSystemMessageResource' + CursorPagedModelMessageResource: + required: + - page + type: object + properties: + _embedded: + type: object + properties: + messages: + type: array + items: + $ref: '#/components/schemas/MessageResource' + page: + $ref: '#/components/schemas/CursorPageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + messages: + - id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44701 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: test + properties: {} + createdTime: '2021-09-16T14:57:55.903Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44701 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44700 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-16T14:57:46.056Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44700 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44760 + type: TEXT + channelId: 1255 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: do? + properties: {} + createdTime: '2021-09-16T09:14:09.585Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44760 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/1255 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T09:13:48.030Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=NEXT + page: + size: 5 + PageMetadata: + type: object + properties: + number: + type: integer + format: int64 + size: + type: integer + format: int64 + total_elements: + type: integer + format: int64 + total_pages: + type: integer + format: int64 + PagedModelChannelResource: + type: object + properties: + _embedded: + type: object + properties: + channels: + type: array + items: + $ref: '#/components/schemas/ChannelResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + channels: + - id: 15252 + type: DIRECT + creator: + id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + members: + - id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + - id: 19452 + type: PERSON + name: aa + displayName: emra + displayPictureUrl: https://api.chatkitty.com/v1/picture/emra + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2021-05-05T00:38:24.888Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/15252 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/events + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 2402 + type: PUBLIC + name: '#test' + displayName: Test Channel + creator: + id: 4153 + type: PERSON + name: test@mail.com + displayName: mridx + displayPictureUrl: https://api.chatkitty.com/v1/picture/mridx + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2020-12-13T21:12:09.195Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/2402 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 856 + type: PUBLIC + name: mkm + displayName: Meme Channel + creator: + id: 1504 + type: PERSON + name: njnj@vghf.jk + displayName: mkm + displayPictureUrl: https://api.chatkitty.com/v1/picture/mkm + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 17654 + type: TEXT + channelId: 856 + user: + id: 15402 + type: PERSON + name: paras@code.co + displayName: Paras + displayPictureUrl: https://api.chatkitty.com/v1/picture/Paras + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: ghk + properties: {} + createdTime: '2021-03-31T06:00:28.680Z' + properties: {} + createdTime: '2020-11-25T07:46:45.775Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/856 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1302 + type: PUBLIC + name: SONU KUMAR + displayName: SONU KUMAR + creator: + id: 2302 + type: PERSON + name: '852122' + displayName: SONU KUMAR + displayPictureUrl: https://api.chatkitty.com/v1/picture/SONU+KUMAR + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 44530 + type: TEXT + channelId: 1302 + user: + id: 39826 + type: PERSON + name: steve@innersync.com + displayName: Steve Williams + displayPictureUrl: https://api.chatkitty.com/v1/picture/Steve+Williams + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: Checking out + properties: {} + createdTime: '2021-09-14T18:02:56.066Z' + properties: {} + createdTime: '2020-12-02T05:10:01.260Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/1302 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + page: + size: 5 + totalElements: 2020 + totalPages: 404 + number: 0 + PagedModelChatUserResource: + type: object + properties: + _embedded: + type: object + properties: + users: + type: array + items: + $ref: '#/components/schemas/ChatUserResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + users: + - id: 14503 + type: PERSON + name: jane@chatkitty.com + displayName: Jane + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/14503 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3004 + type: PERSON + name: '1' + displayName: ChatKittyUser + displayPictureUrl: https://api.chatkitty.com/v1/picture/ChatKittyUser + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3004 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: PERSON + name: 10zxc13@gmail.com + displayName: Jack + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jack + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6152 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3353 + type: PERSON + name: '12121' + displayName: '12121' + displayPictureUrl: https://api.chatkitty.com/v1/picture/12121 + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3353 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6602 + type: PERSON + name: '123' + displayName: '123' + displayPictureUrl: https://api.chatkitty.com/v1/picture/123 + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6602 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/users?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/users?page=114&size=5 + page: + size: 5 + totalElements: 571 + totalPages: 115 + number: 0 + ChatUserSessionProperties: + required: + - created_time + - id + - state + - user + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: Time this session was created + format: date-time + end_time: + type: string + description: Time this session ended. Present if state is ENDED + format: date-time + state: + type: string + description: State of this session. ACTIVE or ENDED + enum: + - ACTIVE + - ENDED + user: + $ref: '#/components/schemas/ChatUserProperties' + user_agent: + type: string + description: User agent used to start this session + ChatUserSessionResource: + required: + - created_time + - id + - state + - user + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: Time this session was created + format: date-time + end_time: + type: string + description: Time this session ended. Present if state is ENDED + format: date-time + state: + type: string + description: State of this session. ACTIVE or ENDED + enum: + - ACTIVE + - ENDED + user: + $ref: '#/components/schemas/ChatUserProperties' + user_agent: + type: string + description: User agent used to start this session + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatUserSessionResource: + type: object + properties: + _embedded: + type: object + properties: + sessions: + type: array + items: + $ref: '#/components/schemas/ChatUserSessionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + sessions: + - id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635641 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:35:08.587Z' + createdTime: '2021-11-12T08:25:33.885Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635669 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:55:36.282Z' + createdTime: '2021-11-12T08:38:54.982Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39806 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635644 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:54:48.309Z' + createdTime: '2021-11-12T08:45:13.682Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635651 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T09:06:40.409Z' + createdTime: '2021-11-12T09:04:53.490Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/user-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/user-sessions?page=328&size=5 + page: + size: 5 + totalElements: 1645 + totalPages: 329 + number: 0 + ReplyThreadResource: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this thread + enum: + - MAIN + - STANDALONE + - MESSAGE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this thread was created + format: date-time + name: + type: string + description: The name of this thread + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this thread + description: Custom data associated with this thread + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 67528 + type: MAIN + properties: {} + createdTime: '2022-02-04T13:19:06.764939Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/threads/67528 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelChatFunctionResource: + type: object + properties: + _embedded: + type: object + properties: + functions: + type: array + items: + $ref: '#/components/schemas/ChatFunctionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + functions: + - id: 202 + type: user.received.notification + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Received Notification + enabled: true + currentVersionNumber: 5 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/202 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4552 + type: user.sent.message + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Sent Message + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/4552 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: user.started.chat_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Started Chat Session + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/6152 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions?page=0&size=5 + page: + size: 5 + totalElements: 4 + totalPages: 1 + number: 0 + MessageReadReceiptResource: + required: + - created_time + - user + type: object + properties: + created_time: + type: string + description: Time the user read this message + format: date-time + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelMessageReadReceiptResource: + type: object + properties: + _embedded: + type: object + properties: + receipts: + type: array + items: + $ref: '#/components/schemas/MessageReadReceiptResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + receipts: + - user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/67026/read-receipts?page=0&size=25 + page: + size: 1 + totalElements: 1 + totalPages: 1 + number: 0 + PagedModelApplicationJobResource: + type: object + properties: + _embedded: + type: object + properties: + jobs: + type: array + items: + $ref: '#/components/schemas/ApplicationJobResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + jobs: + - id: 1 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T04:19:41.255Z' + endedTime: '2021-09-28T04:19:42.230Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/1 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 52 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T05:30:08.902Z' + endedTime: '2021-09-28T05:30:09.571Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 53 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 54 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:35:35.075Z' + endedTime: '2021-09-28T05:36:15.755Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/54 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 102 + type: CHANNEL_MEMBERS_IMPORT + state: FINISHED + createdTime: '2021-09-29T04:52:22.895Z' + endedTime: '2021-09-29T04:52:58.941Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/102 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/jobs?running=false&page=0&size=25 + page: + size: 25 + totalElements: 5 + totalPages: 1 + number: 0 + PagedModelChatFunctionVersionResource: + type: object + properties: + _embedded: + type: object + properties: + versions: + type: array + items: + $ref: '#/components/schemas/ChatFunctionVersionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + versions: + - id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 13461 + versionNumber: 33 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello!'); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13461 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4802 + versionNumber: 32 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return {payload: true}; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4652 + versionNumber: 31 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return true; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4652 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4555 + versionNumber: 30 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return { + status: "SUCCESS" + }; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4555 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=6&size=5 + page: + size: 5 + totalElements: 35 + totalPages: 7 + number: 0 + ChatFunctionInvocationResource: + required: + - args + - created_time + - id + - result + - status + - version_number + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + args: + type: object + additionalProperties: + type: object + description: >- + The function arguments passed into this function for this + invocation + description: The function arguments passed into this function for this invocation + created_time: + type: string + description: The ISO date-time of this invocation when the function was called + format: date-time + result: + type: object + additionalProperties: + type: object + description: The result of this invocation when it completed + description: The result of this invocation when it completed + status: + type: string + description: The running status of this invocation + enum: + - RUNNING + - SUCCEEDED + - FAILED + version_number: + type: integer + description: >- + The version number of this function version when this invocation + occured + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + PagedModelChatFunctionInvocationResource: + type: object + properties: + _embedded: + type: object + properties: + invocations: + type: array + items: + $ref: '#/components/schemas/ChatFunctionInvocationResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + invocations: + - id: 468510 + versionNumber: 34 + args: + authParams: + displayName: Niyati + username: asac@sfas.com + status: SUCCEEDED + result: + payload: + - Hello asac@sfas.com + createdTime: '2021-09-20T06:37:01.766Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468453 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + - 'Hello ' + createdTime: '2021-09-19T09:34:40.190Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468452 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + createdTime: '2021-09-19T09:34:26.890Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467243 + versionNumber: 34 + args: + authParams: + displayName: '' + username: aaron + status: SUCCEEDED + result: + payload: + - Hello aaron + createdTime: '2021-09-17T17:00:31.396Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467162 + versionNumber: 34 + args: + authParams: + displayName: bob + username: fwfe@efw.com + status: SUCCEEDED + result: + payload: + - Hello fwfe@efw.com + createdTime: '2021-09-17T09:15:50.072Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1515&size=5 + page: + size: 5 + totalElements: 7578 + totalPages: 1516 + number: 0 + ChatSessionResource: + required: + - created_time + - id + - session + - state + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: Time this session was created + format: date-time + end_time: + type: string + description: Time this session ended. Present if state is ENDED + format: date-time + session: + $ref: '#/components/schemas/ChatUserSessionProperties' + state: + type: string + description: State of this session. ACTIVE or ENDED + enum: + - ACTIVE + - ENDED + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatSessionResource: + type: object + properties: + _embedded: + type: object + properties: + sessions: + type: array + items: + $ref: '#/components/schemas/ChatSessionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + sessions: + - id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480795 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:35:43.597Z' + createdTime: '2021-09-19T04:33:41.710Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480731 + session: + id: 544216 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:38:45.272Z' + createdTime: '2021-09-19T04:35:45.028Z' + state: ENDED + endTime: '2021-09-19T04:35:55.360Z' + createdTime: '2021-09-19T04:35:45.685Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544216 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481281 + session: + id: 545001 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:12.242Z' + createdTime: '2021-09-20T12:13:09.900Z' + state: ENDED + endTime: '2021-09-20T12:13:12.255Z' + createdTime: '2021-09-20T12:13:10.352Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545001 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481282 + session: + id: 545052 + user: + id: 39807 + type: PERSON + name: 8fadc920-f3e6-49ff-9398-1e58b3dc44dd + displayName: Zaria Bria + displayPictureUrl: https://api.chatkitty.com/v1/picture/Zaria+Bria + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:22.564Z' + createdTime: '2021-09-20T12:13:20.105Z' + state: ENDED + endTime: '2021-09-20T12:13:22.575Z' + createdTime: '2021-09-20T12:13:20.553Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545052 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/chat-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/chat-sessions?page=1037&size=5 + page: + size: 5 + totalElements: 5190 + totalPages: 1038 + number: 0 + PagedModelMessageResource: + type: object + properties: + _embedded: + type: object + properties: + messages: + type: array + items: + $ref: '#/components/schemas/MessageResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + ChannelMembershipResource: + required: + - created_time + type: object + properties: + created_time: + type: string + format: date-time + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + PagedModelChannelMembershipResource: + type: object + properties: + _embedded: + type: object + properties: + memberships: + type: array + items: + $ref: '#/components/schemas/ChannelMembershipResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + memberships: + - createdTime: '2020-12-02T21:52:33.976Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/2 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/2 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-02T22:03:28.742Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/52 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T13:03:17.433Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/352 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/352 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-07T22:28:47.620Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/403 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/403 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T14:34:29.580Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/452 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/452 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=107&size=5 + page: + size: 5 + totalElements: 537 + totalPages: 108 + number: 0 + PagedModelChannelInviteResource: + type: object + properties: + _embedded: + type: object + properties: + invites: + type: array + items: + $ref: '#/components/schemas/ChannelInviteResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + invites: + - createdTime: '2022-06-02T16:51:03.206366Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/67026/invites?page=0&size=25 + page: + size: 25 + totalElements: 1 + totalPages: 1 + number: 0 + ApplicationResource: + required: + - created_time + - id + - key + - properties + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: ISO date-time this application was created + format: date-time + key: + type: string + description: Primary API key assigned to this application + properties: + type: object + additionalProperties: + type: object + description: Custom properties attached to this application + description: Custom properties attached to this application + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + key: 19b458d0-2b50-491c-8f13-65ec12f3978e + properties: {} + created_time: '2020-10-02T20:29:25.316Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1 + Links: + type: object + additionalProperties: + $ref: '#/components/schemas/Link' + MessageImport: + required: + - channel_id + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: ID of the channel this message belongs to + format: int64 + group_tag: + type: string + description: Tag identifying the message group this message belongs to + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + properties: + type: object + additionalProperties: + type: object + description: Map of custom data attached to this message + description: Map of custom data attached to this message + example: + idempotencyKey: unique-external-id + type: TEXT + body: Hello, World! + discriminator: + propertyName: type + mapping: + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageImport' + TEXT: '#/components/schemas/TextChatUserMessageImport' + ChatUserImport: + required: + - display_name + - guest + - name + - properties + type: object + properties: + display_name: + type: string + description: Human readable name of this user. Shown to other users + display_picture: + $ref: '#/components/schemas/FileImport' + guest: + type: boolean + description: True if this user was created by a guest user session + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + example: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMembershipImport: + required: + - username + type: object + properties: + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + username: + type: string + description: Username of the user to be added as a member + example: + username: jane@chatkitty.com + FileImport: + required: + - content_type + - name + - size + - url + type: object + properties: + content_type: + type: string + description: The mime type of this file + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + name: + type: string + description: The file name + size: + type: integer + description: The size of this file in bytes + format: int64 + url: + type: string + description: The file URL + description: External file properties + ChannelImport: + required: + - members + - type + type: object + properties: + type: + type: string + creator: + type: string + description: Username of the user who created this channel + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + members: + type: array + description: List of usernames of members of this channel + items: + type: string + description: List of usernames of members of this channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + example: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelImport' + PRIVATE: '#/components/schemas/PrivateChannelImport' + DIRECT: '#/components/schemas/DirectChannelImport' + TextMessageImport: + required: + - body + - channel_id + type: object + properties: + body: + type: string + description: The text body of this message + channel_id: + type: integer + description: ID of the channel this message belongs to + format: int64 + group_tag: + type: string + description: Tag identifying the message group this message belongs to + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + properties: + type: object + additionalProperties: + type: object + description: Map of custom data attached to this message + description: Map of custom data attached to this message + DirectChannelImport: + required: + - members + type: object + description: Imports a direct channel + example: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + allOf: + - $ref: '#/components/schemas/ChannelImport' + GroupChannelImport: + required: + - members + type: object + properties: + creator: + type: string + description: Username of the user who created this channel + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + members: + type: array + description: List of usernames of members of this channel + items: + type: string + description: List of usernames of members of this channel + name: + type: string + description: >- + The unique name of this channel used to reference the channel. If + absent defaults to a random UUID + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + TextSystemMessageImport: + required: + - body + - channel_id + type: object + description: Imports a system text message + example: + type: TEXT + body: Hello, World! + allOf: + - $ref: '#/components/schemas/MessageImport' + - type: object + properties: + body: + type: string + description: The text body of this message + TextChatUserMessageImport: + required: + - body + - channel_id + - user + type: object + description: Imports a user text message + example: + type: TEXT + body: Hello, World! + user: jane@chatkitty.com + allOf: + - $ref: '#/components/schemas/MessageImport' + - type: object + properties: + body: + type: string + description: The text body of this message + user: + type: string + description: Username of the user who sent this message + PublicChannelImport: + required: + - members + type: object + description: Imports a public channel + example: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/ChannelImport' + - type: object + properties: + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + PrivateChannelImport: + required: + - members + type: object + description: Imports a private channel + example: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/ChannelImport' + - type: object + properties: + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + examples: + SecretResource: + value: + secret: My secret is... well, I'd never tell. + ChatUserResource: + value: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/1 + channels: + href: https://api.chatkitty.com/v1/applications/1/users/1/channels + notifications: + href: https://api.chatkitty.com/v1/applications/1/users/1/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/1/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + Link: + value: + href: https://api.chatkitty.com/v1/applications/1 + ChatRuntimeScriptProperties: + value: + script: "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + ChatRuntimeDependencyProperties: + value: + name: firebase + version: ^9.8.2 + ChatRuntimeEnvironmentVariablesProperties: + value: + CUSTOM_ENV_AWS_REGION: us-east-1 + ChatRuntimeProperties: + value: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + ChatRuntimeResource: + value: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/runtimes/nodejs + dependencies: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/dependencies + initializationScript: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/initialization-script + functions: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationSettingsResource: + value: + features: + guest_users: ENABLED + user_created_channels: DISABLED + CreateExternalFileProperties: + value: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreatePersonChatUserResource: + value: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + FileChatUserMessageResource: + value: + id: 44904 + type: FILE + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44904 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + FileSystemMessageResource: + value: + id: 44905 + type: SYSTEM_FILE + channelId: 702 + file: + url: https://example.com/files/my-application-file.png + name: file.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44905 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + MessageResource: + value: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextChatUserMessageResource: + value: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextSystemMessageResource: + value: + id: 44903 + type: SYSTEM_TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: This is a system announcement. Keep calm and carry on. + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44903 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChatUserReference: + value: + username: jane@chatkitty.com + CreateFileMessageResource: + value: + type: FILE + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreateTextMessageResource: + value: + type: TEXT + body: Hello, World! + CreateChatFunctionResource: + value: + type: user.attempted.start_session + name: User Attempted Start Session + ChatFunctionResource: + value: + id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationJobResource: + value: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChatFunctionVersionResource: + value: + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + ChatFunctionVersionResource: + value: + id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChannelResource: + value: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + DirectChannelResource: + value: + id: 19354 + type: DIRECT + creator: + id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + members: + - id: 2 + type: PERSON + name: aaron + displayName: aaron + displayPictureUrl: https://api.chatkitty.com/v1/picture/aaron + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + - id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + properties: {} + createdTime: '2021-05-18T20:40:29.472Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/19354 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/19354/events + application: + href: https://api.chatkitty.com/v1/applications/1 + PrivateChannelResource: + value: + id: 55914 + type: PRIVATE + name: a3e9118e-4c60-4a87-a19f-cb8bf5351462 + displayName: Our private channel + properties: {} + createdTime: '2021-09-28T01:45:20.542Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55914 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + PublicChannelResource: + value: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelInviteResource: + value: + user: + username: jane@chatkitty.com + ChannelInviteResource: + value: + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelGenericEventResource: + value: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + ChannelGenericEventResource: + value: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateDirectChannelResource: + value: + type: DIRECT + members: + - username: jane@chatkitty.com + - username: john@chatkitty.com + CreatePrivateChannelResource: + value: + type: PRIVATE + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + CreatePublicChannelResource: + value: + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + CursorPagedModelNotificationResource: + value: + _embedded: + notifications: + - id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3255805 + title: System message sent + body: Hello, World! + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85216 + type: SYSTEM_TEXT + channelId: 702 + body: Hello, World! + properties: {} + createdTime: '2022-06-02T16:34:58.871950Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85216 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85216.relay + createdTime: '2022-06-02T16:35:14.296158Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1750641 + title: hey sent a message + body: 🌞 + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T16:45:33.696Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44902.relay + createdTime: '2021-09-16T16:45:48.351Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749995 + title: ho sent a message + body: ok + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T05:13:48.030Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44759.relay + createdTime: '2021-09-16T05:14:00.993Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749225 + title: Nisar sent a message + body: hi + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44559 + type: TEXT + channelId: 702 + user: + id: 39827 + type: PERSON + name: ss@dd.com + displayName: Nisar + displayPictureUrl: https://api.chatkitty.com/v1/picture/Nisar + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-14T20:13:37.357Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44559 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39827 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44559.relay + createdTime: '2021-09-14T20:13:49.998Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=NEXT + page: + size: 5 + NotificationResource: + value: + id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + CursorPagedModelMessageResource: + value: + _embedded: + messages: + - id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44701 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: test + properties: {} + createdTime: '2021-09-16T14:57:55.903Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44701 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44700 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-16T14:57:46.056Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44700 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44760 + type: TEXT + channelId: 1255 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: do? + properties: {} + createdTime: '2021-09-16T09:14:09.585Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44760 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/1255 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T09:13:48.030Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=NEXT + page: + size: 5 + PagedModelChannelResource: + value: + _embedded: + channels: + - id: 15252 + type: DIRECT + creator: + id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + members: + - id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + - id: 19452 + type: PERSON + name: aa + displayName: emra + displayPictureUrl: https://api.chatkitty.com/v1/picture/emra + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2021-05-05T00:38:24.888Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/15252 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/events + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 2402 + type: PUBLIC + name: '#test' + displayName: Test Channel + creator: + id: 4153 + type: PERSON + name: test@mail.com + displayName: mridx + displayPictureUrl: https://api.chatkitty.com/v1/picture/mridx + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2020-12-13T21:12:09.195Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/2402 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 856 + type: PUBLIC + name: mkm + displayName: Meme Channel + creator: + id: 1504 + type: PERSON + name: njnj@vghf.jk + displayName: mkm + displayPictureUrl: https://api.chatkitty.com/v1/picture/mkm + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 17654 + type: TEXT + channelId: 856 + user: + id: 15402 + type: PERSON + name: paras@code.co + displayName: Paras + displayPictureUrl: https://api.chatkitty.com/v1/picture/Paras + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: ghk + properties: {} + createdTime: '2021-03-31T06:00:28.680Z' + properties: {} + createdTime: '2020-11-25T07:46:45.775Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/856 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1302 + type: PUBLIC + name: SONU KUMAR + displayName: SONU KUMAR + creator: + id: 2302 + type: PERSON + name: '852122' + displayName: SONU KUMAR + displayPictureUrl: https://api.chatkitty.com/v1/picture/SONU+KUMAR + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 44530 + type: TEXT + channelId: 1302 + user: + id: 39826 + type: PERSON + name: steve@innersync.com + displayName: Steve Williams + displayPictureUrl: https://api.chatkitty.com/v1/picture/Steve+Williams + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: Checking out + properties: {} + createdTime: '2021-09-14T18:02:56.066Z' + properties: {} + createdTime: '2020-12-02T05:10:01.260Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/1302 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + page: + size: 5 + totalElements: 2020 + totalPages: 404 + number: 0 + PagedModelChatUserResource: + value: + _embedded: + users: + - id: 14503 + type: PERSON + name: jane@chatkitty.com + displayName: Jane + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/14503 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3004 + type: PERSON + name: '1' + displayName: ChatKittyUser + displayPictureUrl: https://api.chatkitty.com/v1/picture/ChatKittyUser + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3004 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: PERSON + name: 10zxc13@gmail.com + displayName: Jack + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jack + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6152 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3353 + type: PERSON + name: '12121' + displayName: '12121' + displayPictureUrl: https://api.chatkitty.com/v1/picture/12121 + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3353 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6602 + type: PERSON + name: '123' + displayName: '123' + displayPictureUrl: https://api.chatkitty.com/v1/picture/123 + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6602 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/users?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/users?page=114&size=5 + page: + size: 5 + totalElements: 571 + totalPages: 115 + number: 0 + ChatUserSessionResource: + value: + id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatUserSessionResource: + value: + _embedded: + sessions: + - id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635641 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:35:08.587Z' + createdTime: '2021-11-12T08:25:33.885Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635669 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:55:36.282Z' + createdTime: '2021-11-12T08:38:54.982Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39806 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635644 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:54:48.309Z' + createdTime: '2021-11-12T08:45:13.682Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635651 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T09:06:40.409Z' + createdTime: '2021-11-12T09:04:53.490Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/user-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/user-sessions?page=328&size=5 + page: + size: 5 + totalElements: 1645 + totalPages: 329 + number: 0 + ReplyThreadResource: + value: + id: 67528 + type: MAIN + properties: {} + createdTime: '2022-02-04T13:19:06.764939Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/threads/67528 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelChatFunctionResource: + value: + _embedded: + functions: + - id: 202 + type: user.received.notification + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Received Notification + enabled: true + currentVersionNumber: 5 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/202 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4552 + type: user.sent.message + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Sent Message + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/4552 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: user.started.chat_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Started Chat Session + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/6152 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions?page=0&size=5 + page: + size: 5 + totalElements: 4 + totalPages: 1 + number: 0 + MessageReadReceiptResource: + value: + user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelMessageReadReceiptResource: + value: + _embedded: + receipts: + - user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/67026/read-receipts?page=0&size=25 + page: + size: 1 + totalElements: 1 + totalPages: 1 + number: 0 + PagedModelApplicationJobResource: + value: + _embedded: + jobs: + - id: 1 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T04:19:41.255Z' + endedTime: '2021-09-28T04:19:42.230Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/1 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 52 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T05:30:08.902Z' + endedTime: '2021-09-28T05:30:09.571Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 53 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 54 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:35:35.075Z' + endedTime: '2021-09-28T05:36:15.755Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/54 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 102 + type: CHANNEL_MEMBERS_IMPORT + state: FINISHED + createdTime: '2021-09-29T04:52:22.895Z' + endedTime: '2021-09-29T04:52:58.941Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/102 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/jobs?running=false&page=0&size=25 + page: + size: 25 + totalElements: 5 + totalPages: 1 + number: 0 + PagedModelChatFunctionVersionResource: + value: + _embedded: + versions: + - id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 13461 + versionNumber: 33 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello!'); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13461 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4802 + versionNumber: 32 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return {payload: true}; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4652 + versionNumber: 31 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return true; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4652 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4555 + versionNumber: 30 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return { + status: "SUCCESS" + }; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4555 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=6&size=5 + page: + size: 5 + totalElements: 35 + totalPages: 7 + number: 0 + PagedModelChatFunctionInvocationResource: + value: + _embedded: + invocations: + - id: 468510 + versionNumber: 34 + args: + authParams: + displayName: Niyati + username: asac@sfas.com + status: SUCCEEDED + result: + payload: + - Hello asac@sfas.com + createdTime: '2021-09-20T06:37:01.766Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468453 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + - 'Hello ' + createdTime: '2021-09-19T09:34:40.190Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468452 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + createdTime: '2021-09-19T09:34:26.890Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467243 + versionNumber: 34 + args: + authParams: + displayName: '' + username: aaron + status: SUCCEEDED + result: + payload: + - Hello aaron + createdTime: '2021-09-17T17:00:31.396Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467162 + versionNumber: 34 + args: + authParams: + displayName: bob + username: fwfe@efw.com + status: SUCCEEDED + result: + payload: + - Hello fwfe@efw.com + createdTime: '2021-09-17T09:15:50.072Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1515&size=5 + page: + size: 5 + totalElements: 7578 + totalPages: 1516 + number: 0 + ChatSessionResource: + value: + id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatSessionResource: + value: + _embedded: + sessions: + - id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480795 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:35:43.597Z' + createdTime: '2021-09-19T04:33:41.710Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480731 + session: + id: 544216 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:38:45.272Z' + createdTime: '2021-09-19T04:35:45.028Z' + state: ENDED + endTime: '2021-09-19T04:35:55.360Z' + createdTime: '2021-09-19T04:35:45.685Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544216 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481281 + session: + id: 545001 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:12.242Z' + createdTime: '2021-09-20T12:13:09.900Z' + state: ENDED + endTime: '2021-09-20T12:13:12.255Z' + createdTime: '2021-09-20T12:13:10.352Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545001 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481282 + session: + id: 545052 + user: + id: 39807 + type: PERSON + name: 8fadc920-f3e6-49ff-9398-1e58b3dc44dd + displayName: Zaria Bria + displayPictureUrl: https://api.chatkitty.com/v1/picture/Zaria+Bria + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:22.564Z' + createdTime: '2021-09-20T12:13:20.105Z' + state: ENDED + endTime: '2021-09-20T12:13:22.575Z' + createdTime: '2021-09-20T12:13:20.553Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545052 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/chat-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/chat-sessions?page=1037&size=5 + page: + size: 5 + totalElements: 5190 + totalPages: 1038 + number: 0 + PagedModelChannelMembershipResource: + value: + _embedded: + memberships: + - createdTime: '2020-12-02T21:52:33.976Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/2 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/2 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-02T22:03:28.742Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/52 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T13:03:17.433Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/352 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/352 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-07T22:28:47.620Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/403 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/403 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T14:34:29.580Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/452 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/452 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=107&size=5 + page: + size: 5 + totalElements: 537 + totalPages: 108 + number: 0 + PagedModelChannelInviteResource: + value: + _embedded: + invites: + - createdTime: '2022-06-02T16:51:03.206366Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/67026/invites?page=0&size=25 + page: + size: 25 + totalElements: 1 + totalPages: 1 + number: 0 + ApplicationResource: + value: + id: 1 + key: 19b458d0-2b50-491c-8f13-65ec12f3978e + properties: {} + created_time: '2020-10-02T20:29:25.316Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1 + Links: + value: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + MessageImport: + value: + idempotencyKey: unique-external-id + type: TEXT + body: Hello, World! + ChatUserImport: + value: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMembershipImport: + value: + username: jane@chatkitty.com + ChannelImport: + value: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + DirectChannelImport: + value: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + TextSystemMessageImport: + value: + type: TEXT + body: Hello, World! + TextChatUserMessageImport: + value: + type: TEXT + body: Hello, World! + user: jane@chatkitty.com + PublicChannelImport: + value: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + PrivateChannelImport: + value: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + securitySchemes: + password_reset_token_authorization: + type: apiKey + name: X-Token + in: header + application_authorization: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://authorization.chatkitty.com/oauth/token + refreshUrl: https://authorization.chatkitty.com/oauth/token + scopes: + create:*: Create application resources + read:*: Read application resources + update:*: Update application resources + delete:*: Delete application resources +konfigCliVersion: 1.38.34 diff --git a/sdks/db/fixed-specs-cache/miso-fixed-spec.yaml b/sdks/db/fixed-specs-cache/miso-fixed-spec.yaml new file mode 100644 index 0000000000..d9557b4b8a --- /dev/null +++ b/sdks/db/fixed-specs-cache/miso-fixed-spec.yaml @@ -0,0 +1,20848 @@ +publishJson: + company: Miso + serviceName: false + sdkName: miso-{language}-sdk + clientName: Miso + metaDescription: >- + Miso’s simple APIs empower product teams to realize unlimited + personalization opportunities. Leading brands are using Miso’s semantic + intelligence and real-time clickstream analysis to drive a new generation of + personalized experiences and lift revenues sitewide. And unlike traditional + solutions, Miso can personalize 100% anonymously — no tracking users or + mining data. + apiStatusUrls: inherit + homepage: miso.ai + developerDocumentation: docs.miso.ai/ + categories: + - ai + - search +rawSpecString: | + openapi: 3.0.2 + info: + title: Miso API + description: > + + # Overview + + Miso’s approach to personalization is to train machine learning Engines on + three core data sets: + + + 1. Your site’s log of historical and real-time interactions, + + 2. Your catalog of products and content, and + + 3. Your users. Miso provides the output of its Engines to you, so you can + build search and recommendation + + experiences that are personalized down to the individual level (n=1 + personalization). + + + To see how Miso works and explore the power of its Engines, we recommend + following + + [this tutorial](https://docs.askmiso.com/) to get + + started with our Playground data. Integrating your site or application with + Miso happens in three basic steps: + + + 1. Upload your data + + 2. Train your Engines + + 3. Build search and recommendation experiences with the output of your + Engines. + + + + Miso provides two main integration points. The first is your [Dojo + Dashboard](https://dojo.askmiso.com/), + + which is used to set up your Engines with the conversions you want to + optimize and your training schedule. + + Dojo is also a great way to get familiar with Miso by manually uploading + data and exploring the output of + + Miso’s Engines. In Dojo’s Sandboxes, you can tweak your Engine settings and + see visual examples of Miso’s search + + and recommendations running on your live data. + + + The second integration point is Miso’s API, which lets you automatically + manage your data in Miso and build + + experiences that leverage the output of Miso’s personalization Engines. + + + + Miso’s API is composed of two major groups of REST API endpoints: Data APIs + and Engine APIs. + + + ### Data APIs + + Data APIs collect input to Miso's personalization Engines. These APIs all + support high-throughput + + data ingestion through bulk insert, and satisfy GDPR and CCPA compliance by + letting users delete their data + + from Miso. Subcategories of Data APIs are: + + + * [Interaction APIs](https://api.askmiso.com), for managing your Interaction + records. By uploading historical and real-time Interaction + + records, you tell Miso how users are engaging with the products and content + on your site, and in turn, Miso’s + + Engines learn how to optimize your conversion funnels. + + * [Product / Content APIs](https://api.askmiso.com), for managing your + Product / Content records. These records provide a deep semantic + + understanding of your catalog and keep Miso up to date about your offerings + so it can make smart and timely + + suggestions. The `product_id` is how Miso links Product / Content records to + your Interaction records. + + * [User APIs](https://api.askmiso.com), for managing your User records. + These records tell Miso about your site’s users and visitors, + + so Miso can build an understanding of user segmentation and behavior in + relation to products and content. + + The `user_id` is how Miso links User records to your Interaction records. + + + As a rule of thumb, we recommend batching up data to avoid timeout risks. + For the Product / Content and User + + Upload APIs, we recommend limiting each API upload call to about 100 records + at a time. For the Interaction + + Upload API, we recommend limiting your calls to around 10,000 records at a + time. + + + ### Engine APIs + + Engine APIs provide the output of Miso's personalization Engines. We + designed these APIs with a focus on low + + latency and high availability. Most of these APIs' 95th percentile response + time is under 75ms, + + and the services are replicated to at least three separate instances for + high availability. + + The types of Engine APIs are: + + + * [Search APIs](https://api.askmiso.com), for getting Miso’s personalized + search results for a user, with search-as-you-type and + + autocompletion. + + * [Recommendation APIs](https://api.askmiso.com), for retrieving Miso’s + recommendations that match users with + + the products, categories, and product attributes that are likely to drive + conversions. + + + # Authentication + + [View your API Keys in your Dojo + Dashboard.](https://dojo.askmiso.com/docs/api-browser) + + + There are three environments in Miso: + + * **Playground**, a read-only tutorial environment with sample data. + + * **Development**, for staging, QA, and experimentation. + + * **Production**, where you run your live integration with Miso. + + + Access a Miso environment by passing in the corresponding API key in your + API calls. There is one publishable + + key and one secret key per environment. + + + API Key can passed with query parameter `api_key`, or using the `X-API-KEY` + header. + version: 1.1.4 + paths: + /v1/experiments/{experiment_id_or_slug}/events: + post: + tags: + - Experiment APIs + summary: Send Experiment Event + operationId: send_experiment_event_v1_experiments__experiment_id_or_slug__events_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExperimentRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/SendExperimentResponse' + '401': + description: Unauthorized + content: + application/json: + example: + message: api_key is invalid. Please check your api_key in Dojo. + '404': + description: Not Found + content: + application/json: + example: + message: Variant is not found. Please check your variant_name. + '422': + description: Unprocessable Entity + content: + application/json: + example: + message: Request schema error. See "data.errors" for details + data: + errors: + - loc: + - body + - 35 + msg: 'Expecting '','' delimiter: line 3 column 5 (char 35)' + type: value_error.jsondecode + security: + - Secret API Key: [] + /v1/interactions: + post: + tags: + - Interaction APIs + summary: Interaction Upload API + description: >- + Bulk API to insert Interaction records. This endpoint accepts POST + requests with JSON data containing an array of + + Interaction records wrapped in a dictionary: + + + ``` + + POST /v1/interactions + + + {"data": [interaction_1, interaction_2, interaction_3]} + + ``` + + + For real-time tracking, we recommend sending the interaction records to + this API as soon as the interactions take + + place. This API is also ideal for bulk-inserting historical records that + your site collected before using Miso. + Miso can analyze the historical records and provide personalization for your users from the get-go. We recommend + limiting your calls to around 10,000 records at a time to avoid memory issues or timeout risks. + + ### Anonymous users + + For users who did not sign in, we can still make recommendations for + them by tracking their `anonymous_id`, which is a pseudo-unique + substitute for the `user_id`. The personalization and search APIs all + accept `anonymous_id` in the place of `user_id` to return tailored + results for anonymous users. + + + When an anonymous user later signs in and the `user_id` and + `anonymous_id` are both present, the `anonymous_id` will be linked to + the `user_id` along with the past interactions associated with it. + + + The typical mechanism to generate an `anonymous_id` is to use cookies or + the browser localStorage. However, if you don't collect such information + in your historical records, a hash of the IP address, optionally + combined with the User-Agent string, is also a reasonable substitute for + `anonymous_id`, and is most likely collected by your web server logs + already. + + + ### Schema validation + + The Interaction Upload API will validate the inserted records against + the API schema. + + Any schema errors will cause the whole request to fail, and none of the + records will be inserted (`status_code=422`). + + You should check the `response.errors` field to see if there are any + errors. + + + For example, the response below means there are no errors + (`status_code=200`): + + ```javascript + + { + "message": "success" + } + + ``` + + + Any schema error will cause the whole request to fail: the API will + return `status_code=422`, and none of the + + records will be inserted. You should check `data` field in the response + to see where the errors are located. For + + example, the response below means there are schema errors in the + interaction record at index 0: + + ```javascript + + { + "errors": true, // there are errors. please check! + "message": "None of the records were inserted because at least one of them contained schema errors. Please see the `data` field for details.", + "data": [ + "data.0.product_ids is invalid. The attribute was expected to be of type ''array', 'null'' but type 'string' was given.", + "data.0.timestamp is invalid. The attribute should match the 'date-time' format." + ] + } + + ``` + operationId: interaction_upload_api_v1_interactions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionCreateOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Unprocessable Entity + content: + application/json: + example: + errors: true + message: >- + None of the records were inserted because at least one of them + contained schema errors. Please see the `data` field for + details. + data: + - >- + data.0.product_ids is invalid. The attribute was expected to + be of type ''array', 'null'' but type 'string' was given. + - >- + data.0.timestamp is invalid. The attribute should match the + 'date-time' format. + security: + - Secret API Key: [] + - Publishable API Key: [] + delete: + tags: + - Interaction APIs + summary: Interaction Delete API + description: >- + The endpoint will delete users' interaction data entirely from the log + of interactions you have uploaded to Miso. + + This API enables you to comply with users' data removal requests (i.e. + right to be forgotten). Once a user's + + interactions are deleted, we will not be able to recover them, and they + will no longer contribute to model + + training. + operationId: interaction_delete_api_v1_interactions_delete + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionDeleteOut' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/products: + post: + tags: + - Product / Content APIs + summary: Product / Content Upload API + description: >- + Bulk API to insert Product records. This API endpoint accepts POST + requests with JSON data + + containing a list of Product / Content records wrapped in a dictionary: + + ``` + + POST /v1/products + + + {"data": [product_1, product_2, product_3]} + + ``` + + + Each product is uniquely identified by its `product_id`. If a record + with the same `product_id` + + already exists in the dataset, the existing one will be **replaced** by + the insertion (no + + partial update is allowed at this time). We recommend limiting your + calls to around 100 + + records at a time to avoid memory issues or timeout risks. + + + ### Schema validation + + This API validates the inserted records against the API schema; any + schema error will cause + + the whole request to fail (`status_code=422`), and none of the records + will be inserted. You + + should check the `response.errors` field to see if there are any errors. + For example, + + the response below means there are no errors (`status_code=200`): + + + ```json + + { + "message": "success", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + A common source of errors when uploading Product records is that the + custom attributes' data + + types are not consistent with the data types of the existing records. In + such cases, + + you can check the individual error message in the `data` array. For + example, if there is an + + error regarding the second record you tried to insert, the response + might look like: + + + ```json + + { + "errors": true, // there are errors. please check! + "data": [ + "data.0.custom_attributes.designer is invalid. Its data type is not consistent with other records", + "data.0.product_id is invalid. The attribute expected to be of type 'string', but 'array' is given.", + "data.0.created_at is invalid. The attribute should match 'date-time' format." + ] + } + + ``` + + + ### Internationalization (I18N) + + Miso has the built-in support for majority of Western European + languages, including `English`, `French`, `German`, + + `Spanish`, `Italian`, `Dutch`, `Russian`, and `Ukrainian`, as well as, + major Asian languages, including `Mandarin` + (both Simplified and Traditional), `Japanese`, and `Korean`. + + In Dojo, you can choose the *Primary Language* for your product catalog + (default is English). + + However, you can also have more than one language in your product + catalog that is + + beyond your primary languages using the `i18n_$LN` fields (replace `$LN` + with the [two-letter language + code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) of your + choice), + + and let Miso apply the language-specific preprocessing for you, such as + tokenization, stemming, elision + + removal, folding, decompounding, and traditional to simplified Chinese + conversion. + + + For example, you may have a product called "Arizona, Green Tea with + Ginseng & Honey" in your catalog, and you also + + sell it in your Spanish, French, and Chinese sites, and want your + customers to be able to search for this product + + in their native languages. + + + In this case, your product records will like the following sample + record, where English is the primary language of + + the record, and `i18n_es`, `i18n_fr`, `i18n_zh` fields contain product + details in their corresponding languages. + + ```javascript + + { + "product_id": "arizona-ginseng-honey", + // the primary language is English + "title": "Arizona, Green Tea with Ginseng & Honey", + // ... other product details in English + "i18n_es": { + "title": "AriZona, Té verde con ginseng y miel" + // ... other product details in Spanish + }, + "i18n_fr": { + "title": "AriZona - Thé Vert Aromatisé au Miel" + // ... other product details in French + }, + "i18n_zh": { + "title": "美國ARIZONA亞歷桑納 - 蜂蜜人蔘綠茶" + // ... other product details in Chinese + } + } + ``` + + In this way, your customer can find this product with any of the + following search queries + + without additional configuration: + + * `arizona green tea` + + * `arizona te verde` + + * `arizona the vert` + + * `arizona 綠茶` + + + The similar concept applies to Autocomplete as well. You can specify a + `language` parameter + + in the requests to Autocomplete API, and the autocomplete results for + the specific language + + will be returned. + operationId: content_write_api_v1_products_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProductBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CreateResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Unprocessable Entity + content: + application/json: + example: + errors: true + message: >- + None of the records are inserted, because at least one of them + contain schema errors. Please see `data` field for details. + data: + - >- + data.0.product_id is invalid. The attribute expected to be + of type 'string', but 'array' is given. + - >- + data.0.created_at is invalid. The attribute should match + 'date-time' format. + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/products/{product_id}: + get: + tags: + - Product / Content APIs + summary: Product / Content Read API + description: >- + This API endpoint retrieves the details of a specific product / content + using its `product_id`. + + To fetch the product / content information, make a GET request to the + following URL: + + + **Notice**: Make sure the product_id is an urlencode string. + + + ``` + + GET /v1/products/{product_id} + + ``` + + + Replace `{product_id}` with the unique identifier of the product / + content you wish to fetch. + + + ## Response Format + + + The API will return the product / content details in a JSON object if + the given `product_id` + + is valid and exists in the system. The JSON object will include fields + like `title`, + + `description`, `price`, `images`, and any internationalization fields + (`i18n_$LN`). + + + ### Example Response + + + Here's an example of a successful API response for a product / content + with the `product_id` + + "arizona-ginseng-honey": + + + ```json + + { + "product_id": "arizona-ginseng-honey", + "title": "Arizona, Green Tea with Ginseng & Honey", + "description": "A refreshing and delicious blend of green tea with ginseng and honey.", + "price": 1.99, + "i18n_es": { + "title": "AriZona, Té verde con ginseng y miel" + // ... other product details in Spanish + }, + "i18n_fr": { + "title": "AriZona - Thé Vert Aromatisé au Miel" + // ... other product details in French + }, + "i18n_zh": { + "title": "美國ARIZONA亞歷桑納 - 蜂蜜人蔘綠茶" + // ... other product details in Chinese + } + } + + ``` + + + If the provided `product_id` is invalid or does not exist in the system, + the API will return + + an error response with a `status_code=404`. + + + ### Example Error Response + + ```json + + { + "message": "not found" + } + + ``` + operationId: content_read_api_v1_products__product_id__get + parameters: + - required: true + schema: + title: Product Id + maxLength: 512 + type: string + name: product_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductReadOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '404': + description: Product not Found + content: + application/json: + example: + message: not found + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + delete: + tags: + - Product / Content APIs + summary: Product / Content Delete API + description: >- + This API endpoint allows you to delete a specific product / content from + the system using its + + `product_id`. To remove a product, make a DELETE request to: + + + **Notice**: Make sure the product_id is an urlencode string. + + + ``` + + DELETE /v1/products/{product_id} + + ``` + + + Replace `{product_id}` with the unique identifier of the product / + content you wish to delete. + + + ## Response Format + + + The API will return a JSON object indicating the success or failure of + the deletion request. + + If the deletion is successful, the `status_code` will be `200`, and the + `message` field will + + confirm the successful deletion. + + + ### Example Successful Deletion Response + + + ```json + + { + "message": "deleted", + "data": [ + { + "task_id": "{task_id}" + } + ] + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/products/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: content_delete_api_v1_products__product_id__delete + parameters: + - required: true + schema: + title: Product Id + maxLength: 512 + type: string + name: product_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/products/_ids: + get: + tags: + - Product / Content APIs + summary: Product / Content ID List API + description: >- + This API endpoint allows you to fetch the unique identifiers + (product_ids) of all products + + stored in the app. To get a list of product_ids, make a GET request to + the following URL: + + + ``` + + GET /v1/products/_ids + + ``` + + + ## Response Format + + + The API will return an array of product_ids in a JSON object. The + `status_code` will be `200` + + if the request is successful. If any error occurs during the request, + the `status_code` will + + not be `200` and the `message` field will indicate the error. + + + ### Example Successful Response + + + ```json + + { + "message": "success", + "data": { + "ids": [ + "product_1", + "product_2", + "product_3", + // ... more product_ids + ] + } + } + + ``` + + + ### Example Error Response + + + If the dataset cannot be found, the API will return a `404` error: + + + ```json + + { + "status_code": 404, + "message": "not found" + } + + ``` + + + If another error occurs during the request, the API will return a `500` + error + + + ```json + + { + "message": "Something went wrong. Please contact miso product team." + } + + ``` + operationId: content_read_ids_api_v1_products__ids_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductListOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/products/_delete: + post: + tags: + - Product / Content APIs + summary: Product / Content Bulk Delete API + description: >- + This API endpoint allows you to delete multiple products by providing + their product_ids. + + + To delete multiple products, make a POST request to the following URL: + + + ``` + + POST /v1/products/_delete + + ``` + + + The request body should contain a JSON object with an array of + product_ids: + + + ```json + + { + "data": { + "product_ids": [ + "product-1", + "product-2", + // ... more product_ids to delete + ] + } + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `message` and an array of + `data` + + containing a `task_id` that can be used to get the status of the bulk + deletion process. + + + #### Example Successful Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/products/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: content_bulk_delete_api_v1_products__delete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProductBulkDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/users: + post: + tags: + - User APIs + summary: User Upload API + description: >- + Bulk API to insert User records. This API endpoint accepts POST requests + with JSON data + + containing a list of User records wrapped in a dictionary. + + + ``` + + POST /v1/users + + ``` + + + ```json + + { + "data": [user_1, user_2, user_3] + } + + ``` + + + If a record with the same `user_id` already exists in the dataset, the + existing record will + + be replaced (no partial update is allowed at this time). We recommend + limiting your calls to + + around 100 records at a time to avoid memory issues or timeout risks. + + + ### Schema validation + + + This API validates the inserted records against the API schema. Any + schema error will cause + + the whole request to fail (`status_code=422`), and none of the records + will be inserted. As + + long as the request passes the schema validation, the API will return + `status_code=200`, but + + you should still check if there is any error occurring with individual + records. + + + ```json + + { + "errors": true, + "data": [ + "data.0.user_id is invalid. The attribute was expected to be a `string`" + ] + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `task_id` that can be used to + retrieve. + + + #### Example Successful Response + + + ```json + + { + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: user_write_api_v1_users_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CreateResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Unprocessable Entity + content: + application/json: + example: + errors: true + message: >- + None of the records are inserted, because at least one of them + contain schema errors. Please see `data` field for details. + data: + - >- + data.0.user_id is invalid. The attribute expected to be of + type 'string', but 'array' is given. + - >- + data.0.created_at is invalid. The attribute should match + 'date-time' format. + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/users/{user_id}: + get: + tags: + - User APIs + summary: User Read API + description: >- + This API endpoint retrieves the details of a specific user using their + `user_id`. + + To fetch the user information, make a GET request to the following URL: + + + **Notice**: Make sure the user_id is an urlencode string. + + + ``` + + GET /v1/users/{user_id} + + ``` + + + Replace `{user_id}` with the unique identifier of the user you wish to + fetch. + + + ## Response Format + + + The API will return the user details in a JSON object if the given + `user_id` is valid and + + exists in the system. The JSON object will include fields like `name`, + `age`, `city`, `gender` + + , and other user information. + + + ### Example Response + + + Here's an example of a successful API response for a user with the + `user_id` "user123": + + + ```json + + { + "message": "success", + "data": { + "user_id": "user123", + "name": "johndoe", + // ... other user details + } + } + + ``` + + + If the provided `user_id` is invalid or does not exist in the system, + the API will return an + + error response with a `status_code=404`. + + + ### Example Error Response + + + ```json + + { + "message": "not found" + } + + ``` + operationId: user_read_api_v1_users__user_id__get + parameters: + - required: true + schema: + title: Userid + maxLength: 512 + type: string + name: userId + in: query + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/UserReadOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '404': + description: User not Found + content: + application/json: + example: + message: not found + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + delete: + tags: + - User APIs + summary: User Delete API + description: >- + This API endpoint allows you to delete a specific user from the system + using their `user_id`. + + + **Notice**: Make sure the user_id is an urlencode string. + + + To remove a user, make a DELETE request to: + + + ``` + + DELETE /v1/users/{user_id} + + ``` + + + Replace `{user_id}` with the unique identifier of the user you wish to + delete. + + + ## Response Format + + + The API will return a JSON object with a `task_id` that can be used to + retrieve. + + + #### Example Error Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: user_delete_api_v1_users__user_id__delete + parameters: + - required: true + schema: + title: User Id + maxLength: 512 + type: string + name: user_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/users/_delete: + post: + tags: + - User APIs + summary: User Bulk Delete API + description: >- + This API endpoint allows you to delete multiple users by providing their + user_ids. + + + To delete multiple users, make a POST request to the following URL: + + + ``` + + POST /v1/users/_delete + + ``` + + + The request body should contain a JSON object with an array of user_ids: + + + ```json + + { + "data": { + "user_ids": [ + "product-1", + "product-2", + // ... more product_ids to delete + ] + } + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `message` and an array of + `data` + + containing a `task_id` that can be used to get the status of the bulk + deletion process. + + + #### Example Successful Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: user_bulk_delete_api_v1_users__delete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserBulkDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/search/search: + post: + tags: + - Search APIs + summary: Search API + description: >- + The Search API provides personalized, typo-correcting, semantic search + for your site. + + You send this API the search queries users entered, and the API returns + the relevant search results tailored to your + + users' interests. + + + ### Personalized search + + Personalized search is a key factor in driving search conversion on many + major sites. + + It is particularly powerful for short search queries (<= 3 keywords), + which account for [up to 80% of search traffic in the + U.S.](https://www.statista.com/statistics/269740/number-of-search-terms-in-internet-research-in-the-us/), + + but are usually the hardest to get right with traditional search + engines. This is because shorter search queries tend + + to match a larger number of results, but there + + is not enough information in the query strings alone to determine which + results the users + + are actually looking for. + + + For example, when users search for *jeans* on Levi's.com, it is + + impossible to know which *jeans* the user is looking for, among + thousands of options. + + Even if the user adds: *jeans for men*, it is still unclear to a + traditional search engine what style, material, + + or size the user wants. + + + In the contrary, with Miso's personalized search, we not only analyze + the search query itself, but also take into + + account the *context* in which the searches are made, including who are + the users, where are they from, what are their + + past interactions on the site, what other searches the user made, etc. + These signals together + + allow Miso to generate more than 15% to 20% higher search conversion + rate than the traditional non-personalized search + + engines. + + + ### Balancing relevancy and personalization + + Although personalization is a powerful technique, over-using it can be + harmful to the user experiences. In the + + context of search optimization, the relevancy of the search results are + still the most important criteria, and we + + don't want personalization to overwhelm the search relevancy. + + For example, when users search for a very specific term, or directly + search for the product names, + + Miso's algorithm will respond with the most relevant search results + first, and then only apply personalization to + + rerank more ambiguous search results. + + + + ### Basic usage + + For every search query, you let Miso know the user's `user_id` and the + search keywords in the API request body, + + for example: + + ``` + + POST /v1/search/search + + { + "q": "jeans", + "user_id": "user-123" + } + + ``` + + + For site visitors who do not sign in, you can let Miso know the + `anonymous_id` of this visitor: + + ``` + + POST /v1/search/search + + { + "q": "jeans", + "anonymous_id": "visitor-123" + } + + ``` + + + ### Search response + + With the query above, Miso responds with the search results like the + following: + + ```javascript + + { + "message":"success", + "data":{ + "took":50, + "total":30, + "start":0, + "miso_id":"f34b90de-086b-11eb-b498-1ee8abb1818b", + "products":[ + { + "product_id":"505-regular-fit-mens-jeans", + "title":"The 505 Regular Fit Men's Jeans", + "url":"https://levi.com/jeans/505-regular-fit-mens-jeans/", + "size":"29", + "material":"Cotton", + "color":"Rinse - Dark Wash", + "_search_score": 78.12, + "_personalization_score": 0.98 + } + ], + "spellcheck":{ + "spelling_errors":false + } + + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **total**: the total number of matched products. You can paginate + through all the products by using the combination + + of *start* and *rows* parameters (see *Request Body Schema* below) + + * **miso_id**: a UUID of the search request. You should include + **miso_id** in the Interaction records for every + + interactions that result from this search request, e.g. user + click-through a product in the search results. + + Miso use miso_id to track the search performance and fine-tune the + algorithm accordingly. + + * **products**: an array of [Product records](https://api.askmiso.com) + that match the search + + query, ranked in the order of relevancy and + + probability that the user will be interested in this product. By + default, only the `product_id` of the Product is + + returned. You can ask Miso to return additional fields by using the *fl* + parameter (see *Request Body Schema* below) + + * **products[ ]._search_score**: the search relevancy score of the + products based on keyword matching and Miso's + + semantic matching. This score is similar to traditional Lucene search + score. + + * **products[ ]._personalization_score**: the score assigned by Miso's + personalization algorithm based on users' + + profile and their interactions on the site. This score quantifies the + probability of whether users will be + + interested in this product or not. + + * **spellcheck**: an dictionary contains spell checking information. + + + ### Spellcheck and auto-correction + + According to a [Microsoft Research + study](https://www.aclweb.org/anthology/W04-3238.pdf), roughly 10-15% of + the + + queries sent to search engines contain errors. A misspelled search + keyword often results in poor search + + quality, and users have been accustomed to Google's automatic spelling + correction functionality and expect the same + + on your site. + + + However, correcting spelling and typos at scale is a non-trivial machine + learning problem. + + Miso's spellcheck is based on a sequence-to-sequence + + deep learning model, trained and updated regularly on a corpus of + billion tokens. It detects hard-to-spot errors, + + auto-correct keywords according to its context, and recognize terms that + are newer or lesser known. + + + Spellcheck is always on for every search request so you don't need to + turn it on. + + What you need to decide is whether to turn on *auto spelling + correction*. + + For example, the following search request turns on the + auto-spelling-correction, and Miso will automatically + + replace any misspelled queries with their correct spelling: + + ``` + + POST /v1/search/search + + { + "q":"whte denem jeans", + "user_id":"user-123", + "spellcheck":{ + "enable_auto_spelling_correction":true + } + } + + ``` + + The API will respond: + + ```javascript + + { + "message":"success", + "data":{ + "took":50, + "total":30, + "start":0, + "miso_id":"f34b90de-086b-11eb-b498-1ee8abb1818b", + "spellcheck":{ + "spelling_errors":true, + "auto_spelling_correction":true, + "original_query":"whte denem jeans", + "original_query_with_markups":"whte denem jeans", + "corrected_query":"white denim jeans", + "corrected_query_with_markups":"white denim jeans" + }, + "products":[ + ...... + ] + } + } + + ``` + + The *spellcheck* object contains the following fields: + + * **spelling_errors** indicates whether there is a spelling error in the + query + + * **auto_spelling_correction** indicates whether the search query has + been replaced with the *corrected_query* + + * **original_query** the original search query + + * **original_query_with_markups** the original search query with the + misspelled words highlighted by \ html tags + + * **corrected_query** the search query with misspelling and typos + corrected + + * **corrected_query_with_markups** the search query with misspelling and + typos corrected, and the corrected parts are highlighted by \ + html tags + + + You can opt-out the auto-spelling-correction by setting + `enable_auto_spelling_correction=false`. For example: + + ``` + + POST /v1/search/search + + { + "q":"whte denem jeans", + "user_id":"user-123", + "spellcheck":{ + "enable_auto_spelling_correction":false + } + } + + ``` + + In this case, Miso will still run spellcheck against the query. However, + users' queries will be used as it is, + + and **auto_spelling_correction** field will be *false*. + + + ### Boosting and Diversification + + While Miso's personalized search can drive conversion by showing search + results that are tailored + + to users' interests, ultimately, it is important to make sure that the + search results meet your business goals. + + To that end, Miso provides a great set of tools that enable you to + fine-tune the search ranking and make it aligned + with your goals. + + One great example is **boosting**. Boosting allows you to define a query + that can be used to boost a + + subset of products to the top of the ranking, or to specific *boost + positions*. You can use boosting to run + + different kinds of promotion campaigns, or to promote certain set of + products for individual users that you know + + they will be interested in. + + + For example, consider a scenario where you need to promote the sales of + Nike's products. Then, you might want to + + use the query below, that will promote the sneakers whose brand are + `Nike` to the top of the search result: + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote the + Nike products which have also been tagged + + as `ON SALE`: + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + + You can have as complex boosting logic as you want in the boosting + query, + + but it is worth mentioning that Miso will only boost + + products that are relevant and have high likelihood to convert. In other + words, Miso will not boost low + + performance products even if they match the boosting query. + + + Depending on your boosting rules, in certain cases, you would like to + prevent search results from becoming + + too "plain" due to boosting. For example, you don't want the first page + of the search result to contain only Nike + + products. + + + With Miso, you have two tools to avoid so. First, you can specify + `boost_positions` to place boosted products at + + specific positions in the ranking. For example, the query below will + place boosted products only at the first, + + fourth, seventh places in the ranking (positions are 0-based), and place + the remaining products in their original + + ranking, skipping these three positions. + + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3, 6] + } + + ``` + + + The second tool is `diversification`. Miso's `diversification` algorithm + will maintain a desired minimum distance + + between any two products that have the same attributes. For example, the + + following query will make sure products made by the same *brand* are at + least two slots apart from each + + other in the search results. + + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 2} + } + } + + ``` + + + It is also very often to use both "boost_positions" and + "diversification" at the same time to make sure that + + (1) the search results are not overwhelmed by the boosted products, and + (2) there is a good mix of products from + + different brands showing side-by-side to increase product discovery + rate. + + + ### Result ordering + + + You can override Miso's default ranking order by specifing a list of + fields for Miso to rank the search results. + + These fields can be any numeric or boolean fields in your Product + catalog, or one of the following special + + fields: + + * **_personalization_score**: the score that estimates the probability + that a user will interact with a product + + determined by Miso's personalization algorithm. The range of this score + is between [0, 1]. The scores are + + non-uniformly distributed. The Products that are relevant to users' + interests will have scores much closer to 1, + + than products that are not. + + * **_search_score**: the score that rates the degree of "match" between + search keywords and a product's catalog + + with a focus on Product's titles. + + This score is mostly based on a variant of + [BM25](https://en.wikipedia.org/wiki/Okapi_BM25), but additionally + + consider the term proximity, typos, term semantic similarity. + + Its value is always larger than 0, but its range is unbounded. + + * **_boosting_score**: a binary score indicates whether a Product is + boosted by your boosting query. + + * **_geo_distance**: distance between any point on map, `geo` must be + specified when sorting with this field. + + + For example, the following query returns all the Products (because + `q=*`), ranked by the `_personalization_score` + + first, and then by the values in the `custom_attributes.promote_score` + field in the Product catalog, then the + + distance between the product and New York city. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.05" + }, + "order": "desc" + }, + { + "field": "custom_attributes.promote_score", + "order": "desc" + }, + { + "field": "_geo_distance", + "geo": { + "lat": 40.711967, + "lon": -74.006076, + } + "order": "asc" + } + ] + } + + ``` + + #### Mathematical Functions + + Miso supports mathematical functions that transform and combine + different sorting criteria into one. + + For example, a powerful strategy to improve gross merchandise volume + (GMV), but maintain user + + experience is + + to sort the products based on the multiplication of personalization + scores and product prices. You can achieve this with + + the following `order_by` query: + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score * pow(sale_price, 0.5)", + "order": "desc" + } + + ] + } + + ``` + + Function `pow(sale_price, 0.5)` takes the square root of the sale price + and avoids very expensive products from + + overwhelming the ranking. + + + Miso supports all the common mathematical operators including `+`, `-`, + `*`, `/`, `%`, `^`, `**`, and more + + advanced functions including: + * Power functions: `pow(X, y)`, `sqrt(X)` + * Exponents and logarithms: `exp(X)`, `log(X)`, `log2(X)`, `log10(X)` + * Element-wise maximum / minimum: `maximum(X, y)`, `minimum(X, y)` + * Absolute function: `abs(X)` + * Rounding functions: `round(X)`, `floor(X)`, `ceil(X)` + * Trigonometric functions: `sin(X)`, `cos(X)`, `tan(X)`, `asin(X)`, `acos(X)`, `atan(X)` + + + #### Soft Tie-Breaker + + For scores that have granular resolutions, for example + `_personalization_score`,`_search_scores`, or + + Products' `sale_price`, we usually don't want to rank Products by their + raw values. After all, + + a 0.001 difference in `_personalization_score` or $0.01 difference in + sale price typically will not make a + + difference in users' preferences. In such cases, *soft* tie-breakers + should be used to smooth out these minor + + differences in scores. + + + For example, in the query above, we apply a soft tie-breaker to + `_personalization_score` based on score values' + + relative difference. Specifically, we first sort the score's raw values + in the descending order, then + + for two consecutive values, if their relative difference is no more than + a pre-defined threshold + + (in this case `0.05` or `5%`), they are considered as a tie, and the + next field + + (i.e. `custom_attributes.promote_score`) + + will be used to determine their ranking. + + + It is also common to utilize tie-breakers to combine the effect of two + types of scores. For example, in the + + following query, we set `threshold=0.2` or `20%` for + `_personalization_score`, then only the + + Products that users are 20% more likely to interact with will be ranked + higher, the remaining Products will be + + ranked by their sale prices. In this way, we combine the effect of + personalization score and sale prices, where + + the Products are roughly ranked by personalization, but favor the + pricier products when they have comparable + + personalization scores. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "sale_price", + "order": "desc" + } + + ] + } + + ``` + + + Also note that, when search keywords are present, it is recommended to + always include `_search_score` + + as the first field (plus a tie-breaker) to maintain the relevance of the + search results. A tie-breaker is usually + + required as well to let the subsequent score have effect to the ranking. + + ``` + + { + "q": "toy story", + "order_by": [ + { + "field": "_search_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "sale_price", + "order": "desc" + } + + ] + } + + ``` + operationId: search_v1_search_search_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SearchRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/SearchResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/search/autocomplete: + post: + tags: + - Search APIs + summary: Autocomplete API + description: >- + The Autocompletion API provides real-time, personalized, typo resistant + typeahead for your search bar. + + You send this API what users are currently typing, and the API returns + the complete search query suggestions. + + + ### Personalized typeahead + + Personalized typeahead is an extreme example of personalized search. The + personalization starts immediately when + + users enter even just one character. The typeahead results are + personalized so that the entries most likely to drive + + conversion for the current user are ranked at the top. Miso will predict + what the user is looking for in real-time + + based on their interests and past behaviors. + + + ### Basic usage + + The request schema of Autocompletion API is similar to that of Search + API: you put the search query users typed so + + far, and the `user_id` or `anonymous_id` for Miso to identify the + current user. + + For example, when a user types the first character `r`, you send Miso + the following request: + + ``` + + POST /v1/search/autocomplete + + { + "q":"r", + "user_id":"user-123" + } + + ``` + + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 50, + "miso_id": "e93a6d02-0a7a-11eb-a896-d28586dc1386", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + { + "text": "Reservoir Dogs (1992)", + "text_with_markups": "Reservoir Dogs (1992)", + "product": { + "product_id": "tmdb-500" + } + }, + ... + ] + } + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **completions**: an dictionary of autocompletion candidates from + different sources. By default, we only run + + autocompletion against the titles of products, but you can choose to get + autocompletion candidates from other fields + + using the `completion_fields` parameters. + + * **completions.title[].text**: the text of completion candidates + + * **completions.title[].text_with_markups**: the completion candidates + with the part of text that users + + haven't typed yet surrounded by \ HTML tags. + + * **completions.title[].product**: the product record whose title + matches the autocompletion candidate. This object can be used to + implement direct-to-product links: when they click on the link they will + go + + directly to the product page instead of the search result page. By + default, only the `product_id` field is returned, + you use `fl` request parameter to get more fields returned in the product object. + + + ### Typo resistance + + Miso's autocompletion algorithm accepts up to 4 typos in the query + string. For example, users may try to find the + movie `Robin Hood`, but make two typos in the query, which becomes `robonhood` instead (`robin`->`robon`, and a space is missing). + + ``` + + POST /v1/search/autocomplete + + { + "q":"robanhood", + "user_id":"user-123" + } + + ``` + + + Miso can still find the movie "*Robin Hood: Prince of Thieves*" as a + autocompletion candidate. + + ```javascript + + { + "message": "success", + "data": { + "took": 50, + "miso_id": "e93a6d02-0a7a-11eb-a896-d28586dc1386", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + ... + ] + } + } + } + + ``` + + + ### Completion fields + + The auto-completions are made against your product attributes. By + default, Miso finds completion candidates from the + + `title` field. The `completion_fields` parameter + + lets you specify the attributes you want to perform auto-completion for. + + For example, the following query will return auto-completion candidates + from the `title` and a custom attribute + + field:`custom_attributes.director`. + + ``` + + POST /v1/search/autocomplete + + { + "q": "rob", + "user_id": "user-123", + "completion_fields": [ + "title", + "custom_attributes.director" + ] + } + + ``` + + The response will be like the following: + + ```javascript + + { + "message": "success", + "data": { + "took": 52, + "miso_id": "16d95080-0bb0-11eb-948d-66359cf29022", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + { + "text": "RoboCop (1987)", + "text_with_markups": "RoboCop (1987)", + "product": { + "product_id": "tmdb-5548" + } + }, + ... + ], + "custom_attributes.director": [ + { + "text": "Robert Z. Leonard", + "text_with_markups": "Robert Z. Leonard", + }, + ... + ] + } + } + } + + ``` + operationId: autocomplete_v1_search_autocomplete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AutocompleteRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/AutocompleteResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/search/mget: + post: + tags: + - Search APIs + summary: Multiple Get API + description: >- + The Multiple Get API provides a simple and fast interface to retrieve + Products by their product ids. + + For example, the following query will retrieve products whose + product_ids are `123ABC-S-Black` and `123ABC-S-Blue` + + ``` + + { + "product_ids": ["123ABC-S-Black", "123ABC-S-Blue"] + } + + ``` + + Miso will respond with the complete Products records in the same order + as the given `product_ids`: + + ``` + + { + "message": "success", + "data": { + "products": [ + { + "_found": true, + "product_id": "123ABC-S-Black", + "title": "Product ABC in Black", + ... + }, + { + "_found": true, + "product_id": "123ABC-S-Blue", + "title": "Product ABC in Blue", + ... + } + ] + } + } + + + ``` + + You can use the `_found` field to determine whether a product is found + in the Miso database or not. + + When the given product_id is not found, the `_found` field in the + corresponding Product record + + will become `false`. + + + For example, the following query requests a `product_id` that does not + exist in the Miso database: + + ``` + + { + "product_ids": ["Product_Not_Exists", "123ABC-S-Black"] + } + + ``` + + Miso will respond: + + ``` + + { + "message": "success", + "data": { + "products": [ + { + "_found": false, + "product_id": "Product_Not_Exists" + }, + { + "_found": true, + "product_id": "123ABC-S-Black", + "title": "Product ABC in Black", + ... + } + ] + } + } + + ``` + + Finally, like every Miso API, you can use `fl` to control what Product + fields to return. By default, all the Product + + fields will be returned, but the following query will return only + `title` field of the product (in addition + + to `product_id`) + + ``` + + { + "product_ids": ["123ABC-S-Black", "123ABC-S-Blue"], + "fl": ["title"] + } + + ``` + operationId: mget_v1_search_mget_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MultipleGetRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/MultipleGetResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/ask/questions: + post: + tags: + - Ask APIs + summary: Create a new qestion + description: |- + This API is used to submit questions to Miso. + + After a question is submitted, a `question_id` is returned. + Then you can use `question_id` to check the latest status of it's answer + as it is being compiled. + + operationId: questions_v1_ask_questions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/ask/questions/{question_id}/answer: + get: + tags: + - Ask APIs + summary: Get latest answer of asked question + description: >- + This API is used to fetch the latest answer of previous submitted + question from Miso + + + A submitted question is put into a job with following stage: + + + - Initialization + + - Parsing and fecthing related content + + - Relevance checking + + - Summarization + + + This API will tell you at what stage current question is in. + + If answer is fetched and being summerized, it will also return the + latest summarization result. + + + Besides human readable answer, the products used to generate answer are + also returned. + + operationId: questions_answer_v1_ask_questions__question_id__answer_get + parameters: + - required: true + schema: + title: Question Id + type: string + format: uuid + name: question_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PollAnswerResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_products: + post: + tags: + - Recommendation APIs + summary: User to Products API + description: >- + Returns the products that are most likely to drive conversion for the + given user. Depending on the conversion + + metrics you choose when training your Miso Engines in Dojo, this API + returns products that are most likely to + + optimize those metrics (such as `add_to_cart`, `checkout`, or `read`). + + + This API considers both user's interests and the conversion probability. + The user's interests are determined from + + their past interactions on the site and the context of their current + browsing session, including recent trending + + products, time of the day, recent search behaviors, etc. + + + ### Application scenarios + + The User to Products API is usually used in homepage recommendations, + such as "*Inspired by your shopping trends*" on + + Amazon, or "*Recommended videos*" on Youtube. It can also be used to run + an email marketing campaign such as a + + newsletter from Medium with recent articles you might like. These kind + of recommendations are particularly powerful + + in driving product discovery. + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the id of + the current user or visitor via `user_id` + + or `anonymous_id` field. For example, for a currently logged-in user, + your request may look like the following: + + ``` + + POST /v1/recommendation/user_to_products + + {"user_id": "user-123"} + + ``` + + For a un-signed visitor, your request may look like the following: + + ``` + + POST /v1/recommendation/user_to_products + + {"anonymous_id": "visitor-123"} + + ``` + + + This API will respond with the recommended products for the specified + user or visitor: + + ```javascript + + { + "message": "success", + "data": { + "took": 37, + "miso_id": "517452b0-0ccf-11eb-948d-66359cf29022", + "products": [ + { + "product_id": "tmdb-475557", + "_personalization_score": 0.91 + }, + { + "product_id": "tmdb-299534", + "_personalization_score": 0.89 + }, + ... + ] + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **miso_id**: a UUID of the search request. You should include + **miso_id** in the Interaction records for every + + interactions that result from this search request, e.g. user + click-through a product in the search results. + + Miso use miso_id to track the search performance and fine-tune the + algorithm accordingly. + + * **products**: an array of [Product records](https://api.askmiso.com) + recommended to this + + user ranked by the probability that the user will be interested in this + product. By default, only the `product_id` + + of the Product is returned. You can ask Miso to return additional fields + by using the *fl* request argument (see example below) + + * **products[ ]._personalization_score**: the score assigned by Miso's + personalization algorithm based on users' + + profile and their interactions on the site. This score quantifies the + probability of whether users will be + + interested in this product or not. + + + You can use the `fl` request argument to ask Miso to return more product + fields. For example, the following request + + asks Miso to additionally return the *title* and *category* fields of + every recommended product: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"] + } + + ``` + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 37, + "miso_id": "517452b0-0ccf-11eb-948d-66359cf29022", + "products": [ + { + "product_id": "tmdb-475557", + "categories": [ + [ + "Crime" + ], + [ + "Thriller" + ], + [ + "Drama" + ] + ], + "title": "Joker (2019)", + "_personalization_score": 0.91 + }, + { + "product_id": "tmdb-299534", + "categories": [ + [ + "Adventure" + ], + [ + "Science Fiction" + ], + [ + "Action" + ] + ], + "title": "Avengers: Endgame (2019)", + "_personalization_score": 0.89 + }, + ... + ] + } + } + + ``` + + ### Filtering and Boosting + + Like every other Miso API, `User To Products` API supports filter query + (`fq`) and boost query (`boost_fq`) to + + generate recommendations that meet your business needs. + + + #### Filter Query + + You can use filter query to filter recommendation results against + + arbitrary criteria, and Miso will *guarantee* to return sufficient + number of recommendation results that meet the + + criteria. For example, the following requests will limit the + recommendations to only `Drama` films: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "fq": "categories:Drama" + } + + ``` + + + For another example with `custom_attributes`, the following requests + will limit the recommendations to + only `Drama` films after `2010`: + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "fq": "categories:Drama AND custom_attributes.year:[2010 to *]" + } + + ``` + + + #### Latency Consideration + + Miso achieves **instant** recommendations by pre-computing a large pool + of candidates (N>1,000) + + for each user with the products they are mostly likely to be interested + in. However, when the given filter query do + + not match a sufficient number of + + candidates, Miso will fall back to Search API to find additional matches + to fill in the remaining + + slots. While falling back to Search API will increase the latency, the + latency increase is usually minimum if the + + same filter query is being used repeatedly due to Miso's caching + mechanism. + + + + #### Boost Query + + You can use `boost_fq` to boost Products with arbitrary criteria. The + relevant Products that match the `boost_fq` + + will be ranked at the top of the recommendations or at the positions + specified in the + + `boost_positions` parameter. Boosting is particularly useful for product + promotions (e.g. sponsored products) to + + highlight the Products you want more impression. + + + For example, the following request will boost the `Sci-Fi` films + directed by `Ridley Scott`: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "boost_fq": "categories:\"Sci-Fi\" AND custom_attributes.director:\"Ridley Scott\"" + } + + ``` + + The response will be like: + + + ```javascript + + { + "message": "success", + "data": { + "took": 83, + "miso_id": "54bf6d9a-dd32-11eb-99d6-a62d401473b5", + "products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)", + "_personalization_score": 0.5364759309088403, + "_boosted": true, + "categories": [ + [ + "Drama" + ], + [ + "Adventure" + ], + [ + "Science Fiction" + ] + ] + }, + ... + ] + } + } + + ``` + + The additional field **products[ ].boosted** is a boolean that indicates + whether the Product matches the `boost_fq`. + + + You can also use `boost_positions` to specify the positions in the + recommendation list you want the + + boosted Products to be placed. For example, the following request will + place the boosted Product at the second place, + + and the third place (the `boost_positions` are 0-based): + + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "boost_fq": "categories:\"Sci-Fi\" AND custom_attributes.director:\"Ridley Scott\"", + "boost_positions": [1, 2] + } + + ``` + + + ### Filtering "already seen" items + + Typically, the User to Products API is used to let users discover new + products they might be interested in. Therefore, + + it is important not to recommend products users have already interacted + with recently. By default, the User to Products + + API filters out the most recent 50 products users have had interactions + with (except for `impression` interactions) + operationId: user_to_products_v1_recommendation_user_to_products_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToItemsRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/RecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_categories: + post: + tags: + - Recommendation APIs + summary: User to Categories API + description: >- + The User to Categories API returns the product categories that will + drive the conversion for the current user, + + along with the recommended products for each returned category. + + + ### Application scenarios + + This API is usually used in homepage recommendations, or category + recommendations + + where recommendations are organized by categories, + + such as Netflix's "*Action / Sci-Fi / Drama movies for you*" + + or Amazon's "*Recommendations for you in Grocery & Gourmet Food*". The + goal of such recommendations is to help + + users discover attractive products under the categories they + + have a high chance to be interested in. + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the + `user_id` or + + `anonymous_id` of the current users. Miso will return a list of top + categories along with the recommended + + Products under each of the categories. + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "fl": ["title"] + } + + ``` + + * **rows**: the number of categories to return + + * **products_per_category**: the number of Products to return per each + category + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response of this request will be like: + + ``` + + { + "message": "success", + "data": { + "took": 85, + "miso_id": "7cd6059c-dd54-11eb-8050-a62d401473b5", + "categories": [ + { + "category": [ + "Drama" + ], + "total": 61510, + "recommended_products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)" + }, + { + "product_id": "tmdb-281957", + "title": "The Revenant (2015)" + }, + { + "product_id": "tmdb-68718", + "title": "Django Unchained (2012)" + } + ] + }, + { + "category": [ + "Thriller" + ], + "total": 21870, + "recommended_products": [ + { + "product_id": "tmdb-11324", + "title": "Shutter Island (2010)" + }, + { + "product_id": "tmdb-1949", + "title": "Zodiac (2007)" + }, + { + "product_id": "tmdb-1422", + "title": "The Departed (2006)" + } + ] + } + ] + } + } + + ``` + + * **categories**: a list of categories recommended to the users. + + * **categories[].category**: the recommended category in the format of + category hierarchy. `["Sci-Fi"]` is a top level category, + + `["Sci-Fi", "Space Travel"]` is a second-level category under `Sci-Fi` + (a.k.a subcategory). + + * **categories[].total**: the total number of Products belonging to the + category + + * **categories[].recommended_products**: a list of Products (in that + category) recommended to the users + + + ### Root Category + + By default, `User To Categories` API recommends top level categories, + but you can change this behavior + + via `root_category` parameter. Miso will recommend the immediate + sub-categories of the given `root_category` + + For example, the following request will recommend sub-categories under + + `Science Fiction`, for example `["Science Fiction", "Space Travel"]` or + `["Science Fiction", "Steampunk"]`: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "test", + "root_category": ["Science Fiction"] + } + + ``` + + + In some cases, you may want to get recommendations from *any* + subcategories (regardless their parent category). + + In such case, you can use wildcard `*` to achieve such results. For + example, the following request will recommend + + any sub-categories regardless their parent category: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "test", + "root_category": ["*"] + } + + ``` + + ### Filter and boost query + + Like every Miso API, `User To Categories` supports `fq` for filtering, + and `boost_fq` for boosting. You can use + + these parameters to make the recommendation results meet your exact + business needs. For example, the following + + request will recommend categories + + that contain sufficient number of Products that meet the `fq` criteria + (i.e. films after 2010), and each Product + + returned in the `recommended_products` list will also meet the `fq` + criteria: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "fq": "custom_attributes.year: [2010 TO *]" + } + + ``` + + Similarly, you can use `boost_fq` to promote Products that meet your + business criteria in each category. For example, + + the following request will prioritize Products that are promoted + (indicated by `custom_attributes.promoted`): + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "boost_fq": "custom_attributes.promoted: true" + } + + ``` + + ### Latency considerations + + `User To Categories` API is one of more complex API because it needs to + first identify categories the user will be + + interested in, and then find the top Products in that categories. We + make this process real-time by pre-computing a + + large number of top Products users may find interesting in for each + category, therefore the end-to-end latency is + + usually under 100ms. To further reduce the latency, you can: + + * Use a smaller `products_per_category` to reduce number of products to + return, or set it to zeros if you don't need any. + + * Request only the necessary fields using `fl` parameters + + * Use a smaller `rows` to reduce number of categories to return + operationId: user_to_categories_v1_recommendation_user_to_categories_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToCategories' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CategoryRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_attributes: + post: + tags: + - Recommendation APIs + summary: User to Attributes API + description: >- + The `User to Attributes` API is a generalized version of `User to + Categories` API --- it returns the product + + attributes that Miso expects to drive a conversion for the current + + user. You specify a field in your Product catalog you want + recommendations for, e.g. the `brand` or a custom field like + + `custom_attributes.director`, and this API will return a list of values + from that fields Miso expects users will be most + + interested in, as well as a list of personalized product suggestions. + + + ### Applicable scenarios + + This API is usually used in homepage recommendations, where users can + interact with recommended attributes. + + For example, this API could generate suggestions for "the brands you may + like" or "the creators you may like." + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the + `user_id` or `anonymous_id`, and the `field` you + + want to get recommendations for. For example, the following request will + return the recommended `director` for + + the given users: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_attributes + + { + "user_id": "test", + "field": "custom_attributes.director", + "rows": 3, + "products_per_attribute": 2, + "fl": ["title"] + } + + ``` + + * **field**: the name of the field you want to get recommendation for + + * **rows**: the number of categories to return + + * **products_per_attribute**: the number of Products to return per each + attribute + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response of this request will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 296, + "miso_id": "9d7c8d9c-dd73-11eb-b20d-9a566192e5c6", + "attributes": [ + { + "value": "Christopher Nolan", + "total": 12, + "recommended_products": [ + { + "product_id": "tmdb-272", + "title": "Batman Begins (2005)" + }, + { + "product_id": "tmdb-77", + "title": "Memento (2000)" + } + ] + }, + { + "value": "Ridley Scott", + "total": 26, + "recommended_products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)" + }, + { + "product_id": "tmdb-4982", + "title": "American Gangster (2007)" + } + ] + }, + { + "value": "Quentin Tarantino", + "total": 13, + "recommended_products": [ + { + "product_id": "tmdb-680", + "title": "Pulp Fiction (1994)" + }, + { + "product_id": "tmdb-68718", + "title": "Django Unchained (2012)" + } + ] + } + ] + } + } + + + ``` + + * **attributes**: a list of attributes recommended to the users. + + * **attributes[ ].value**: the recommended attribute value (in this + case, director name) + + * **attributes[ ].total**: the total number of Products that have this + attribute + + * **attributes[ ].recommended_products**: a list of Products (with the + attribute) recommended to the users + operationId: user_to_attributes_v1_recommendation_user_to_attributes_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToAttributes' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/AttributeRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_trending: + post: + tags: + - Recommendation APIs + summary: User to Trending API + description: >- + The User to Trending API returns the products that are currently + trending + + and are most likely to be of interest to this user. It's different from + the User to Products API because it will only + + recommend trending products. However, each user should still see unique + recommendations that are not only trending but + + also suit their interests. + + + ### Applicable scenarios + + This API is typically used to make homepage recommendations such as + "Trending products for users like you" or + + "Trending on Youtube". + + + ### Filtering "already seen" items + + The User to Trending API will not recommend products users have recently + interacted with. + operationId: trending_items_v1_recommendation_user_to_trending_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToItemsRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/TrendRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/product_to_products: + post: + tags: + - Recommendation APIs + summary: Product to Products API + description: >- + The Product to Products API returns the products that are related to an + anchor product (often the product the user + + is currently engaging with) and are also likely to drive conversions by + connecting with the user’s interests. It is + + different from the User to Products API as it not only considers the + user’s interests but also considers the + + recommended products' relevancy to the anchor product. + + + ### Applicable scenarios + + This API is frequently used in product detail page to show related + products that users can consume + + further, such as "Related products you may like" on Amazon or "Up next + video" on Youtube. It is one of Miso's best + + performing APIs. Our customers usually see more than 30% and some times + 110% relative lift in click-through rate after + + deploying this a feature using this API. + + + ### Basic usage + + To use this API, you just need to let Miso knows the `user_id` (or + `anonymous_id`) and the `product_id` you + + want to get related recommendations for. For example, the following + request will return the products that are + + related to the movie `Toy Story`. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"] + } + + ``` + + * **product_id**: the id of the anchor product + + * **rows**: the number of related products to return + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 56, + "miso_id": "f98b1904-ddce-11eb-be53-fa1729b23183", + "products": [ + { + "product_id": "toy-story-2-1999", + "title": "Toy Story 2 (1999)" + }, + { + "product_id": "toy-story-3-2010", + "title": "Toy Story 3 (2010)" + }, + { + "product_id": "the-lion-king-1994", + "title": "The Lion King (1994)" + } + ] + } + } + + ``` + + * **products**: a list of products related to the anchor product + + * **products[ ].product_id**: the id of the recommended product + + * **products[ ].title**: the title of the recommended product. You can + use `fl` parameter to make Miso return more fields + + + ### Boosting and filtering + + Like every Miso API, you can utilize `fq` and `boost_fq` to fine-tune + the recommendations returned by Miso, and + + Miso will guarantee to return the required number of recommendations + that meet the given criteria. + + + For example, the following request still recommends movies related to + "Toy Story" but limits the recommendations + + to only the movies released after year 2010. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"], + "fq": "custom_attributes.year: [2010 TO *]" + } + + ``` + + + For another example, the following request will *boost* the movies that + are acted by `Tom Hanks`. The boosting is + + different from filtering as it only prioritizes those products that + match the boosting criteria and are relevant to + + the anchor products, but it will not limit the results to only such + products. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"], + "boost_fq": "custom_attributes.actors:\"Tom Hanks\"" + } + + ``` + + + ### Multiple anchor products + + In the scenarios where you want to recommend products related to + **multiple** anchor products, for example, + + for shopping cart cross-sell or up-sell, you can utilize `product_ids` + + parameter and have multiple product ids in it. + + + For instance, the following request recommends products related to + movies "Toy Story" and "Monsters, Inc." + + that will be of interest to the the current user. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_ids": ["toy-story-1995", "monsters-inc-2001"], + "rows": 3, + "fl": ["title"] + } + + ``` + operationId: product_to_products_v1_recommendation_product_to_products_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/YMALRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductToProductsResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/qa/question_answering: + post: + tags: + - Q&A APIs + summary: Q&A API + description: >- + Question Answering API analyzes each Product's `html` field and extracts + paragraphs that can answer users' + + questions. + + + For example, Miso can take question likes `What is python?`, and extract + an answer like + + `Python is an interpreted, object-oriented, high-level programming + language.` from a product's `html` field. + + + Each answer is assigned a `probability` score that determines how likely + a paragraph can accurately answer the + + question. A probability at least 0.7 is recommended, but you usually + will need to fine-tune + + this threshold to find the precision-and-recall sweet-spot for your + application. + + + ### Limitations + + Miso will only extract answers from the `html` field and from products + that have `enable_question_answering` set to `true`. Also, + + since Q&A is a much more complex search problem, the response time of + this API is usually between 1 to 2 seconds + + for a new question. For an old question this API has answered before, + the response time will be less than 75ms. + operationId: question_and_answer_v1_qa_question_answering_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionAnsweringRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QAResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/qa/questions: + post: + tags: + - Q&A APIs + summary: Upload Question Bank API + description: >- + Question Bank API lets you upload your *question bank* to Miso. A + *question bank* is a list of questions that + + can be used for **Question Autocomplete** and **Similar Question + Search**. + + + This API follows a *replace-all* model, i.e. a successful upload request + will replace all the existing questions + + in the question bank. + + + For example, the following request will replace the existing question + bank with the given three questions: + + ``` + + POST /v1/qa/questions + + {"data": [ + {"question": "What is python?"}, + {"question": "What is list comprehension?"}, + {"question": "How to sort a list in Python?"} + ]} + + ``` + + + + + operationId: post_questions_v1_qa_questions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PostQuestionRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BaseResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/qa/question_autocomplete: + post: + tags: + - Q&A APIs + summary: Question Autocomplete API + description: >- + Question Autocomplete is an important feature for Q&A applications. It + not only saves your users from typing + + the complete questions, but also showcases what questions your app is + capable answering. This is important because + + Q&A is an advanced search feature that not every user is familar with. + + + Miso generates autocomplete candidates from the question bank you + uploaded (see [Question Bank Upload API](...)). + + Given a partial question string, Question Autocomplete API will suggest + question candidates that match the query + + the user is typing. + + + + For example, let's first upload three questions to the question bank: + + ``` + + POST /v1/qa/questions + + {"data": [ + {"question": "What is python?"}, + {"question": "What is pypy?"}, + {"question": "How to sort a list in Python?"} + ]} + + ``` + + + Then, immediately after the above request finished, you can send the + request below to get autocompletion + + candidates for any partial query string. For example, if the query + string the user types so far is *"what is p"*: + + + ``` + + POST /v1/qa/question_autocomplete + + { + "q": "what is p", + "rows": 5 + } + + ``` + + + The API will respond the completion candidates like the following: + + ``` + + { + "data": + "completions": [ + {"question": "What is python?"}, + {"question": "What is pypy?"} + ] + } + } + + ``` + + + The API supports adaptive fuzzy matching such that even if there are + typos in the query string, the API + + is still able to return the question candidates with the correct + spellings. For example, if the query string is + + "*How to sorta*". The API is still able to match the completion + candidate: + + "*How to sort a list in Python?*" + + + The API is optimized for instant experience and has an average response + time lower than 50ms. + operationId: post_autocomplete_v1_qa_question_autocomplete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionAutocompleteRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QAAutocompleteResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/bulk: + post: + tags: + - Bulk API + summary: Bulk Request API + operationId: bulk_v1_bulk_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BulkResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + components: + schemas: + AddToCart: + title: add_to_cart + required: + - type + type: object + properties: + type: + title: Type + enum: + - add_to_cart + type: string + description: > + + Used when a user adds a product into their shopping cart. This is a + strong + + positive signal of the user's interest in the product, and may + eventually lead to a purchase. + quantities: + title: Quantities + anyOf: + - type: array + items: + type: number + - type: number + description: > + + The quantities of products the user adds to their cart or checks out + with. This field should be a list of positive values. + + Specifically, if `product_ids` is a list of N products, the + `quantities` needs to be a list with N numbers as well. + + If `quantities` are not specified, we will assume the quantity to be + 1 for every product. + + + Example: + + ``` + + {"quantities": [1, 2]} + + ``` + example: + - 1 + - 2 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + AddToCollection: + title: add_to_collection + required: + - type + type: object + properties: + type: + title: Type + enum: + - add_to_collection + type: string + description: > + + Used when a user adds a product to their personal collection. This + is a strong + + signal of their interest in the product. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + AnchoringEntry: + title: AnchoringEntry + required: + - product_id + - anchor_ids + type: object + properties: + product_id: + title: Product Id + type: string + description: Product to boost + anchor_ids: + title: Anchor Ids + minLength: 1 + type: array + items: + type: string + minLength: 1 + description: A list of anchor products + relative_position: + title: Relative Position + type: integer + description: Relative position to the top anchor product + default: -1 + start_time: + title: Start Time + type: string + description: When does the anchoring start. Leave it unset to start immediately + format: date-time + end_time: + title: End Time + type: string + description: When will the anchoring end. Leave it unset to not have an end time + format: date-time + Answer: + title: Answer + required: + - probability + - text + - css_selector + type: object + properties: + probability: + title: Probability + maximum: 1 + minimum: 0 + type: number + description: >- + The probability this paragraph can sufficiently answer the user's + question (from 0.0 to 1.0). + html: + title: Html + type: string + description: >- + The answer paragraph in its original html tag, i.e. or the + `outerHTML` of the + answer paragraph node. + + text: + title: Text + type: string + description: The plain text version of answer paragraph. + css_selector: + title: Css Selector + type: string + description: > + + The CSS selector that uniquely identifies the answer paragraph node + in the original HTML content. This css selector + + matches exactly one HTML node that contains the answer paragraph. In + order to be as unambiguous as possible, + + the returned CSS selector is in the form of a series of nth-child + selectors starting from `:root` node + + (which is usually the ``). For example, + + ``` + + :root > div:nth-child(1) > p:nth-child(2) + + ``` + + . This selector means the answer paragraph is a `

` tag that is + the second child of a `

` node, which is in turn, the + + first child of the `:root` node. + + + This CSS selector is useful when you want to make the answer + paragraph stand out from the + + rest of the document. For example, + + the following JQuery code turns the background color of the answer + paragraph to yellow: + + + ``` + + $(answer.css_selector).css("background-color", "yellow"); + + ``` + AnswerBlock: + title: AnswerBlock + required: + - html + - css_selector + - relevant_children_slice + - answer_css_selector + - title + type: object + properties: + html: + title: Html + type: string + description: The HTML content of the answer block + css_selector: + title: Css Selector + type: string + description: >- + The CSS selector that uniquely identifies the answer block from the + HTML root + relevant_children_slice: + title: Relevant Children Slice + type: array + items: + - type: integer + - type: integer + description: >- + The range of children nodes inside the *answer block* that is + relevant to the selected answer. + answer_css_selector: + title: Answer Css Selector + type: string + description: |2- + + The CSS selector to the selected answer paragraph inside the answer block. You can use this selector to select + the answer from the answer block (as supposed to selecting from the HTML root) + + title: + title: Title + type: string + description: >- + The relevant title to the answer paragraph. This title is extracted + from a header node close + to the answer paragraph. If there is no such node, the title will be an empty string + AnswerData: + title: AnswerData + required: + - question + - question_id + type: object + properties: + question: + title: Question + type: string + description: The question given by the user + question_id: + title: Question Id + type: string + description: The UUID of the question for which the latest answer is requested. + format: uuid + parent_question_id: + title: Parent Question Id + type: string + description: >- + The UUID of the parent question if the current question is a + follow-up to a previous question. + format: uuid + answer_stage: + title: Answer Stage + type: string + description: The status of the answer generating process. + default: '' + finished: + title: Finished + type: boolean + description: Whether the answer generating process is finished. + default: false + answer: + title: Answer + type: string + description: The latest answer for the given question. + default: '' + sources: + title: Sources + type: array + items: + type: object + description: A list of sources related to the answer. + default: [] + related_resources: + title: Related Resources + type: array + items: + type: object + description: A list of related resources relevant to the question and answer. + default: [] + followup_questions: + title: Followup Questions + type: array + items: + type: string + description: A list of suggested follow-up questions. + affiliation_products: + title: Affiliation Products + type: array + items: + type: object + description: A list of suggested affiliation products. + AttributeRecRecord: + title: AttributeRecRecord + required: + - value + - total + - recommended_products + type: object + properties: + value: + title: Value + type: string + description: The attribute we recommend to the user in their textual form. + example: Miso T-Shirt Shop + total: + title: Total + type: integer + description: The total number of products that have this attribute. + example: 1000 + recommended_products: + title: Recommended Products + type: array + items: + $ref: '#/components/schemas/Record' + description: Top personalized recommendations of products have this attribute. + example: 1000 + AttributeRecResponse: + title: AttributeRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/AttributeResponseBody' + AttributeResponseBody: + title: AttributeResponseBody + required: + - attributes + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + attributes: + title: Attributes + type: array + items: + $ref: '#/components/schemas/AttributeRecRecord' + description: The attribute recommendation results. + AutocompleteRequest: + title: AutocompleteRequest + required: + - q + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of search results to return. + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + q: + title: Q + minLength: 0 + type: string + description: > + + The search query users typed so far. Please keep the trailing spaces + (if any) intact so that we + + know whether the user has finished typing the last word or is still + typing it. For example, the following query + + means the user has finished typing the word *Fight*: + + ``` + + {"q": "Fight "} + + ``` + + On the other hand, the following query means the user has not + finished typing the last word *Clu*: + + ``` + + {"q": "Fight Clu"} + + ``` + language: + title: Language + type: string + description: > + + Two-letter (639-1) language code of the search query. If given, the + autocomplete results will be from + + that specific language. If not given, the autocomplete results will + be from the primary language + + of the environment. Example query: + + ``` + + {"language": "en"} + + ``` + min_query_users: + title: Min Query Users + type: integer + description: > + + Limits the query completion results to *historical queries* that + have been made by at + + least this number of unique users. This parameter has no effect when + `completion_fields` does not include + + `historical_queries`. We do not recommend setting `min_query_users` + lower than 5. When + + `min_query_users` is too small, we might risk showing queries that + contain typos or are too personal to the + + users who made the query. + default: 5 + completion_fields: + title: Completion Fields + type: array + items: + type: string + description: >+ + + + Controls the sources of autocompletion candidates. Miso performs + autocompletion by matching + + what the user has typed so far to either the *title* of products or + to other *attributes*. + + + By default, we only autocomplete against the value in the `title` + field. The `completion_fields` parameter lets you + + specify the attributes you want to perform autocompletion against. + For example, the following + + query will limit the autocompletion candidates to the `title` and + `tags` of products: + + + ``` + + {"completion_fields": ["title", "tags"]} + + ``` + + + Autocompletion also works on *custom attributes*. For example, if + you have a custom attribute for the + + `designer_name` of the product, the following query limits + autocompletion candidates to only the designer names: + + + ``` + + {"candidates": ["custom_attributes.designer_name"]} + + ``` + + default: + - title + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + additionalProperties: false + AutocompleteResponse: + title: AutocompleteResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/AutocompleteResponseBody' + AutocompleteResponseBody: + title: AutocompleteResponseBody + required: + - completions + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + completions: + title: Completions + type: object + additionalProperties: + type: array + items: + anyOf: + - $ref: '#/components/schemas/TitleCompletion' + - $ref: '#/components/schemas/Completion' + description: Autocompletion results. + example: + title: + - text: Miso Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + type: title + product: + product_id: 123ABC-S-Black + brand: + - text: Miso + type: brand + - text: Mitsui + type: brand + description: |- + autocomplete api response body: + { + "completions": [{"text": "", "source": ""}] + } + BaseBody: + title: BaseBody + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + BaseGeo: + title: BaseGeo + required: + - lat + - lon + type: object + properties: + lat: + title: Lat + maximum: 90 + minimum: -90 + type: number + description: Latitude of the center point, should between 90 and -90 + lon: + title: Lon + maximum: 180 + minimum: -180 + type: number + description: Longitude of the center point, should between 180 and -180 + BaseResponse: + title: BaseResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/BaseBody' + BaseResponseBody: + title: BaseResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/Record' + description: The recommendation results. + Bookmark: + title: bookmark + required: + - type + type: object + properties: + type: + title: Type + enum: + - bookmark + type: string + description: | + + Used when a user bookmarks a product. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + BoostItem: + title: BoostItem + required: + - field + - option + - query + type: object + properties: + field: + title: Field + type: string + description: The boosting field of the rule. + option: + title: Option + enum: + - contains + - not_contain + - is + - is_not + type: string + description: The boosting option of the field. + query: + title: Query + type: string + description: The boosting query of the field. + action: + title: Action + enum: + - pin + - bury + - remove + type: string + description: The boosting action of the field. + pin_position: + title: Pin Position + minimum: 1 + exclusiveMinimum: 0 + type: integer + description: >- + This field is a 1-based integer to describe the position. This field + is only used when action is "pin". + example: 1 + example: + field: title + option: contains + query: iphone + BoostingFilterBase: + title: BoostingFilterBase + type: object + properties: + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + BulkIndividualResponse: + title: BulkIndividualResponse + required: + - error + - status_code + - body + type: object + properties: + error: + title: Error + type: boolean + description: Whether there is an error + status_code: + title: Status Code + type: integer + description: Status code of the response + body: + title: Body + allOf: + - $ref: '#/components/schemas/GeneralBody' + description: The response body + description: 'Individual response in a bulk API request ' + BulkRequest: + title: BulkRequest + required: + - requests + type: object + properties: + requests: + title: Requests + maxItems: 100 + minItems: 1 + type: array + items: + $ref: '#/components/schemas/EngineAPIRequest' + description: An array of request objects + description: Bulk API request + BulkResponse: + title: BulkResponse + required: + - data + - errors + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/BulkIndividualResponse' + description: The bulk request results + errors: + title: Errors + type: boolean + description: Whether there is any errors in the responses + description: 'Bulk API response ' + Campaign: + title: Campaign + type: object + properties: + name: + title: Name + type: string + description: >- + Name of the campaign. Identifies a specific product promotion or + strategic campaign. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: spring_sale + source: + title: Source + type: string + description: >- + Source of the campaign. Identifies which site sent the traffic. (see + [UTM parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: Google + medium: + title: Medium + type: string + description: >- + Medium of the campaign that identifies what type of link was used, + such as cost per click or email. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: cpc + term: + title: Term + type: string + description: >- + Term of the campaign that identifies search terms. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: running+shoes + content: + title: Content + type: string + description: >- + Content of the campaign that identifies what specifically was + clicked to bring the user to the site, such as a banner ad or a text + link. It is often used for A/B testing and content-targeted ads. + Identifies search terms. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: textlink + CategoryPageView: + title: category_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - category_page_view + type: string + description: > + + Used when a user views a category page for a specific “family” or + “group” or products or content. + + This is a strong indicator of what types category of products or + content the user is interested in. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + category: + title: Category + type: array + items: + type: string + description: > + + Categories usually fall in a hierarchy, such as *Home & Garden > + Kitchen & Dining > Kitchen Tools & Utensils > + + Sushi Mats* Use this field to specify the full hierarchical list + describing the category the user is viewing. + + + The levels should be listed from broad to narrow: + + `["TOP_LEVEL_CATEGORY", "SUBCATEGORY_1", "SUBCATEGORY_2", ...]`. + + This field is only used by the category_page_view interaction type, + but this data is very useful for + + determining the user’s interests. + + Example: + + ``` + + [ + "Home & Garden", // TOP_LEVEL_CATEGORY + "Kitchen & Dining", // SUBCATEGORY_1 + "Kitchen Tools & Utensils", // SUBCATEGORY_2 + "Sushi Mats" // SUBCATEGORY_3 + ] + + ``` + additionalProperties: false + CategoryRecRecord: + title: CategoryRecRecord + required: + - category + - total + - recommended_products + type: object + properties: + category: + title: Category + type: array + items: + type: string + description: The attribute we recommend to the user in their textual form + example: + - Miso T-Shirt Shop + total: + title: Total + type: integer + description: The total number of products that are associated with this category. + example: 1000 + recommended_products: + title: Recommended Products + type: array + items: + $ref: '#/components/schemas/Record' + description: >- + Top personalized recommendations for the user of products that are + associated with this category. + example: 1000 + CategoryRecResponse: + title: CategoryRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/CategoryResponseBody' + CategoryResponseBody: + title: CategoryResponseBody + required: + - categories + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + categories: + title: Categories + type: array + items: + $ref: '#/components/schemas/CategoryRecRecord' + description: The category recommendation results. + CheckProductExistence: + title: CheckProductExistence + required: + - product_ids + type: object + properties: + product_ids: + title: Product Ids + minLength: 1 + type: array + items: + type: string + minLength: 1 + description: >- + A list of product ids to be checked if they will be returned in the + search results + Checkout: + title: checkout + required: + - type + type: object + properties: + type: + title: Type + enum: + - checkout + type: string + description: > + + Used when a user enters checks out with a set of products. For an + eCommerce site, this is the strongest signal of the user's + + interest and has a high probability of leading to an eventual + purchase. + revenue: + title: Revenue + type: number + description: > + + Total revenue associated with the checkout. The revenue should + include generally shipping, tax, etc. that you + + want to include as part of your revenue calculations. + example: 23.32 + quantities: + title: Quantities + anyOf: + - type: array + items: + type: number + - type: number + description: > + + The quantities of products the user adds to their cart or checks out + with. This field should be a list of positive values. + + Specifically, if `product_ids` is a list of N products, the + `quantities` needs to be a list with N numbers as well. + + If `quantities` are not specified, we will assume the quantity to be + 1 for every product. + + + Example: + + ``` + + {"quantities": [1, 2]} + + ``` + example: + - 1 + - 2 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + ChildrenObject: + title: ChildrenObject + required: + - id + type: object + properties: + id: + title: Id + type: string + url: + title: Url + type: string + title: + title: Title + type: string + description: + title: Description + type: string + html: + title: Html + type: string + headers: + title: Headers + type: array + items: + type: string + custom_attributes: + title: Custom Attributes + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + Click: + title: click + required: + - type + type: object + properties: + type: + title: Type + enum: + - click + type: string + description: > + + Used when user clicked on something, and does not belong to any + other interaction type. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Complete: + title: complete + required: + - type + type: object + properties: + type: + title: Type + enum: + - complete + type: string + description: > + + Used when a user "complete" a product (e.g. complete a course or a + video). + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Completion: + title: Completion + required: + - text + - text_with_markups + - text_with_inverted_markups + type: object + properties: + text: + title: Text + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_markups: + title: Text With Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_inverted_markups: + title: Text With Inverted Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + description: 'basic completion response only has `text` ' + CreateResponse: + title: CreateResponse + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + data: + $ref: '#/components/schemas/TaskId' + Custom: + title: custom + required: + - type + - custom_action_name + type: object + properties: + type: + title: Type + enum: + - custom + type: string + description: > + + Used when you want to record any other kinds of interactions between + users and products. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + custom_action_name: + title: Custom Action Name + type: string + description: | + + The name of the custom interaction that you have defined. + additionalProperties: false + DeleteResponse: + title: DeleteResponse + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + data: + $ref: '#/components/schemas/TaskId' + Dislike: + title: dislike + required: + - type + type: object + properties: + type: + title: Type + enum: + - dislike + type: string + description: > + + Used when a user indicates a `dislike` for a product or indicates + + they would like to not be recommended content or products like this + in the future. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + DiversifyField: + title: DiversifyField + type: object + properties: + minimum_distance: + title: Minimum Distance + type: integer + description: Minimum distance between two products that have the same value + default: 1 + always_together: + title: Always Together + type: boolean + description: >- + If always_together=true, all the products that have the same value + for this field, will be put side-by-side. + default: false + EngineAPIRequest: + title: EngineAPIRequest + required: + - api_name + - body + type: object + properties: + api_name: + title: Api Name + type: string + description: > + + The name of the API. An API name should contain one slash. For + example: `search/search` or `recommendation/user_to_products` + body: + title: Body + type: object + description: | + + The request body to the API. + description: Engine API request + ExperimentRequest: + title: ExperimentRequest + type: object + properties: + user_id: + title: User Id + type: string + description: Identifies the signed-in user who performed the interaction. + example: '2179873' + anonymous_id: + title: Anonymous Id + type: string + description: A pseudo-unique substitute for the User Id + example: 403fb18e-98ff-434d-8585-726fabf5ed37 + variant_name: + title: Variant Name + type: string + description: >- + Set the variant_name if you want to assign a user to a specific + variant. Most of the time, you don't need to pass this field. + Instead, the system will automatically assign a variant for this + user. + example: Treatment_Group + timestamp: + title: Timestamp + type: string + description: >- + The time the user is assigned to the variant group. If not set, + current time will be used. + format: date-time + example: '2022-01-23T12:34:56-08:00' + FacetCounts: + title: FacetCounts + type: object + properties: + facet_fields: + title: Facet Fields + type: object + additionalProperties: + type: array + items: + type: array + items: + - type: string + - type: integer + description: Facet counts of each facet field + default: {} + FacetDefinition: + title: FacetDefinition + required: + - field + type: object + properties: + field: + title: Field + type: string + description: >+ + + The field name to create a facet against. For example, the following + query will create a facet against + + the `custom_attributes.director` field, and return the ten most + common facet values of this field + + (for Products that match the search query): + + ``` + + { + "field": "custom_attributes.director", + "size": 10 + } + + ``` + + size: + title: Size + type: integer + description: > + + Number of facet values to return. The facet values are sort + descendingly by the number of Products + + that have these values (and match the search query). + default: 10 + include: + title: Include + type: string + description: > + + Filter facet values based on a regular expression. For example, the + following query will return only the facet + + values that start with `Steven` (case-sensitive): + + ``` + + { + "field": "custom_attributes.director", + "size": 10, + "include": "Steven.*" + } + + ``` + + You can escape a special character with a preceding backslash `\` or + surround it with double quotes. + + For example, the following query will only return the facet values + starting with `St.`: + + + ``` + + { + "field": "custom_attributes.place_name", + "size": 10, + "include": "\"St.\".*" + } + + ``` + + + Note that, the `include` parameter will only affect the facet + values, and will not affect the search result itself. + ranges: + title: Ranges + type: array + items: + $ref: '#/components/schemas/RangeRequireKey' + description: > + + Facet ranges for numeric fields or date-like string fields. For + example, the following query groups the products + + into fours buckets against on their `original_price` ranges, each of + which has a user-friendly "key": + + ``` + + { + "field": "original_price", + "ranges": [ + {"to": 10, "key": "Less than 10 dollars"}, + {"from": 10, "to": 100, "key": "10 to 100 dollars"}, + {"from": 100, "to": 1000, "key": "100 to 1,000 dollars"}, + {"from": 1000, "key": "More than 1,000 dollars"} + ] + } + + ``` + + + For each range object, you need to at least specify one of the `to` + or `from` values (or both). `from` + + is always **inclusive**, and `to` is always **exclusive**. In the + response, Miso refers to each bucket by their `key`. + + For example, the above request will have the following response: + + ``` + + { + "facet_counts": { + "facet_fields": { + "original_price": [ + [ + "Less than 10 dollars", 1987 + ], + [ + "10 to 100 dollars", 109 + ], + [ + "100 to 1,000 dollars", 123 + ], + [ + "More than 1,000 dollars", 5 + ] + ] + } + } + } + + ``` + queries: + title: Queries + type: array + items: + $ref: '#/components/schemas/QueryFilterRequireKey' + description: > + + Facet queries that support facet counts for any arbitrary Lucene + queries, + + each of which is labeled by a user-friendly "key": + + ``` + + { + "field": "my_custom_facet", + "queries": [ + { + "query": "price: [* TO 10] AND size:"Small"", + "key": "Less than 10 dollars / Small size" + }, + { + "query": "price: [10 TO 100] AND size:"Medium"", + "key": "10 to 100 dollars / Medium size" + }, + { + "query": "price: [100 TO *] AND size:"Large"", + "key": "More than 100 dollars / Large size" + } + ] + } + + ``` + + + In the response, Miso refers to the query result by their `key`. + + For example, the above request will have the following response: + + ``` + + { + "facet_counts": { + "facet_fields": { + "my_custom_facet": [ + [ + "Less than 10 dollars / Small size", 1987 + ], + [ + "10 to 100 dollars / Medium size", 109 + ], + [ + "More than 100 dollars / Large size", 123 + ] + ] + } + } + } + + ``` + Feedback: + title: feedback + required: + - type + type: object + properties: + type: + title: Type + enum: + - feedback + type: string + description: | + + Used when a user sends feedback on provided results. + question_id: + title: Question Id + maxLength: 512 + type: string + description: > + + A unique identifier representing the specific question for which + feedback is being provided. + example: question_123 + result_type: + title: Result Type + type: string + description: > + + Indicates the type of result the provided feedback is associated + with, e.g., an answer or a suggestion. + example: answer + value: + title: Value + type: string + description: > + + Specifies the user's perspective on the provided result, with + possible values being helpful, not helpful, + + or unselected if the user has not provided any feedback. + example: helpful + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Filter: + title: Filter + type: object + properties: + terms: + title: Terms + type: array + items: + type: string + ranges: + title: Ranges + type: array + items: + $ref: '#/components/schemas/Range' + queries: + title: Queries + type: array + items: + $ref: '#/components/schemas/QueryFilter' + FilterQueryItem: + title: FilterQueryItem + required: + - option + - query + type: object + properties: + option: + title: Option + enum: + - overlap_with + type: string + description: The filter query option of the boosting rule. + query: + title: Query + type: string + description: The filter query of the boosting rule. + GeneralBody: + title: GeneralBody + type: object + properties: {} + description: 'Allow any json body ' + GeoDistanceQuery: + title: GeoDistanceQuery + required: + - lat + - lon + - distance + type: object + properties: + lat: + title: Lat + maximum: 90 + minimum: -90 + type: number + description: Latitude of the center point, should between 90 and -90 + lon: + title: Lon + maximum: 180 + minimum: -180 + type: number + description: Longitude of the center point, should between 180 and -180 + field: + title: Field + type: string + description: >- + Name of the field in product data that holds geographic coordinate. + Defaults to `location` + default: location + distance: + title: Distance + type: number + description: >- + Distance to center point, in kilometer or mile (according to + `distance_unit`) + distance_unit: + title: Distance Unit + enum: + - km + - mile + description: Unit of distance(`km` or `mile`). Defaults to `mile` + default: mile + GeoDistanceQueryBoost: + title: GeoDistanceQueryBoost + required: + - lat + - lon + - distance + type: object + properties: + lat: + title: Lat + maximum: 90 + minimum: -90 + type: number + description: Latitude of the center point, should between 90 and -90 + lon: + title: Lon + maximum: 180 + minimum: -180 + type: number + description: Longitude of the center point, should between 180 and -180 + field: + title: Field + type: string + description: >- + Name of the field in product data that holds geographic coordinate. + Defaults to `location` + default: location + distance: + title: Distance + type: number + description: >- + Distance to center point, in kilometer or mile (according to + `distance_unit`) + distance_unit: + title: Distance Unit + enum: + - km + - mile + description: Unit of distance(`km` or `mile`). Defaults to `mile` + default: mile + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: |2- + + Defines a list of 0-based positions you want to place the boosted products at. + + If `boost_positions` is not specified (which is the default behavior), all the boosted products will be ranked + higher than the rest of the products. + + GeoQuery: + title: GeoQuery + type: object + properties: + filter: + title: Filter + type: array + items: + $ref: '#/components/schemas/GeoDistanceQuery' + description: >- + When set, filter result to include only products within certain + geographic range from given point. + default: [] + boost: + title: Boost + type: array + items: + $ref: '#/components/schemas/GeoDistanceQueryBoost' + description: >- + When set, boost products within certain geographic range from given + point. + default: [] + HTTPValidationError: + title: HTTPValidationError + type: object + properties: + detail: + title: Detail + type: array + items: + $ref: '#/components/schemas/ValidationError' + HomePageView: + title: home_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - home_page_view + type: string + description: | + + Used when a user views your home page. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Impression: + title: impression + required: + - type + type: object + properties: + type: + title: Type + enum: + - impression + type: string + description: >- + + Used to record when a user saw or was presented with a product or + content asset. + + An impression does not mean a user is interested: for example, if + there is an impression for a + + certain product, but no further interaction occurs with that + product, we assume the user is probably not + + interested in it. + + + For an impression that was generated by Miso's search results or + recommendations results, it is important to + + include the `miso_id` associated with the results so that we know + the impression is from Miso + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + InteractionBulkIn: + title: InteractionBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + InteractionCreateOut: + title: InteractionCreateOut + required: + - message + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + InteractionDeleteIn: + title: InteractionDeleteIn + required: + - user_ids + type: object + properties: + user_ids: + title: User Ids + type: array + items: + type: string + InteractionDeleteOut: + title: InteractionDeleteOut + required: + - message + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + Like: + title: like + required: + - type + type: object + properties: + type: + title: Type + enum: + - like + type: string + description: | + + Used to record when a user indicates a `like` for a product. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Listen: + title: listen + required: + - type + type: object + properties: + type: + title: Type + enum: + - listen + type: string + description: > + + Used to record when and for how long a user listens to content that + is of an audio format. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + LocationInformation: + title: LocationInformation + required: + - lat + - lon + type: object + properties: + lat: + title: Lat + type: number + example: 40.74844 + lon: + title: Lon + type: number + example: -73.985664 + MultipleGetRequest: + title: MultipleGetRequest + required: + - product_ids + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + product_ids: + title: Product Ids + type: array + items: + type: string + description: > + + List of product_ids to retrieve. Products will be returned in the + same order as they are given in this list. + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product + along with the `product_id`, which is always returned. + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields (which is the + default): + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field. + + ``` + + {"fl": []} + + ``` + default: + - '*' + MultipleGetResponse: + title: MultipleGetResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/MultipleGetResponseBody' + MultipleGetResponseBody: + title: MultipleGetResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/RecordWithFound' + description: >- + Return a list of Product records. Some or all of them are potentially + not found + OrderByDefinition: + title: OrderByDefinition + required: + - field + type: object + properties: + field: + title: Field + type: string + description: >+ + + Name of the field to order by. You can sort by any numeric and + boolean fields in your Product catalog, or use one of any special + fields: + * **_personalization_score**: the score that rates the degree of + affinity between + + a pair of user and product from Miso's personalization algorithm. + + * **_search_score**: the score that rates the degree of search + keyword matches to a product's catalog. + + * **_boosting_score**: the score that rates the degree a Product is + boosted by your boosting query. + + tie_breaker: + title: Tie Breaker + allOf: + - $ref: '#/components/schemas/TieBreakDefinition' + default: + type: relative_difference + threshold: 0 + default_value: + title: Default Value + type: number + description: The default value to use when the scores do not exist for a Product + default: 0 + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/BaseGeo' + description: >- + The geo point to compute the `_geo_distance` variable against. This + is only required if + `_geo_distance` is present in the formula. + order: + title: Order + enum: + - desc + - asc + default: desc + Page: + title: Page + required: + - url + type: object + properties: + url: + title: Url + type: string + description: Url of the page + example: https://example.com/miso-tshirt-123ABC + referrer: + title: Referrer + type: string + description: Url of the referrer page + example: https://example.com/ + title: + title: Title + type: string + description: Title of the page + example: My Product Page + PartialMatchedRecord: + title: PartialMatchedRecord + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: |2- + + The unique identifier for the product. + + example: 123ABC-S-Black + PollAnswerResponse: + title: PollAnswerResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + description: >- + The status of the API response ('success' or other human readable + api status). + default: success + data: + title: Data + allOf: + - $ref: '#/components/schemas/AnswerData' + description: >- + The answer data containing the latest answer, sources, and related + resources. + PostQuestionRequest: + title: PostQuestionRequest + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/app__schemas__engine_api__request__Question' + description: Post questions request + ProductBulkDeleteIn: + title: ProductBulkDeleteIn + required: + - data + type: object + properties: + data: + $ref: '#/components/schemas/ProductIdList' + ProductBulkIn: + title: ProductBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/ProductRecord' + ProductDetailPageView: + title: product_detail_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - product_detail_page_view + type: string + description: >- + Used when a user views the detail page of a product. Viewing a + product + detail page usually indicates a user is interested in the product to certain degree, especially, + when the `duration` of the page view is long. When `duration` of the page view is very short (< 5 seconds), + `product_detail_page_view` may indicate neural or negative interest in the product. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + ProductIdList: + title: ProductIdList + required: + - product_ids + type: object + properties: + product_ids: + title: Product Ids + type: array + items: + type: string + ProductIds: + title: ProductIds + required: + - ids + type: object + properties: + ids: + title: Ids + type: array + items: + type: string + ProductImageView: + title: product_image_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - product_image_view + type: string + description: > + + Used when a user views the image of a product (e.g. to enlarge a + product photo). + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + ProductListOut: + title: ProductListOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + data: + $ref: '#/components/schemas/ProductIds' + additionalProperties: false + ProductReadOut: + title: ProductReadOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + data: + $ref: '#/components/schemas/ProductRecord' + additionalProperties: false + ProductRecord: + title: ProductRecord + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + minLength: 1 + type: string + description: > + + The unique identifier for this product. The Id can be in any format + you use in your product + + database (e.g. the product's SKU, UPC, or UUID or serial number). We + will use this Id to track how users + + interact with products and content in the Interactions records you + upload to Miso. It is important to keep the Id + + consistent between two datasets. For products that have multiple + variants, you should have a unique + + `product_id` for each variant, and use `product_group_id` to group + them together. + + + For example, for a T-shirt with SKU `123ABC` that comes in 4 sizes: + `S`, `M`, `L`, `XL`, we should create four different + + products: + + + ``` + + { + "product_id": "123ABC-S", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-M", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-L", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-XL", + "product_group_id" "123ABC" + } + + ``` + + * Constraints + * Can't contain `,` + * Can't start with `_` + * Length <= 512 + example: 123ABC-S-Black + product_group_id: + title: Product Group Id + type: string + description: > + + The `product_group_id` is used to prevent the same product (but a + different variant) from showing multiple + + times in the search or recommendation results. When one product has + multiple variants (for example, different + + sizes, colors, or materials), you should assign a unique product_id + to each variant, but assign the same + + `product_group_id` to all of them. If `product_group_id` is not + given, we default to the value of `product_id`. + example: 123ABC + parent_id: + title: Parent Id + type: string + description: >+ + + The `parent_id` is used to declare a parent-child relationship + between two "Products". + + Such relationships are common in marketplaces and content media + sites with user generated contents. + + For example, an E-commerce marketplace (such as E-bay or Amazon) + + may have "Shops" (as parents) and "Merchandises" + + (as children), and a social streaming site, such as YouTube, may + have "Channel" (as parents) and "Video" (as children). In these + sites, both entities can be modeled as "Products", and can both be + returned in Search and Recommendation APIs. + + + Declaring the parent-child relationships allows Miso to + automatically propagate interactions from one product to the other. + + For example, when a user "watch" a + + Video, Miso will propagate this signal to the + + Channel which publishes this Video, even if users do not directly + interact with the Channel page. Such implicit + + interactions + + are particularly useful when making recommendations for Channel + because it gives Miso much more information + + about users' interests to different Channels than solely relying on + users' direct interactions with the + + them, which happens less often. + + + `parent_id` needs to be a non-empty string referring to the + `product_id` of the parent product. + + The parent product can be uploaded in a separate batch, and does not + need to exist before its children products. + + + The implicit interactions will only exist during Miso's training + process, and will not show up in the + + Interaction dataset. + + example: Nike_Shop_123 + related_ids: + title: Related Ids + type: array + items: + type: string + description: >- + The product_id or product_group_id of other products that are + related to this Product + type: + title: Type + type: string + description: > + + The `type` of product. This is for sites that have more than one + type of product or content that they want their users + + to interact with. If your site has only one type of product, you can + leave this field out. + + A classic example is travel sites, which have both *hotel* and + *flight* sales. It is also useful for sites that let + + users interact with products as well as *product bundles*. For + example, on YouTube, each video is a product that users + + can watch, while each channel, containing multiple videos, is also a + product that users can subscribe to. + + + For model quality, it is preferable to model all these distinct + product types in the same data set, so that a user's + + interests for one type of product can inform their interests in + another type of products. The `type` field helps Miso + + make these distinctions. + example: clothes + title: + title: Title + type: string + description: > + + The title of the product. During a search, Miso will put predictive + weight behind the title, + + because it is often the main way users identify a product. + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + description: + title: Description + type: string + description: > + + The `description` text of the product. Miso assumes `description` + contains longer textual content than other + + string-based fields. For example, term frequency matters more here + than in a field like the title. Miso’s + + semantic understanding can extract a lot of valuable information + from having a product description that is + + plain-spoken and detailed. + example: >- + This cute Shiba inu dog eating Miso soup is perfect for those who + love Japanese culture. + language: + title: Language + minLength: 2 + type: string + description: > + + The `language` of the product description and content in [two-letter + ISO 639-1 code]( + + https://en.wikipedia.org/wiki/ISO_639-1). For example, English = + `en`, Chinese = `zh`. + + Miso will use this field to determine the proper way to index the + product description. If this field is not specified, + + we will determine the language automatically. + + + We also use the language field to determine users’ interests in + content of different languages. This is particularly + + important for content media sites that have different languages of + content. + + + * Constraints: + * [Two-letter ISO 639-1 code](https://en.wikipedia.org/wiki/ISO_639-1). + For example, English = `en`, Chinese = `zh`. + example: en + created_at: + title: Created At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The time when the product was first created or became available on + your site as an ISO-8601 date or datetime string. + published_at: + title: Published At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The time when the product was published as an ISO-8601 date or + datetime string. + updated_at: + title: Updated At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The time when the product was updated as an ISO-8601 date or + datetime string. + categories: + title: Categories + type: array + items: + type: array + items: + type: string + description: > + + In Miso, you describe a product or content category as a + hierarchical list of strings from broad to narrow, + + called a `category`. (See the `category_page_view` interaction.) + + + Use the `categories` field of products to specify the hierarchical + category or categories that the product + + belongs to. A product may belong to only a single `category`, or + multiple. + + + For example, a product could be in both: + * *Toys & Games > Toys > Dolls, Playsets & Toy Figures > Stuffed Animals*, and + * *Arts & Entertainment > Hobbies & Creative Arts > Collectibles*. + + This field should be a list of a list of strings, where category levels go from broad to narrow, such as: + + ``` + + {"categories": + [ + // the first category the product belongs to + ["TOYS & GAMES", "TOYS", "DOLLS, PLAYSETS & TOY FIGURES", "STUFFED ANIMALS"], + // the second category the product belongs to + ["ARTS & ENTERTAINMENT", "HOBBIES & CREATIVE ARTS", "COLLECTIBLES"] + ] + } + + ``` + + + If your product taxonomy has only one single level, that is not an + issue: + + ``` + + {"categories": + [ + // the first category the product belongs to + ["Toys"], + // the second category the product belongs to + ["Collectibles"] + ] + } + + ``` + + + The categories are optional, but very important for profiling the + products and tracking users' preferences. + + (See also the `category_page_view` interaction) + example: + - - Clothing, Shoes & Jewelry + - Women + - T-Shirts + - - Novelty + - Tops & Tees + - T-Shirts + tags: + title: Tags + type: array + items: + type: string + description: | + + The tags that have been associated with the product. + + For example: + ``` + {"tags": ["TAG_1", "TAG_2", ...]} + ``` + example: + - cute + - anime + - dogs + - t-shirt + url: + title: Url + maxLength: 65536 + minLength: 1 + type: string + description: > + + Url to the product detail page. This is for displaying the product + in your Dojo Sandboxes and is not used for Engine training. + + It is optional, but strongly recommended for a better Sandbox + experience. + format: uri + example: https://example.com/miso-tshirt-123ABC + cover_image: + title: Cover Image + maxLength: 65536 + minLength: 1 + type: string + description: > + + The URL of the cover image of the product. This is for displaying + the product in your Dojo Sandboxes and + + is not used for Engine training. It is optional, but strongly + recommended for a better Sandbox experience. + format: uri + example: https://example.com/miso-tshirt-123ABC.jpg + original_price: + title: Original Price + type: number + description: > + + The (original) price of the product. We only use this number to + calculate the amount of discount, and use that + + to profile user behaviors. + + + * Constraints: + * Need to be a number, but no constraint on the range of the number + example: 20 + sale_price: + title: Sale Price + type: number + description: | + + The sale price of the product. + + * Constraints: + * Need to be a number, but no constraint on the range of the number + example: 15 + margin: + title: Margin + type: number + description: > + + The margin of the product. Note that for our margin optimization + algorithm to work, the margin you specify here + does not need to be the actual dollar amount, but it needs to be something in proportion to that. + + * Constraints: + * Need to be a number, but no constraint on the range of the number + example: 15 + size: + title: Size + type: string + description: > + + The size of the product. For example, for an eCommerce site that + sells T-shirts, each T-shirt might come in + + several different sizes. In this case, we recommend that you should + create one product entry for + + each size variant. When Miso generate search or recommendation + results, we use the `product_group_id` to remove + + different variants of the same product, and only show the variant + that the user is most likely to buy. + example: S + color: + title: Color + type: string + description: > + + The color of the products. Similarly to `size`, when `color` of the + products matters, it is recommended to create + + one product for each color variant of a product. When Miso generate + search or recommendation results, + + we use the `product_group_id` to remove variants of the same + product, and only show the + + variant that the user is most likely to buy. + example: Black + material: + title: Material + type: string + description: > + + The material of the products. Similarly to `size` and `color`, if + `material` of the product matters and there + + are multiple material variants, we should create one product for + each material variant. When Miso generates search or + + recommendation results, we use the `product_group_id` to remove + variants of the same product, and only show the + + variant that the user is most likely to buy. + example: Cotton + condition: + title: Condition + enum: + - NEW + - USED + - REFURBISHED + type: string + description: > + + The condition of the product. By default, we assume `condition`= + `NEW` + default: NEW + brand: + title: Brand + type: string + description: | + + The brand of the product. + example: Miso Corp. + authors: + title: Authors + type: array + items: + type: string + description: > + + The author(s) of the product or content asset. This field needs to + be an array of strings. + example: + - Andy Hsieh + publishers: + title: Publishers + type: array + items: + type: string + description: > + + The publisher(s) of the product or content asset. This field needs + to be an array of strings. + example: + - O'Reilly Media + collections: + title: Collections + type: array + items: + type: string + description: | + + The collection(s) the product belongs to. + example: + - Anime T-Shirt Collection + - Superhero T-Shirt Collection + availability: + title: Availability + enum: + - IN_STOCK + - OUT_OF_STOCK + - PRE_ORDER + type: string + description: > + + The availability of the product. Miso mainly uses `availability` to + filter `OUT_OF_STOCK` items out of its recommendations. + + As a default, we assume the product is `IN_STOCK`. + location: + title: Location + anyOf: + - type: array + items: + $ref: '#/components/schemas/LocationInformation' + - allOf: + - $ref: '#/components/schemas/LocationInformation' + description: > + + The location information of the product (e.g. for hotels or + restaurants). We support geolocation filtering + + and sorting when creating search and recommendation results if + location information is given. + rating: + title: Rating + type: number + description: > + + The overall rating of the product in the range of [0, 5]. If you use + a different rating scale, please convert it + + to the range of [0, 5]. + example: 5 + html: + title: Html + type: string + description: > + + The HTML content of the product. Miso will search against this field + and apply semantic understanding in a way that is + + similar to the `description` field, but with HTML tags removed. + subtitle: + title: Subtitle + type: string + description: | + + The subtitle of the product (usually for contents). + headers: + title: Headers + type: array + items: + type: string + description: > + + The headers in the content. This usually corresponds to `

`, + `

`, `

` ... tags in HTML. This field need to be an array of + strings + paragraphs: + title: Paragraphs + type: array + items: + type: string + description: > + + The text paragraphs in the content. This usually corresponds to + `

` tags in HTML. This field need to be an array of strings + anchors: + title: Anchors + type: array + items: + type: string + description: > + + The anchor texts paragraphs in the content. This usually corresponds + to `` tags in HTML. This field need to be an array of strings + children: + title: Children + type: array + items: + $ref: '#/components/schemas/ChildrenObject' + description: > + + Children objects of the product, such as chapters of a book, or + sections of a podcast. + + Children are only useful for long-form contents, and are only used + for snippet extraction purpose. + enable_question_answering: + title: Enable Question Answering + type: boolean + description: > + + Whether to enable question answering capability against the `html` + field. + default: false + custom_attributes: + title: Custom Attributes + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: string + - type: array + items: + type: number + description: > + + Dictionary of custom attributes for the product. You can specify + attributes specific to your business + + in a `{"KEY":VALUE}` format, where `KEY` must be a string, and + `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + + + For example, a video streaming site using Miso may have the movie + *Jumanji* with the following custom attributes: + + + ``` + + { + "custom_attributes": { + "cast": [ + "Robin Williams", "Jonathan Hyde", ... + ], + "director": "Joe Johnston", + "genres": [ + "Adventure", "Fantasy", "Family" + ], + "filming_locations": [ + {"country": "USA", "state": "New Hampshire", "city": "Keene"}, + {"country": "Canada", "state": "British Columbia", "city": "Vancouver"} + ], + "popularity": 7.439, + "adult": false + } + } + + ``` + + + **The custom attribute types need to be consistent across every + record in the dataset**. + + For instance, in the example above, the **cast** attribute needs to + be a `string` or `an array of string` or `null` + + for every record in the dataset that specify **cast** attribute. + + + + Similarly, the popularity attribute needs to be a `number`, `an + array of numbers`, or `null` for every record in the + + dataset that specifies the popularity attribute. If you try to + insert a record with an incompatible data type, the + + insertion for that record will fail. + example: + cast: + - Robin Williams + - Jonathan Hyde + director: Joe Johnston + genres: + - Adventure + - Fantasy + - Family + popularity: 7.439 + adult: false + additionalProperties: false + ProductToProductsResponse: + title: ProductToProductsResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/ProductToProductsResponseBody' + ProductToProductsResponseBody: + title: ProductToProductsResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/Record' + description: Product recommendation results. + PromoPageView: + title: promo_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - promo_page_view + type: string + description: > + + Used when a user views a specific promotional or curated marketing + page about certain products or content. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + QAAutocompleteResponse: + title: QAAutocompleteResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/QAAutocompleteResponseBody' + description: Autocomplete Response + QAAutocompleteResponseBody: + title: QAAutocompleteResponseBody + required: + - completions + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + completions: + title: Completions + type: array + items: + $ref: '#/components/schemas/app__schemas__engine_api__response__Question' + description: Autocomplete Response + QAResponse: + title: QAResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/QAResponseBody' + QAResponseBody: + title: QAResponseBody + required: + - total + - spellcheck + - answers + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + total: + title: Total + type: integer + description: Total number of Question-Answer hits. + example: 1000 + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckResponse' + description: >- + Spellcheck results. You can use the information in this object to + prompt users with the correct spelling. + answers: + title: Answers + type: array + items: + $ref: '#/components/schemas/RecordWithAnswer' + description: The Question-Answer results. + QueryFilter: + title: QueryFilter + required: + - query + type: object + properties: + query: + title: Query + type: string + description: Query in Lucene syntax + key: + title: Key + type: string + description: User friendly label of the query result + QueryFilterRequireKey: + title: QueryFilterRequireKey + required: + - query + - key + type: object + properties: + query: + title: Query + type: string + description: Query in Lucene syntax + key: + title: Key + type: string + description: User friendly label of the query result + QuestionAnsweringRequest: + title: QuestionAnsweringRequest + required: + - q + - min_probability + type: object + properties: + version: + title: Version + enum: + - v1.2 + - v1.3 + description: > + + The model version to use. + + * **v1.2**: First stable version + + * **v1.3**: Improve keyword extraction that make answers more + precise + default: v1.2 + example: v1.2 + q: + title: Q + minLength: 1 + type: string + description: The question user has entered. + example: what is gradient descent + min_probability: + title: Min Probability + maximum: 1 + minimum: 0 + type: number + description: > + + Minimum acceptable probability (between 0.0 and 1.0). The answers + whose probability is lower than this number will be excluded + + from the response. + example: 0.7 + rows: + title: Rows + type: integer + description: Number of search results to return. + default: 1 + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. Each Q&A response, by default, return + two fields `answer` and `product_id`, where + + `answer` is an object with the information about the answer + paragraph while + + `product_id` identifies the *Product* from which the answer is + extracted. + + + For example, the following is a sample response from the API: + + ``` + + { + "product_id": "ABC-123", + "answer": + { + "html": "

Python is an interpreted programming language

", + "text": "Python is an interpreted programming language", + "css_selector": ":root > div:nth-child(1) > p:nth-child(2)", + "probability": 0.99 + } + } + + ``` + + + You can use `fl` parameter to retrieve additional product fields. + For example, the following request + + additionally retrieves the `title` field for each product along + + with the `product_id` and `answer`, which are always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and all the `custom_attributes` fields. + + + ``` + + {"fl": ["title", "custom_attributes.*"]} + + ``` + + + The following request retrieves all the available product fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array (which is the default) to + retrieve just the `product_id` and `answer` fields. + + ``` + + {"fl": []} + + ``` + default: [] + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckRequest' + description: Spellcheck configuration + default: + enable_auto_spelling_correction: true + enable_answer_html: + title: Enable Answer Html + type: boolean + description: >- + Whether to return HTML of the answer paragraph. If you don't need + the HTML content of the + answer paragraph, setting this parameter to `false` will reduce the response size and lower the + response latency. + default: false + enable_answer_block: + title: Enable Answer Block + type: boolean + description: > + + Whether to return *answer block*. + + In addition to answer paragraph, Miso can additionally return + *answer block*. + + Answer block is an ancestor HTML node of the answer paragraph that + contains the relevant context. + + The answer block is particularly useful for applications that not + only want to show + + the answer itself but also the **context** surrounding the answer. + + + Answer block is the smallest HTML element that contains the relevant + context. However, not all the content + + inside this node is relevant. You can use the returned + `relevant_children_slice` field + + to identify a portion of this node that is relevant to the answer. + default: false + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + boost_probability_threshold: + title: Boost Probability Threshold + type: number + description: > + + Minimum probability required for an answer to be boosted. If not + specified, the `min_probability` will be used. + QuestionAutocompleteRequest: + title: QuestionAutocompleteRequest + required: + - q + type: object + properties: + q: + title: Q + minLength: 1 + type: string + description: The query user has entered so far + example: what is g + rows: + title: Rows + type: integer + description: Number of autocomplete results to return. + default: 5 + description: Post question autocomplete request + QuestionRequest: + title: QuestionRequest + required: + - question + type: object + properties: + user_id: + title: User Id + type: string + description: >- + The user who made the query. For an anonymous visitor, use + `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: The anonymous visitor who made this query. + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + question: + title: Question + type: string + description: The question for which an answer is requested. + parent_question_id: + title: Parent Question Id + type: string + description: >- + The UUID of the parent question if the current question is a + follow-up to a previous question. + format: uuid + yearly_decay: + title: Yearly Decay + type: number + description: The yearly decay rate for the answer score. + default: 0.93 + source_fl: + title: Source Fl + type: array + items: + type: string + description: >+ + + A list of fields to be returned for the `sources`. Any fields in + uploaded product can be assigned, including fields in + `custom_attributes`. + + + If specificed field does not exist, that field will not be included + in the result. + + If you use different schema for `custom_attributes` across different + products, it is possible that not all returned sources has the some + fields. + + + For example, if you include `published_at` and `custom_attributes` + in `source_fl`: + + + ```json + + { + "question":"Explain Python GIL", + "source_fl":["published_at", "custom_attributes.rating"] + } + + ``` + + + The answer will contain `published_at` field for each source: + + + ```json + + { + "message": "success", + "data": { + "question": "Explain Python GIL", + "question_id": "57aeb083-b943-43b1-86ab-b6108788dd50", + "parent_question_id": null, + "answer_stage": "Generating summary", + "finished": true, + "answer": "# Explain Python GIL\n\n## Why do we need the GIL? [1]\n\nThe GIL is currently an essential part of the CPython...[omitted for simplicity]", + "sources": [ + { + "published_at": "2022-05-20T00:00:00+00:00", + "custom_attributes": { + "rating": 4.7 + }, + "product_id": "9781800207721", + "title": "Multiprocessing – When a Single CPU Core Is Not Enough", + "child_title": "Multiprocessing – When a Single CPU Core Is Not Enough", + "child_id": "16", + "snippet": "Remember the segmentation faults we saw in Chapter 11, ...[omitted]" + }, + { + "published_at": "2015-02-26T00:00:00+00:00", + "custom_attributes": { + "rating": 4.3 + }, + "product_id": "9780134034416", + "title": "5. Concurrency and Parallelism", + "child_title": "5. Concurrency and Parallelism", + "child_id": "12", + "snippet": "Click here to view code image\n...[omitted]" + }, + { + "published_at": "2020-04-30T00:00:00+00:00", + "custom_attributes": { + "rating": 3.5 + }, + "product_id": "9781492055013", + "title": "1. Understanding Performant Python", + "child_title": "1. Understanding Performant Python", + "child_id": "2", + "snippet": "Although it still locks Python into running ...[omitted]" + }, + { + "published_at": "2019-11-15T00:00:00+00:00", + "custom_attributes": { + "rating": 4.2 + }, + "product_id": "9780134854717", + "title": "7. Concurrency and Parallelism", + "child_title": "7. Concurrency and Parallelism", + "child_id": "16", + "snippet": "Although Python supports multiple threads of execution...[omitted]" + } + ], + "related_resources": [] + } + } + + ``` + + default: + - title + related_resource_fl: + title: Related Resource Fl + type: array + items: + type: string + description: >- + A list of fields to be returned for the `related_resources`. + Example: `['title', 'url']`. + default: + - title + cite_start: + title: Cite Start + type: string + description: 'The citation start marker. Example: `[` or `{`' + cite_end: + title: Cite End + type: string + description: 'The citation end marker. Example: `]` or `}`' + QuestionResponse: + title: QuestionResponse + required: + - data + type: object + properties: + data: + title: Data + allOf: + - $ref: '#/components/schemas/QuestionResponseData' + description: Question response data. + message: + title: Message + type: string + description: Human-readable message. + default: success + QuestionResponseData: + title: QuestionResponseData + required: + - question_id + type: object + properties: + question_id: + title: Question Id + type: string + description: The UUID for the submitted question. + format: uuid + Range: + title: Range + type: object + properties: + to: + title: To + anyOf: + - type: string + - type: number + description: End of the range (exclusive). + from: + title: From + anyOf: + - type: string + - type: number + description: Start of the range (inclusive). + key: + title: Key + type: string + description: User friendly label of the range + RangeRequireKey: + title: RangeRequireKey + required: + - key + type: object + properties: + to: + title: To + anyOf: + - type: string + - type: number + description: End of the range (exclusive). + from: + title: From + anyOf: + - type: string + - type: number + description: Start of the range (inclusive). + key: + title: Key + type: string + description: User friendly label of the range + Rate: + title: rate + required: + - type + type: object + properties: + type: + title: Type + enum: + - rate + type: string + description: | + + Used when a user gives a rating to a product or piece of content. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + rating: + title: Rating + type: number + description: > + + The rating the user gave in the range of [0, 5]. This field is only + required by the `rate` interaction. As a + + convention in the RecSys community, a rating >= 3.5 is considered + positive, a rating <= 2 is negative, + + and otherwise a rating is neutral. If you use any other rating + scale, please normalize it to a [0, 5] scale. + example: 5 + additionalProperties: false + Read: + title: read + required: + - type + type: object + properties: + type: + title: Type + enum: + - read + type: string + description: > + + Used to record when and for how long a user reads a piece of written + content. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + RecResponse: + title: RecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/BaseResponseBody' + Record: + title: Record + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: |2- + + The unique identifier for the product. + + example: 123ABC-S-Black + RecordWithAnswer: + title: RecordWithAnswer + required: + - product_id + - answer + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: >- + The unique identifier of the product whose content contains the + answer. + answer: + title: Answer + allOf: + - $ref: '#/components/schemas/Answer' + description: >- + The answer paragraph (i.e. a `

` node) whose text content can + answer users' question. + answer_block: + title: Answer Block + allOf: + - $ref: '#/components/schemas/AnswerBlock' + description: |2- + + In addition to the answer paragraph, we also return the **answer block**. + Answer block is the ancestor node of the answer paragraph that cover not only the answer, but also the relevant + context. This is particularly useful for applications that want to show + the answer itself but also the relevant context surrounding the answer. + + Answer block is the smallest HTML element that contains the relevant context. However, not all the content + inside this node is relevant. You can use the `relevant_children_slice` to identify a portion inside this + block that is relevant to the answer. + + RecordWithFound: + title: RecordWithFound + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: |2- + + The unique identifier for the product. + + example: 123ABC-S-Black + description: >- + Product record but support `_found=true / false` field. When + _found=false, + + the product_id will not be available. + Refund: + title: refund + required: + - type + type: object + properties: + type: + title: Type + enum: + - refund + type: string + description: | + + Used when a user requests a refund of products they bought. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + RemoveFromCart: + title: remove_from_cart + required: + - type + type: object + properties: + type: + title: Type + enum: + - remove_from_cart + type: string + description: | + + Used when a user removes a product from their shopping cart. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + RemoveFromCollection: + title: remove_from_collection + required: + - type + type: object + properties: + type: + title: Type + enum: + - remove_from_collection + type: string + description: | + + Used when a user removes a product from their personal collection. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Search: + title: search + required: + - type + type: object + properties: + type: + title: Type + enum: + - search + type: string + description: > + + Used to record a search event with the keywords and filters the user + used. What a user searches for + + is a very powerful signal about their interests and what they will + eventually buy or consume, so it is important + + to capture this information with high fidelity. + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + search: + title: Search + allOf: + - $ref: '#/components/schemas/SearchInformation' + description: > + + The search keywords and filters the user uses. This is only required + by `search` interaction. + additionalProperties: false + SearchInformation: + title: SearchInformation + type: object + properties: + keywords: + title: Keywords + type: string + description: > + + The search keywords user use. Search keywords are strong signals to + users' interests. + default: '' + filters: + title: Filters + type: object + additionalProperties: + type: array + items: + type: string + description: > + + Dictionary of filters users apply to the search results in the + following format: + `{"FIELD": ["SELECTION_1", "SELECTION_2"]}`. + SearchRequest: + title: SearchRequest + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of search results to return. + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + q: + title: Q + minLength: 1 + type: string + description: > + + The search query the user has entered. Miso will perform full-text + search and find any Products + + that contain every word in this query. You can also set `q="*"` to + match all Products, which is commonly used along + + with Product filtering query `fq` to implement Category Pages. + + + *(to make a search request, You need to specify either `q` or + `advanced_q`)* + advanced_q: + title: Advanced Q + minLength: 1 + type: string + description: > + + Like Google's Advanced Search, the `advanced_q` parameter let you + define query beyond simple full-text + + search. For one, you can use double-quotes to indicate a phrase + search. + + + For example, the following query will + + only match Products that contain the *phrase* "Toy Story 4", and + will not match Products like "4 Toy Story" + + (because the word order is not the same as the given query). + + ``` + + {"advanced_q": "full_text:\"Toy Story 4\""} + + ``` + + + If you don't want phrase search, you can enclose the search terms + with parenthesis to indicate regular full-text query. + + For example: + + ``` + + {"advanced_q": "full_text:(Toy Story 4)"} + + ``` + + + You can also use AND/OR boolean operators to combine multiple + full-text queries. For example, the following query will match + + Products with phrases "Toy Story 4" and Products with phrases "Toy + Story 3", and will not match "Toy Story 2" or "Toy Story 1": + + ``` + + {"advanced_q": + + "full_text:\"Toy Story 4\" OR full_text:\"Toy Story 3\""} + + ``` + + + Finally, you can use AND/OR boolean operators to combine full-text + search with metadata filtering. + + For example, the following example will find Products with phrase + "Toy Story" OR Products which have Tom Hanks as an actor. + + ``` + + {"advanced_q": + + "full_text:\"Toy Story\" OR + custom_attributes.actors:\"Tom Hanks\""} + ``` + + + *(to make a search request, You need to specify either `q` or + `advanced_q`)* + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + enable_boosting_campaigns: + title: Enable Boosting Campaigns + type: boolean + description: > + + When set to true, enable user defined boosting campaigns. + + + By default boosting campaigns are enabled. But you can explicitly + set this to false to disable + + boosting campaigns. + default: true + custom_context: + title: Custom Context + type: object + description: > + + Dictionary of custom context variables for the current browsing + session. You can specify context variables + + specific to your websites or apps in a `{"KEY":VALUE}` format, where + `KEY` must be a string, and `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + Miso will take these variables into account when generating + recommendations. + example: + session_variable_1: + - value_1 + - value_2 + language: + title: Language + type: string + description: > + + Two-letter (639-1) language code of the search query. This parameter + is useful when you have a multilingual + product catalog that contains product metadata in different languages. + If given, the search results will prioritize the products that have that specific language and match the search + query. Example query: + ``` + + {"language": "fr"} + + ``` + + + If not given, Miso will search against all the languages in the + catalog. + like: + title: Like + type: string + description: >- + The text snippet that we want to find products that are similar to + it + category: + title: Category + type: array + items: + type: string + description: > + + `category` parameter limits the search results to a particular + category or sub-category. + + This is particularly suitable for implementing Category Pages where + + you want to show personalized ranking of Products under a specific + category. Other filters, such as `q`, + + `fq`, `boost_fq` will be applied on top of the category filter. + + + A category is represented by a list of strings that correspond to + its category hierarchy. + + For example, the following query returns Products under `Snacks` + category: + + ``` + + { + "q": "*", + "category": ["Snacks"] + } + + ``` + + And the following request returns Products under `Snacks -> Chips` + subcategory: + + ``` + + { + "q": "*", + "category": ["Snacks", "Chips"] + } + + ``` + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckRequest' + description: Spellcheck configuration + default: + enable_auto_spelling_correction: true + start: + title: Start + type: integer + description: > + + Specifies an offset from which Miso will begin returning results. + + + The default value is `0`. Setting the start parameter to some other + number, such as 3, causes Miso to skip over the + + preceding products and start from the product identified by the + offset. + default: 0 + order_by: + title: Order By + type: array + items: + $ref: '#/components/schemas/OrderByDefinition' + description: > + + A list of fields that Miso should use to sort the result, instead of + Miso's default ranking order. + + + For example, the following query returns all the Products (because + `q=*`), ranked by the `_personalization_score` + + first, and then by the values in the + `custom_attributes.promote_score` field in the Product catalog, then + the + + distance between the product and New York city. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.05" + }, + "order": "desc" + }, + { + "field": "custom_attributes.promote_score", + "order": "desc" + }, + { + "field": "_geo_distance", + "geo": { + "lat": 40.711967, + "lon": -74.006076, + } + "order": "asc" + } + ] + } + + ``` + default: [] + facets: + title: Facets + type: array + items: + anyOf: + - $ref: '#/components/schemas/FacetDefinition' + - type: string + description: > + + Specifies a list of fields to create facet search against. You can + specify `facets` in a string array. + + For example, the following query return the facet counts for + `categories`, `tags`, and `custom_attributes.director`: + + ``` + + { + "facets": [ + "categories", + "tags", + "custom_attributes.director" + ] + } + + ``` + + + The response will be like: + + ``` + + { + "facet_counts": { + "facet_fields": { + "categories": [ + [ + "Drama", 20 + ], + [ + "Action", 10 + ], ... + ], + "tags": [ + [ + "based on novel or book", 5 + ], + [ + "android", 4 + ], ... + ], + "custom_attributes.director": [ + [ + "Ridley Scott", 26 + ], + [ + "Andrew Abbott", 1 + ], ... + } + } + ``` + + + You can also specify `facets` with an object array to configure each + facet individually. + + For example, the following query will return 20 most common facet + values for `tags` + + and `custom_attributes.director` fields, + + and only the directors whose names start with `Ridley` will be + included in the director facet results. + + ``` + + { + "facets": [ + { + "field": "tags", + "size": 20 + }, + { + "field": "custom_attributes.director", + "size": 20, + "include": "Ridley.*" + } + ] + } + + ``` + default: [] + facet_filters: + title: Facet Filters + type: object + additionalProperties: + $ref: '#/components/schemas/Filter' + description: >+ + + Specifies filters to the search results based on users' selections + in a faceted search UI. + + + For example, assume you have two facets in your faceted search UI: + `genres` and `custom_attributes.director`. + + When the user selects two options in the + `custom_attributes.director` facet, you should send the following + query to + + filter the search results for those two options (i.e. `Ridley Scott` + or `Denis Villeneuve`). + + + ``` + + { + "facets": [ + { + "field": "genres", + "size": 5 + }, + { + "field": "custom_attributes.director", + "size": 20 + } + ], + "facet_filters": { + "custom_attributes.director": { + "terms": [ + "Ridley Scott", + "Denis Villeneuve" + ] + } + }, + } + + ``` + + + While you can use `fq` parameter to achieve the same filtering + capability, + + you should use `facet_filters` to get the correct facet counts. + + + In a typical faceted search UI, the facet counts reflect the search + result after applying + + filters from **all but the current facets**. For example, in the + query below, + + the *directors* facet counts + should reflect the search result after applying the filter from the *genres* facet, i.e. `genres:Sci-Fi`. + Similarly, *genres* facet counts should reflect the search result after applying the filter from the *directors* facet. + + `facet_filters` will make the resulting `facet_counts` follow this + *all but except itself* convention, which is rather + tricky to implement with `fq`. + ``` + "facets": [ + { + "field": "genres", + "size": 5 + }, + { + "field": "custom_attributes.director", + "size": 20 + } + ], + "facet_filters": { + "custom_attributes.director": { + "terms": [ + "Ridley Scott", + "Denis Villeneuve" + ] + } + }, + } + + ``` + + default: {} + anchoring_settings: + title: Anchoring Settings + type: array + items: + $ref: '#/components/schemas/AnchoringEntry' + description: > + + Promote a product to a position relative to the highest-ranked + anchor product. + + + A common use-case is promoting a private-label good by anchoring it + to a name-brand counterpart. When the name-brand good (the anchor) + appears in a search result, the private-label good also appears in + the result (at a specified distance from the anchor product). + + + The `anchoring_settings` object has the following fields: + + * **product_id** - The `product_id` of the product you want to + promote. + + * **anchor_ids** - The array of `product_ids` that act as the + anchors. + + * **relative_position** *(optional)* - The position that the + promoted product will be returned in the search results, relative to + the highest-ranked anchor product. For example, setting this + parameter to `1` will place the promoted product directly after the + anchor product. The default value is `-1`, which will place the + promoted product directly before the anchor product. + + * **start_time** *(optional)* - An ISO-8601 timestamp indicating + when to start the product anchoring. Ex: `2022-01-29T00:00:00Z` + + * **end_time** *(optional)* - An ISO-8601 timestamp indicating when + to end the product anchoring. Ex: `2022-05-31T23:59:59Z` + + + For example, if a user searches for "cookies", the API request might + look like this: + + + ``` + + POST v1/search/search + + { + "q":"cookies", + "anchoring_settings": [ + { + "product_id": "private_label_cookies", + "anchor_ids": [ + "name_brand_cookies_1", + "name_brand_cookies_2" + ], + "relative_position": -1, + "start_time": "2022-01-01T00:00:00Z", + "end_time": "2022-12-31T23:59:59Z" + } + } + ] + } + + ``` + default: [] + enable_partial_match: + title: Enable Partial Match + type: boolean + description: > + + Enable *partial match* to return products that match only *some* of + the keywords in a user's search query. By default, + + Miso's Search API only returns products that contain *all* the + keywords in the search query (i.e. an AND operator over + + keywords). This strategy usually leads to highly relevant results. + However, when we don't have enough search results to + + return to the users, enabling partial match allows the Search API to + relax the criteria and return products that match + + only some of the keywords. + + + This strategy is particularly useful to prevent users from seeing an + empty search result page and abandoning their + + search. + + + For example, let's consider the query request below: + + ``` + + { + "query": "Toy story 5", + "enable_partial_match": true + } + + ``` + + Since there is no movie called "Toy story 5", we have zero products + to return by default. However, because we set `enable_partial_match` + to `true`, we will return other products that partially match the + query: + + ``` + + { + + "data": { + "products": [ + { + "title": "Toy Story", + "_missing_keywords": ["5"] + }, + { + "title": "Toy story 2", + "_missing_keywords": ["5"] + }, + ... + ], + "total": 4 + } + + } + + ``` + + As you can see from the result above, when we don't have the exact + product that the user is looking for, enabling partial match is a + helpful strategy to let users know what alternatives are available, + and prevent them from seeing an empty search result page. + default: false + partial_match_mode: + title: Partial Match Mode + enum: + - blended + - separated + description: > + + Determine which partial match mode to enable: + * **blended** (default): When `partial_match_mode` is `blended`, keyword-matched items and semantically-matched items will + be returned in the same, rank-sorted array. + * **separated**: When `partial_match_mode` is `separated`, keyword-matched items will be returned in the `products` array + and partially-matched or semantically-matched items will be returned + in the `partially_matched_products` array. + default: blended + enable_partial_match_threshold: + title: Enable Partial Match Threshold + type: integer + description: > + + If `partial_match_mode=separated`, you need to provide a value for + `enable_partial_match_threshold`. + + This parameter, which accepts an integer (*n*), creates a condition + for Miso’s Search Engine to only provide partially + + matched results if there are *n* or fewer exact keyword matches. For + example, if we set `enable_partial_match_threshold=3`, + + partially matched results will *only* be returned when there are + three or fewer exact keyword matches. + enable_semantic_search: + title: Enable Semantic Search + type: boolean + description: > + + Enable *semantic search* to return products that are semantically + relevant to the search query. + + Semantic search is a powerful tool that further improves the partial + match results. It finds products that might not contain + + any of the search keywords, but are highly relevant to users' search + intent. + + + For example, consider the query: `rubbing alcohol`, which is a + household cleaning product. When `enable_semantic_search=true`, + + even if we do not have any products that match `rubbing alcohol`, + Miso is still able to return results like the + + following: + + ``` + + { + + "data": { + "products": [], + "total": 0, + "partially_matched_products": [ + { + "title": "Clorox Disinfecting Wipes Multi-Surface Cleaning", + "_missing_keywords": ["rubbing", "alcohol"] + }, + { + "title": "Purell Advanced Hand Sanitizer Refreshing Gel", + "_missing_keywords": ["rubbing", "alcohol"] + }, + ... + ] + } + + } + + ``` + + Note that, these two products from Clorox or Purell do not contain + any of the search keywords, + + Miso's semantic search functionality, however, is still able to + identify them as good matches based on their semantic + + relevancy to the query `rubbing alcohol`. + + + Similarly, consider a single word search query: `aspirin`. Normally, + a single-word query will lead to an empty search + + page if we don't have products containing that word. However, when + `enable_semantic_search=true`, + + even if we do not directly have `aspirin` in the product catalog, + Miso is still able to return results that are highly + + relevant to users' search intent, such as: + + ``` + + { + + "data": { + "products": [], + "total": 0, + "partially_matched_products": [ + { + "title": "Advil Pain Reliever and Fever Reducer", + "_missing_keywords": ["aspirin"] + }, + { + "title": "Tylenol Extra Strength Caplets", + "_missing_keywords": ["aspirin"] + }, + ... + ] + } + + } + + ``` + default: false + semantic_search_threshold: + title: Semantic Search Threshold + type: number + description: > + + Determine the threshold for semantic search. Only the products with + a semantic similarity score higher than the + + threshold will be returned. Setting this too low (e.g. < 0.3) will + result in less relevant results being returned. + default: 0.5 + enable_matched_fields: + title: Enable Matched Fields + type: boolean + description: >+ + + Determine whether to return `_matched_fields` in the search response + (default: false). + + If `enable_matched_fields=true`, + + each returned product will have an `_matched_fields` array that + shows which parts of the product catalog match + the search query. + + For example, the following request will return `_matched_fields`: + ``` + + { + "q": "toy story", + "enable_matched_fields": true + } + + ``` + + The response will be like: + + ``` + + { + "data": { + "products": [ + { + "title": "Toy Story", + "_matched_fields": ["title", "metadata"] + }, + ... + ] + } + } + + ``` + + Currently, `_matched_fields` only contain three kinds of fields: + * `title` + * `description` + * `metadata`, including all the fields beyond title or description in the product catalog. + + default: false + query_product_existence: + title: Query Product Existence + allOf: + - $ref: '#/components/schemas/CheckProductExistence' + description: >- + Additionally check if certain products will be in the search result + at all (regardless of `start` and `rows` parameters) + personalization_weight: + title: Personalization Weight + maximum: 5 + minimum: 0 + type: integer + description: Determines how much personalization will affect the search ranking. + default: 5 + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + diversification: + title: Diversification + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + additionalProperties: false + SearchResponse: + title: SearchResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/SearchResponseBody' + SearchResponseBody: + title: SearchResponseBody + required: + - products + - total + - start + - spellcheck + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/PartialMatchedRecord' + description: The search results. + total: + title: Total + type: integer + description: Total number of search hits. + example: 1000 + start: + title: Start + type: integer + description: Starting offset of the search results. + example: 0 + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckResponse' + description: >- + Spellcheck results. You can use the information in this object to + prompt users with the correct spelling. + product_existence: + title: Product Existence + type: object + additionalProperties: + type: boolean + description: Product existence query result + partially_matched_products: + title: Partially Matched Products + type: array + items: + $ref: '#/components/schemas/PartialMatchedRecord' + description: The search results that only partially match the search query. + facet_counts: + title: Facet Counts + allOf: + - $ref: '#/components/schemas/FacetCounts' + description: Facet counts + default: {} + custom_assets: + title: Custom Assets + type: array + items: + type: object + description: Custom JSON assets uploaded in Dojo. + default: [] + SendExperimentResponse: + title: SendExperimentResponse + required: + - took + - in_experiment + - variant + type: object + properties: + took: + title: Took + type: integer + description: >- + The amount of time (in milliseconds) Miso took to answer this + request. + example: 50 + in_experiment: + title: In Experiment + type: boolean + description: To show whether the experiment is active or not. + variant: + $ref: '#/components/schemas/VariantObject' + Share: + title: share + required: + - type + type: object + properties: + type: + title: Type + enum: + - share + type: string + description: | + + Used when a user shares a product or piece of content. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + SpellCheckRequest: + title: SpellCheckRequest + type: object + properties: + enable_auto_spelling_correction: + title: Enable Auto Spelling Correction + type: boolean + description: > + + This parameter controls whether to automatically correct a misspell + search query. + + If set to `true`, when Miso detects spelling errors, the search + results will be based on the + **corrected** spelling suggested by Miso. + + You call tell if Miso made any correction to the search query by + checking the + + `spellcheck.auto_spelling_correction` field in the + + API response. When this field is `true`, the search results are + based on the suggested spelling + + as opposed to the users' original query. + + + You can opt-out the spelling correction by setting this parameter to + `false`. In such cases, + + Miso will still detect spelling errors, + + but the search results will be always based on users' original + spelling. + default: true + SpellCheckResponse: + title: SpellCheckResponse + required: + - spelling_errors + - auto_spelling_correction + - original_query + - original_query_with_markups + - corrected_query + - corrected_query_with_markups + type: object + properties: + spelling_errors: + title: Spelling Errors + type: boolean + description: Whether Miso detects any spelling errors. + auto_spelling_correction: + title: Auto Spelling Correction + type: boolean + description: >- + Whether Miso has automatically corrected the misspelled search + query. When this field is `true`, the search result is based on the + corrected spelling in the `corrected_query` field instead of users' + original search query. + original_query: + title: Original Query + type: string + description: Original query string + example: what is pythn + original_query_with_markups: + title: Original Query With Markups + type: string + description: >- + Original query with the spelling errors (if any) surrounded by the + tags + example: what is pythn + corrected_query: + title: Corrected Query + type: string + description: >- + The corrected spelling suggested by Miso. If no spelling error is + detected, this will be the same as `original_query` + example: what is python + corrected_query_with_markups: + title: Corrected Query With Markups + type: string + description: >- + The corrected spelling suggested by Miso where the revised tokens + are surrounded by the tags. + example: what is python + Subscribe: + title: subscribe + required: + - type + type: object + properties: + type: + title: Type + enum: + - subscribe + type: string + description: > + + Used when a user subscribes a product, for example to receive alerts + when the product comes back in stock or if the price drops. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + TaskId: + title: TaskId + required: + - task_id + type: object + properties: + task_id: + title: Task Id + type: string + TieBreakDefinition: + title: TieBreakDefinition + type: object + properties: + type: + title: Type + enum: + - relative_difference + default: relative_difference + threshold: + title: Threshold + type: number + default: 0 + TitleCompletion: + title: TitleCompletion + required: + - text + - text_with_markups + - text_with_inverted_markups + - product + type: object + properties: + text: + title: Text + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_markups: + title: Text With Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_inverted_markups: + title: Text With Inverted Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + product: + title: Product + allOf: + - $ref: '#/components/schemas/Record' + example: + product_id: 123ABC-S-Black + description: title completion additionally has the `product` the title belongs to. + TrendRecResponse: + title: TrendRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/TrendResponseBody' + TrendResponseBody: + title: TrendResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/Record' + description: Trending product results. + UserBulkDeleteIn: + title: UserBulkDeleteIn + required: + - data + type: object + properties: + data: + $ref: '#/components/schemas/UserIdList' + UserBulkIn: + title: UserBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/UserRecord' + UserIdList: + title: UserIdList + required: + - user_ids + type: object + properties: + user_ids: + title: User Ids + type: array + items: + type: string + UserReadOut: + title: UserReadOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + data: + $ref: '#/components/schemas/UserRecord' + UserRecord: + title: UserRecord + required: + - user_id + type: object + properties: + user_id: + title: User Id + maxLength: 512 + minLength: 1 + type: string + description: > + + Unique identifier for a user who has signed in. `user_id` can be in + any format (e.g. users' email, internal user + + UUID or serial ID). The only restriction is that the first character + must not be an underline `_`. Miso will use + + this id to cross-reference your User records with your Interaction + records. + example: user_1234 + created_at: + title: Created At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The date the user’s account was created as an ISO-8601 date or + datetime string. + updated_at: + title: Updated At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The date the user’s account was updated as an ISO-8601 date or + datetime string. + name: + title: Name + type: string + description: The user's full name. + example: John Doe + profile_image: + title: Profile Image + maxLength: 65536 + minLength: 1 + type: string + description: URL to the profile image of the user. + format: uri + age: + title: Age + type: integer + description: Age of the user. We will internally convert it to year of birth. + example: 33 + gender: + title: Gender + type: string + description: The user's gender. + example: M + city: + title: City + type: string + description: City or zipcode the user is based in. + example: Mountain View + state: + title: State + type: string + description: State the user is based in. + example: California + country: + title: Country + type: string + description: Country the user is based in. + example: US + group_id: + title: Group Id + type: string + description: > + + Group or Account ID from your CRM. This is useful in B2B scenarios. + For example, you can use `group_id` to + + associate a user with their company or account. We will use this + information to infer the user's interests and + + fine-tune their personalization and search results. For example, + users from the same group might have similar + + interests on the site, and we can improve their user experience + accordingly + example: Northwind Corp + description: + title: Description + type: string + description: > + + Text description of the user. This can be the user's own bio or the + internal notes about the user. If available, + + Miso will analyze this description to better profile a user. + example: Engineer from Northwind Corp + custom_attributes: + title: Custom Attributes + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + description: > + + Dictionary of custom attributes about the user. As with the [Product + API](#operation/content_write_api_v1_products_post + + ), you can specify attributes specific to your business in a `{"KEY" + : VALUE}` format, where `KEY` must be a string, and + `VALUE` can be: + * a `string` or `an array of strings` + + * a `number` or `an array of numbers` + + * an `array of objects` + + * a `bool` + + * `null` + + + * Example: + + ``` + + { + "custom_attributes": { + "acquisition_channel": "Facebook Campaign 2020", + "declared_interests": ["Drama", "Romance"] + } + } + + ``` + + These custom attributes types must be consistent across all User + records in your data set. + + Records with inconsistent types will fail to be inserted. + example: + acquisition_channel: Facebook Campaign 2020 + declared_interests: + - Drama + - Romance + additionalProperties: false + UserToAttributes: + title: UserToAttributes + required: + - field + type: object + properties: + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + field: + title: Field + type: string + description: > + + + The attribute you want to make recommendations for. For example, the + following + + query will recommend values from the `brand` field that Miso thinks + the user will be interested in: + + + ``` + + {"field": "brand"} + + ``` + + + This API also works for custom attributes you define. For example, + + if you provide a `designer` custom attribute, then, you can make + `designer` recommendations with the following query. + + ``` + + {"field": "custom_attributes.designer"} + + ``` + boost_attributes: + title: Boost Attributes + type: array + items: + type: string + description: |+ + + + The attributes to boost to the top of the recommendations + + default: [] + exclude_attributes: + title: Exclude Attributes + type: array + items: + type: string + description: |+ + + + The attributes to remove from the recommendations + + default: [] + rows: + title: Rows + type: integer + description: Number of product recommendations to return + default: 5 + products_per_attribute: + title: Products Per Attribute + type: integer + description: > + + Number of personalized product recommendations to make for **each** + recommended attribute. For example, the following + + query will return 5 products for each *brand* we recommend: + + ``` + + { + "field": "brand", + "products_per_attribute": 2 + } + + ``` + + + Note that a large number of `products_per_attribute` will increase + latency slightly because we need to + + perform more computation for each of the recommended attributes. If + you only need attribute + + recommendations, you can set + + `products_per_attribute=0` to reduce latency. + default: 2 + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + additionalProperties: false + description: >- + User to attributes recommendations. Given a user, recommend + + product attributes the user will be interested in as well as products in + those attributes + UserToCategories: + title: UserToCategories + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of recommended categories to return + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + products_per_category: + title: Products Per Category + type: integer + description: >- + + + Number of products to return for **each** category. For example, the + following + + query will return 5 products for each category we recommend: + + ``` + + {"products": 5} + + ``` + + Note that, a large number of `products_per_category` (say >= 20) + will increase query latency (up to around 200ms) + + because we need to perform more computation for each of the + recommended categories. If you + + only need category recommendations, you should set + `products_per_category` to 0 to reduce latency. + default: 5 + root_category: + title: Root Category + type: array + items: + type: string + description: >- + + If `root_category` is specified, we will only recommend categories + that are direct children of each of the root + + category. For example, the following query will recommend the + products of category that is under `["Clothes"]` category: + + ``` + + {"root_category": ["Clothes"]} + + ``` + + For another example, the following query will recommend the products + of category that is under `["Clothes", "Dresses"]` category + + ``` + + {"root_category": ["Clothes", "Dresses"]} + + ``` + + If `root_category` is not specified, we will recommend the *top + level* categories. + default: [] + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + additionalProperties: false + description: Attributes for recommendation boosting + UserToItemsRequest: + title: UserToItemsRequest + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of product recommendations to return + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + diversification: + title: Diversification + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + pagination_id: + title: Pagination Id + maxLength: 512 + type: string + description: > + + A unique identifier to enable pagination in Recommendation APIs. By + default, Recommendation APIs do not support + + pagination because the results from Miso, by its natural, will + change in real-time with new user interactions. + + `pagination_id` allows you to implement pagination more easily by + memorize what products we have + + returned to the current user with the same `pagination_id`. + + + To enable pagination, you generate a `pagination_id` and set it in + the first and subsequent requests in the same browsing session + + where you want to enable pagination. With `pagination_id` set, you + can access recommendations + + in different pages using the combination of `start` and `rows` + parameters, and Miso will ensure that no duplicated + + recommendation will be returned in different pages. + + + For example, assuming you are implementing an infinite scroll with + Miso Recommendation APIs. Before you make the first request, + + you generate a `pagination_id` using the `current datetime` or + `uuid` like the following: + + ```javascript + + // current datetime + + var my_pagination_id = Date.now().toString() + + // OR uuid + + const uuidv4 = require("uuid/v4") + + var my_pagination_id = uuidv4() + + ``` + + You can then request the first page of results with + `my_pagination_id` like the following: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 0, + "rows": 10 + } + + ``` + + Then, you can request the next page of results with the same + `my_pagination_id`, and Miso will ensure + + that no duplicated result is returned: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 10, + "rows": 10 + } + + ``` + + + Note that, a `pagination_id` will timeout if there is no further + request associated with it for 30 minutes. + + Also, `pagination_id` is scoped by individual users: i.e. different + users' results will not be affected + + even if they use the same `pagination_id`. + start: + title: Start + type: integer + description: > + + The start of the page you want to access. Combine this with `rows` + to implement pagination. You can only set it when `pagination_id` is + given. + default: 0 + additionalProperties: false + description: Attributes for recommendation boosting + ValidationError: + title: ValidationError + required: + - loc + - msg + - type + type: object + properties: + loc: + title: Location + type: array + items: + type: string + msg: + title: Message + type: string + type: + title: Error Type + type: string + VariantObject: + title: VariantObject + required: + - id + - name + - slug + - status + type: object + properties: + id: + title: Id + type: string + description: The UUID of this variant. + example: 59769b89-5f1f-46d5-a4fa-a583ebd2f7fd + name: + title: Name + type: string + description: The name of this variant. + example: Treatment_Group + slug: + title: Slug + type: string + description: The slug name of this variant. + example: Treatment_Group + configuration: + title: Configuration + anyOf: + - type: object + - type: array + items: {} + - type: string + description: The configuration of this variant. + example: + model: A + status: + title: Status + enum: + - Draft + - Scheduled + - Active + - Completed + - Archived + type: string + description: The current status for this variant. + example: Active + ViewableImpression: + title: viewable_impression + required: + - type + type: object + properties: + type: + title: Type + enum: + - viewable_impression + type: string + description: > + + When a product or content asset is presented to the user, it is not + guarantee that the user will see it. + + + An viewable impression is an impression that is "viewable" by the + user. + + Usually, content asset is considered viewable if more than 50% of + its area is visible on screen. + + + You can also use different definition for what is considered + viewable. + + Miso will automatically find the best recommendation as long as the + difference between + + viewable and non-viewable impression is consistant. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Watch: + title: watch + required: + - type + type: object + properties: + type: + title: Type + enum: + - watch + type: string + description: > + + Used to record when and for how long a user watches content that is + of a video format. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + WebBasedContext: + title: WebBasedContext + type: object + properties: + campaign: + title: Campaign + allOf: + - $ref: '#/components/schemas/Campaign' + description: > + + The campaign that resulted in the interaction. Campaign dictionary + contains standard UTM parameters: `name`, + + `source`, `medium`, `term`, `content`. We use campaign information + to infer users' interests and fine-tune the + + personalization and search results based on the current user's + campaign information. + truncated_ip: + title: Truncated Ip + type: string + description: > + + User's truncated IP address. We use IP address to determine the + country of the users. + format: ipv4 + example: 1.1.1.0 + locale: + title: Locale + type: string + description: Locale string of the current session, for example en-US. + example: en-US + region: + title: Region + type: string + description: > + + The region/location of the site the user is visiting. This is for + sites that serve different regions or + + markets. You can define your own region keywords, for example, `US + East`, `Europe`, `LATM`, etc. + example: US East + page: + title: Page + allOf: + - $ref: '#/components/schemas/Page' + description: >- + The current page in the browser. Page dictionary containing + referrer, title and url. we will use page view + as a pseudo interaction to infer users' interest. + user_agent: + title: User Agent + type: string + description: > + + User agent of the device making the request. We use this to + determine if a user is browsing the site on + + mobile or desktop, and tailor the recommendations and search results + accordingly. + + + Example: + + ``` + + {"user_agent": + "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"} + ``` + example: >- + Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 + Firefox/47.0 + custom_context: + title: Custom Context + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + description: > + + Dictionary of custom context variables for the current browsing + session. You can specify context variables + + specific to your websites or apps in a `{"KEY":VALUE}` format, where + `KEY` must be a string, and `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + Miso will take these variables into account when generating + recommendations. + example: + session_variable_1: + - value_1 + - value_2 + YMALRequest: + title: YMALRequest + type: object + properties: + product_id: + title: Product Id + minLength: 1 + type: string + description: > + + The `product_id` of the *anchor* product. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor product. + product_ids: + title: Product Ids + minLength: 1 + type: array + items: + type: string + minLength: 1 + description: > + + The `product_ids` of a **list** of *anchor* products. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like these anchor products. For example, + + you can use the products in a user's shopping cart as the anchor + products to make purchase recommendations + + for this user. + product_group_id: + title: Product Group Id + minLength: 1 + type: string + description: > + + The `product_group_id` of the *anchor* product group. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor *product group*. + + + You should use `product_group_id` on a *product + + group* page, before users select a specific product variant. For + example, you should use `product_group_id` + + on the product group page of a T-shirt, and use `product_id`, once + user choose any specific size or color + + variants of the T-shirt. + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + description: > + + The `product_group_ids` of the *anchor* product groups. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor *product groups*. + + + You should use `product_group_ids` in pages you want to recommend + products related to multiple product groups. + buy_together: + title: Buy Together + type: boolean + description: >+ + + Whether to focus on the Products that are frequently *bought + together*. `buy_together` parameter is by default `false`, + + which make the *Product To Products API* focus on Products that are + related to the anchor products, e.g. the products + + with similar contents or frequently attract the interests of the + same group of users. + + + When `buy_together=true`, the ProductToProducts API will focus on + the type of Products that are more frequently bought + + together along with the anchor product(s) in the same transactions + or session. + + default: false + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of product recommendations to return + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + diversification: + title: Diversification + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + pagination_id: + title: Pagination Id + maxLength: 512 + type: string + description: > + + A unique identifier to enable pagination in Recommendation APIs. By + default, Recommendation APIs do not support + + pagination because the results from Miso, by its natural, will + change in real-time with new user interactions. + + `pagination_id` allows you to implement pagination more easily by + memorize what products we have + + returned to the current user with the same `pagination_id`. + + + To enable pagination, you generate a `pagination_id` and set it in + the first and subsequent requests in the same browsing session + + where you want to enable pagination. With `pagination_id` set, you + can access recommendations + + in different pages using the combination of `start` and `rows` + parameters, and Miso will ensure that no duplicated + + recommendation will be returned in different pages. + + + For example, assuming you are implementing an infinite scroll with + Miso Recommendation APIs. Before you make the first request, + + you generate a `pagination_id` using the `current datetime` or + `uuid` like the following: + + ```javascript + + // current datetime + + var my_pagination_id = Date.now().toString() + + // OR uuid + + const uuidv4 = require("uuid/v4") + + var my_pagination_id = uuidv4() + + ``` + + You can then request the first page of results with + `my_pagination_id` like the following: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 0, + "rows": 10 + } + + ``` + + Then, you can request the next page of results with the same + `my_pagination_id`, and Miso will ensure + + that no duplicated result is returned: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 10, + "rows": 10 + } + + ``` + + + Note that, a `pagination_id` will timeout if there is no further + request associated with it for 30 minutes. + + Also, `pagination_id` is scoped by individual users: i.e. different + users' results will not be affected + + even if they use the same `pagination_id`. + start: + title: Start + type: integer + description: > + + The start of the page you want to access. Combine this with `rows` + to implement pagination. You can only set it when `pagination_id` is + given. + default: 0 + additionalProperties: false + description: Attributes for recommendation boosting + app__schemas__engine_api__request__PreviewBoosting: + title: PreviewBoosting + required: + - query_option + - boost_match_type + - boost + - position + type: object + properties: + query: + title: Query + type: string + description: The boosting rule query. + queries: + title: Queries + type: array + items: + type: string + description: Multiple query of the boosting rule. + query_option: + title: Query Option + enum: + - contains + - not_contain + - is + - is_not + type: string + description: >- + The options of the query. Please fill this field with contains, + not_contain, is, and is_not value. + filter_query: + title: Filter Query + type: array + items: + $ref: '#/components/schemas/FilterQueryItem' + description: The filter queries of the boosting rule. + boost_match_type: + title: Boost Match Type + enum: + - any + - all + type: string + description: Type of the query. Please fill this field with any or all. + boost: + title: Boost + type: array + items: + $ref: '#/components/schemas/BoostItem' + description: The items of the boosting rule. + position: + title: Position + type: array + items: + type: integer + description: The position of the boosting rule should occur. + json_asset: + title: Json Asset + type: string + description: The boosting json asset. + example: + CO: + - product-name: name + product-image-url: url + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: The comma-separated boosting tags. + example: + - tag-1 + - tag-2 + description: Properties to receive on Boosting creation + app__schemas__engine_api__request__Question: + title: Question + required: + - question + type: object + properties: + question: + title: Question + minLength: 1 + type: string + description: The text of question. + weight: + title: Weight + type: number + description: The weight of question. + default: 1 + description: Question object + app__schemas__engine_api__response__Question: + title: Question + required: + - question + type: object + properties: + question: + title: Question + minLength: 1 + type: string + weight: + title: Weight + type: number + default: 1 + description: 'Question object ' + app__schemas__rec_boosting__PreviewBoosting: + title: PreviewBoosting + required: + - api_names + - boost_match_type + - boost + - position + type: object + properties: + api_names: + title: Api Names + type: array + items: + type: string + description: The api_names values + anchor_products: + title: Anchor Products + type: array + items: + type: string + description: The anchor products ids + default: [] + module_names: + title: Module Names + type: array + items: + type: string + description: The module name + boost_match_type: + title: Boost Match Type + enum: + - any + - all + type: string + description: Type of the query. Please fill this field with any or all. + boost: + title: Boost + type: array + items: + $ref: '#/components/schemas/BoostItem' + description: The items of the boosting rule. + position: + title: Position + type: array + items: + type: integer + description: 1-based index of the position of the boosting rule should occur. + example: + - 1 + - 2 + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: The comma-separated boosting tags. + example: + - tag-1 + - tag-2 + description: Attributes of boosting + securitySchemes: + Secret API Key: + type: apiKey + description: >+ + + Your secret API key is used to access every Miso API endpoint. You + should secure this key and only use it on a backend + + server. Never leave this key in your client-side JavaScript code. If the + private key is compromised, you can revoke it + + in [Dojo](https://dojo.askmiso.com/docs/api-browser) and get a new one. + + + Specify your secret key in the `api_key` query parameter. For example: + + ``` + + POST /v1/users?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17 + + ``` + + in: query + name: api_key + Publishable API Key: + type: apiKey + description: > + + Your publishable API key is used to call Miso's APIs from your front-end + code. It can be used to stream interactions from the browser using + Miso's Interactions Upload API or to access read-only search and + recommendation results for a given user. When using the publishable API + key, the requested user_id will need to be hashed to maintain the + necessary security compliance. + + + Specify your publishable key in the `api_key` query parameter. For + example: + + ``` + + POST /v1/interactions?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17 + + ``` + in: query + name: api_key + tags: + - name: Experiment APIs + description: > + + Miso's experiment APIs let you do the A/B testing of your current result + with Miso. + + + ### Start an experiment in Dojo. + + + Login to the [dojo](https://dojo.askmiso.com) platform. + + Create an experiment event for you. + + + ### Start running A/B testing in your environment. + + + #### Implement A/B testing code. + + + Here's an example in NodeJS. You can also use any programming language of + you choice. + + ```nodejs + + const axios = require('axios'); + + + async function get_user_experiment_info(api_key, experiment_id, user_id) { + data = {"user_id": user_id} + endpoint = `https://api.askmiso.com/v1/experiments/${experiment_id}/events?api_key=${api_key}` + return await axios.post(endpoint, data) + } + + + const api_key = '' + + const experiment_id = "" + + let user_id = 'user_1234' // use to evaluate a treatment for + + + const user_experiment_info = get_user_experiment_info(api_key, + experiment_id, user_id) + + user_experiment_info.then((response) => { + let variant = response.data['variant'] + if (variant['name'] == "treatment") { + // insert code here to show "treatment" variant + } else if (variant['name'] == "control") { + // insert code here to show "control" variant + } else { + // unexpected variant name. raise error + throw new Error(`Unexpected variant name ${variant["name"]}`) + } + }) + + ``` + + + If you implement A/B testing code in FrontEnd, like JavaScript, and are + also worried about exploding the secret api_key. You can choose to use + anonymous_id with the public_api_key for this API. Here's an example. + + + ```javascript + + const apiKey = ''; + + const experimentId = ''; + + const anonymous_id = 'user_1234'; // use to evaluate a treatment for + + + function getUserExperimentInfo(apiKey, experimentId, anonymous_id) { + const data = { + user_id: anonymous_id + }; + const url = `https://api.askmiso.com/v1/experiments/${experimentId}/events?api_key=${apiKey}`; + const options = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }; + + return window.fetch(url, options) + .then((response) => response.json()) + .then((data) => { + const variantName = data.variant.name; + if (variantName === `${this.treatmentName}`) { + // insert code here to show 'treatment' variant + } else if (variantName === `${this.controlName}`) { + // insert code here to show 'control' variant + } else { + // unexpected variant name, throw error + throw new Error(`Unexpected variant name: ${variantName}`); + } + }) + .catch((error) => console.error(error)); + } + + + getUserExperimentInfo(apiKey, experimentId, anonymous_id); + + ``` + - name: Interaction APIs + description: >+ + + Miso’s Interaction APIs let you manage your Interaction records stored + with Miso. + + + ### Interaction records + + Your Interaction records tell Miso about user interactions with products + and content on your site or application. + + From these interactions, Miso understands how users move through your + conversion funnels: which products or content + + assets attract the attention of each individual user, and which products + or content ultimately will be purchased or + + consumed by each of them. With these insights, Miso makes real-time + tailored recommendations for each user, and + + responds to each of their clicks and views on the site (even for anonymous + users). + + + Interaction records share some common attributes, but are distinguished by + their type. + + Miso captures 23 different interaction types, divided into the following 6 + groups: + + + #### Core click-streams + + * `product_detail_page_view`: a user viewed the detail page for a product + + * `search`: a user made a search request with keywords and (optionally) + filters + + + The above interactions are the core fuel for Miso's personalization + Engines, because they happen in a much higher + + frequency than other interactions and provide an unbiased and + high-fidelity view of users' interests on the site. + + The collection of these interactions is highly important for Miso's + personalization performance. At the minimum, + + you should implement the `product_detail_page_view` interaction to start + with. + + + #### Conversion (eCommerce) + + * `add_to_cart`: a user added a product to the shopping cart + + * `remove_from_cart`: a user removed a product from the shopping cart + + * `checkout`: a user checked out and started the payment process + + * `refund`: a user refunded the product + + * `subscribe`: a user subscribed to a product + + + The above interactions are the main revenue drivers for eCommerce sites. + It’s important to collect them so that + + Miso can not only drive click-through rates, but actually improve the + revenue in a targeted way. To start with, + + you should at least implement the `add_to_cart` interaction. + + + #### Consumption (content media) + + * `read`, `watch`, and `listen` interactions capture how and for how long + a user consumed a piece of content. + + * `add_to_collection`: a user added an product to their personal + collection + + * `remove_from_collection`: a user removed an product from their personal + collection + + + If you are a content site, the above interactions are the main drivers to + users' satisfaction on the site. + + Collecting these interactions allows Miso to drive consumption rates and + consumption durations for the content on + + your site. If you run a content site, you should implement at least one of + these interactions. + + + #### Feedback signals + + * `like`, `dislike`, `share`, `rate`, and `bookmark` are common ways + users express their interests. + + + These are strong signals for Miso to understand each user's preferences + regarding your products or content. You + + should send these signals to Miso if you have any of these UI patterns on + your site. + + + #### Performance Checking + + * `impression`: a user saw or was presented with a product or content + asset (but didn't yet interact with it) + + * `viewable_impression`: the product or content presented is actually + viewed by the user + (for example, minimum of 50% of the pixels were in viewable space for at least one continuous second.) + * `click`: a user clicked on something (for example, a product item) + + + #### Additional click-streams + + * `home_page_view`: user viewed your home page + + * `category_page_view`: a user viewed the page for a specific “group” or + “family” or products or content in your catalog + + * `promo_page_view`: user viewed the promotion pages about certain + products + + * `product_image_view`: user clicked on or otherwise interacted with the + product image (e.g. enlarged the image) + + + The above interactions are additional signals for Miso to understand + users' behavior on the site. + + + #### Custom + + * `custom` interaction types are reserved for you to define your own + business-specific interaction types. + + + Miso will analyze any custom interactions you define to infer users' + interests and preferences. + + + - name: Product / Content APIs + description: >+ + + Miso's Product / Content APIs let you upload, read, and delete Product / + Content records that represent your site's + + catalog. + + + ### Product / Content records + + Miso analyzes your Product / Content records to provide personalized + search and recommendations that connect users + + with products or content on your site or application. + + + Much of Miso's search and personalization capability relies on + understanding your catalog in-depth and drawing + + correlations between your catalog and your users' consumption or + purchasing behaviors. In other words, Miso + + discovers that, with high correlation, users who are interested in certain + product attributes would also be + + interested in other products with similar or related attributes. (For + simplicity, we will often overload the word + + "products" to mean items for purchase if you are an eCommerce business, + and content to consume if you are a content + + marketplace.) + + + To fully optimize your search and recommendations, it is important to + provide Miso with Product / Content records + + that are complete and accurate. We define a set of common attributes that + capture the basics of most eCommerce and + + content media products, such as `title`, `description`, `categories`, + `tags`, `material`, `authors`, etc. + + + If your products' characteristics cannot be fully captured by these + fields, we recommend that you specify + + `custom_attributes`. For Miso, the more complete the product information + is, the better its personalized search + + and recommendations become. + + - name: User APIs + description: >+ + + Miso’s User APIs let you upload, read, and delete User records that tell + Miso about your site’s unique users and + + visitors. + + + ### User records + + User records specify relatively static attributes for a given user, such + as their `age`, `gender`, `city`, etc. As a + + rule of thumb, you should put information here that is not already + captured in your + + [Interaction records](https://api.askmiso.com). For example, + *last_bought_product* is probably not needed here because + + Miso already can tell that from the [Interaction + records](https://api.askmiso.com). + + + Miso will discover the correlations between a user's attributes and their + behaviors on your site. For example, Miso + + might determine that users of a certain age group tend to be interested in + certain products or a certain price + + range. These insights will be taken into account when predicting users' + interests, in particular for new users who + + have not yet generated many interaction records. + + + We define a set of common user attributes for e-Commerce and content media + sites. Some of them, such as `name` are + + for display in the Dojo dashboard only. The rest are for model quality. + Most attributes are optional and you don't + + need to specify them if you don't collect such data. On the other hand, + you can specify your custom user attributes + + in the `custom_attributes` field. Miso will analyze custom user attributes + to improve the model quality as well. + + - name: Bulk API + description: > + + The Bulk API provides an efficient interface for making multiple Search / + Recommendations / Q&A requests in one API + + call. These requests will be executed concurrently at the Miso side, and + returned at once when all of them are finished. + + This API is particularly useful when you need to invoke multiple Miso APIs + to respond to a user request. + + Using this API, you can batch multiple API calls into one, and + significantly save the network round-trip times. + + + ### Request schema + + The request schema for this API call is as follow: + + ``` + + POST /v1/bulk + + { + "requests": [ + { + "api_name": "search/search", + "body": { ... } + }, + { + "api_name": "recommendation/product_to_product", + "body": { ... } + }, + ... + ] + } + + ``` + + Each request object should contain: + + * **api_name**: name of the API you want to access. The name should + contain a slash `/`. + + For example, search/search for search requests, search/autocomplete for + autocomplete requests, etc. + + * **body**: the complete request body as if you are making the API request + individually. + + + Any errors in one of the requests will be returned, and will not prevent + other requests from being + + executed. + + + ### Response Schema + + Bulk API endpoint will return the API responses in the same order as they + appear in the request. + + For example, if the Bulk API request is like the following: + + ``` + + POST /v1/bulk + + { + "requests": [ + {... request 1 ...}, + {... request 2 ...} + ] + } + + ``` + + + The response will be like: + + ``` + + { + "data": [ + // response for request 1 + { + "error": false, + "status_code": 200, + "body": { ... } + }, + // response for request 2 + { + "error": false, + "status_code": 200, + "body": { ... } + } + ] + } + + ``` + + + Each response object will contain the following fields: + + * **error**: whether there was an error with the request. You should check + this field to determine whether to + + perform error handling. + + * **status_code**: status code of the request. + + * **body**: the response body of the request (as if the request was sent + individually). + + + Let's see a complete example with MovieLens data. The following requests + will issue two requests in one API call that + + return the `Sci-Fi` movies directed by + + *Ridley Scott*, and *James Cameron* respectively in the first and second + responses: + + ``` + + POST /v1/bulk + + { + "requests": [ + { + "api_name": "search/search", + "body": { + "user_id": "test_user", + "q": "sci-fi", + "fq": "custom_attributes.director:\"Ridley Scott\"" + } + }, + { + "api_name": "search/search", + "body": { + "user_id": "test_user", + "q": "sci-fi", + "fq": "custom_attributes.director:\"James Cameron\"" + } + } + ] + } + + ``` + + The response will be like: + + ``` + + { + "data": [ + { + "error": false, + "status_code": 200, + "body": { + "data": { + "took": 136, + "miso_id": "19ab254c-5fb8-11ec-bd48-b20169940af9", + "products": [ + { + "product_id": "blade-runner", + "title": "Blade Runner (1982)" + } + ], + "total": 6, + "start": 0 + } + } + }, + { + "error": false, + "status_code": 200, + "body": { + "data": { + "took": 116, + "miso_id": "19ab254c-5fb8-11ec-bd48-b20169940af9", + "products": [ + { + "product_id": "avatar", + "title": "Avatar (2009)" + } + ], + "total": 10, + "start": 0 + } + } + } + ] + } + + ``` + - name: Ask APIs + description: >+ + + Miso's new Ask API is the next generation of question answering APIs. + + It is designed to provide accurate and concise answers to your questions + + based on your existing product documents. + + + Ask API offers a seamless and effective way to address complex queries in + + a near-realtime fasion. + + + Miso preprocesses your product documents, breaking them into segments. + + When a question is received, Miso finds the most related product and + segments, then + + summarize to a concise and informative answer based on the identified + segments, + + including products related to the question. + + + Possible use case includes: knowledge base, documentation search, customer + support, and more. + + + To use the Ask API, you first submit a "question" you want to ask. + + Question can be any human-readable text. Then a question ID will returned, + + and the question will be processed in the background. + + + After receving question ID, you can then use the question ID to get latest + answer + + to the question as it is being compiled. + + + ---- + + + For example: + + + If you want to know about the inner workings of nginx: + + + ```json + + { + "question":"How nginx works internally?" + } + + ``` + + + The API would response with a question id. + + ```json + + { + "data": { + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a" + }, + "message": "success" + } + + ``` + + + Then you can send a GET request to + `/v1/ask/questions/{question_id}/answer` + + to get the latest answer as it is being compiled and summerized. + + You can use `answer_stage` and `finished` to check current answer status. + + + Here's the response of answer API when data is fetched and being verified, + before answer is summerized: + + ```json + + { + "message": "success", + "data": { + "question": "How nginx works internally?", + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a", + "parent_question_id": null, + "answer_stage": "Verifying possible answers", + "finished": false, + "answer": "Verifying possible answers ...", + "sources": [], + "related_resources": [], + "followup_questions": [] + } + } + + ``` + + + Here's the response when answer is fullly summerized: + + + ```json + + { + "message": "success", + "data": { + "question": "How nginx works internally?", + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a", + "parent_question_id": null, + "answer_stage": "Generating summary", + "finished": true, + "answer": "# How does Nginx work internally?\n\n## Internal requests [1]\n\nNginx differentiates between external and internal requests. External requests...[omitted for simplicity]", + "sources": [ + { + "title": "Internal requests", + "product_id": "9781788623551", + "child_title": "Internal requests", + "child_id": "203", + "snippet": "Internal requests\nNginx differentiates external and internal requests." + }, + { + "title": "5. Nginx Core Architecture", + "product_id": "9781484216569", + "child_title": "5. Nginx Core Architecture", + "child_id": "5", + "snippet": "Checks if the client can access of the requested the resource.\nIt is at this step that Nginx...[omitted]" + }, + { + "title": "2. Managing Nginx", + "product_id": "9781785289538", + "child_title": "2. Managing Nginx", + "child_id": "14", + "snippet": "The Nginx connection processing architecture\nBefore you study...[omitted]" + }, + { + "title": "3. Nginx Core Directives", + "product_id": "9781484216569", + "child_title": "3. Nginx Core Directives", + "child_id": "3", + "snippet": "Understanding the Default Configuration\nThe default configuration...[omitted]" + }, + { + "title": "4. Nginx Modules", + "product_id": "9781484216569", + "child_title": "4. Nginx Modules", + "child_id": "4", + "snippet": "Based on the context like HTTP, MAIL, and STREAM, it creates a ...[omitted]" + } + ], + "related_resources": [], + "followup_questions": [ + "What are the steps involved in processing a request and generating a response in Nginx?", + "How do Nginx modules contribute to the internal workings of Nginx?" + ] + } + } + + ``` + + + Related product IDs will be returned along with human-readable answer. + Related text section in the product will also be quoted. + + + If a product has any children, they will also be matched, `child_id` and + `child_title` will be included for sources belonging to the product's + children. + + + You can use `fq` to limit the search scope, for example, to a specific + product type or other condition. + + + If you only want to search for books (no articles of videos), you can use + `fq=type:book` like this: + + ```json + + { + "question":"How nginx works internally?" + "fq": "type:book" + } + + ``` + + + If you want the answer to contain any other fields, set `source_fl` when + submitting the question. + + x-tagGroups: + - name: Data APIs + tags: + - Interaction APIs + - Product / Content APIs + - User APIs + - name: Engine APIs + tags: + - Search APIs + - Recommendation APIs + - Ask APIs + - Signal API + - Bulk API + - name: Experiment APIs + tags: + - Experiment APIs + - name: Q&A API + tags: + - Q&A APIs + servers: + - url: https://api.askmiso.com +konfigCliVersion: 1.38.34 diff --git a/sdks/db/fixed-specs-cache/telintel-sms-gateway-fixed-spec.yaml b/sdks/db/fixed-specs-cache/telintel-sms-gateway-fixed-spec.yaml index 0f215eb6a7..fe8c96592f 100644 --- a/sdks/db/fixed-specs-cache/telintel-sms-gateway-fixed-spec.yaml +++ b/sdks/db/fixed-specs-cache/telintel-sms-gateway-fixed-spec.yaml @@ -34,7 +34,7 @@ publishJson: Text2Speech, IVR, SMS2Call y Click2Call) nos permiten ofrecer una amplia gama de servicios para cualquier necesidad incluyendo recordatorios, alertas, promociones y fidelización de clientes en todo el mundo, con - presencia comercial en los 5 continentes. + presencia comercial en los 5 continentes. Nuestras plataformas Go4Clients y TestmySMS le permitirán mejorar la diff --git a/sdks/db/fixed-specs/baserow-fixed-spec.yaml b/sdks/db/fixed-specs/baserow-fixed-spec.yaml new file mode 100644 index 0000000000..9b5bc09205 --- /dev/null +++ b/sdks/db/fixed-specs/baserow-fixed-spec.yaml @@ -0,0 +1,50881 @@ +openapi: 3.0.3 +info: + title: Baserow API spec + 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). + version: 1.23.2 + contact: + url: https://baserow.io/contact + license: + name: MIT + url: https://gitlab.com/baserow/baserow/-/blob/master/LICENSE + x-konfig-ignore: + object-with-no-properties: true +servers: + - url: api.baserow.io +tags: + - name: Admin + - name: Database table rows + - name: Database table views + - name: User + - name: Applications + - name: Auth + - name: Teams + - name: Groups + - name: Workspaces + - name: User sources + - name: Audit log + - name: Database tables + - name: Database table view filters + - name: Group invitations + - name: Workspace invitations + - name: Database table fields + - name: Builder data sources + - name: Builder elements + - name: Builder domains + - name: Builder workflow actions + - name: Trash + - name: Database table webhooks + - name: Database tokens + - name: Role assignments + - name: Templates + - name: Integrations + - name: Database table view sortings + - name: Database table view decorations + - name: Database table view groupings + - name: Database table grid view + - name: Builder pages + - name: Snapshots + - name: Notifications + - name: Settings + - name: Jobs + - name: Database table form view + - name: User files + - name: Database table gallery view + - name: Database table kanban view + - name: Database table calendar view + - name: Database table export + - name: Builder public + - name: Health + - name: Builder theme +paths: + /api/database/view/{view_id}/premium: + patch: + tags: + - Database table views + operationId: DatabaseTableViews_setPremiumAttributes + security: + - JWT: [] + description: Sets view attributes only available for premium users. + parameters: + - description: Sets show_logo of this view. + in: path + name: view_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/View' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsSetPremiumAttributesResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsSetPremiumAttributes404Response + /api/user-source/{user_source_id}/force-token-auth: + post: + tags: + - User sources + operationId: UserSources_forceTokenAuth + security: + - JWT: [] + description: >- + Force authenticates an existing user based on their ID. If successful, + an access token and a refresh token will be returned. + parameters: + - description: The user source to use to authenticate the user. + in: path + name: user_source_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesForceTokenAuthResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesForceTokenAuth401Response' + /api/user-source/{user_source_id}/token-auth: + post: + tags: + - User sources + operationId: UserSources_authenticateUserWithToken + security: + - JWT: [] + - {} + description: >- + Authenticates an existing user against a user source based on their + credentials. If successful, an access token and a refresh token will be + returned. + parameters: + - description: The id of the user_source to move + in: path + name: user_source_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenObtainPair' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenObtainPair' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenObtainPair' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/UserSourcesAuthenticateUserWithTokenResponse + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/UserSourcesAuthenticateUserWithToken401Response + /api/_health/email: + post: + tags: + - Health + operationId: email_tester + security: + - JWT: [] + description: >- + Sends a test email to the provided email address. Useful for testing + Baserow's email configuration as errors are clearly returned. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/EmailTesterResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/EmailTester400Response' + /api/_health/full: + get: + tags: + - Health + operationId: Health_runFullCheck + security: + - JWT: [] + description: >- + Runs a full health check testing as many services and systems as + possible. These health checks can be expensive operations such as + writing files to storage etc. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/FullHealthCheck' + /api/admin/audit-log: + get: + tags: + - Audit log + operationId: AuditLog_listEntriesForWorkspace + security: + - JWT: [] + description: |- + Lists all audit log entries for the given workspace id. + + This is a **enterprise** feature. + parameters: + - description: Filter the audit log entries by action type. + in: query + name: action_type + schema: + type: string + - description: The ISO timestamp to filter the audit log entries from. + in: query + name: from_timestamp + schema: + type: string + - description: Defines which page should be returned. + in: query + name: page + schema: + type: integer + - description: Defines how many audit log entries should be returned per page. + in: query + name: size + schema: + type: integer + - description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `user, workspace, + type, timestamp, ip_address`. For example `sorts=-user,-workspace` + will sort the audit log entries first by descending user and then + ascending workspace. A sortparameter with multiple instances of the + same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + in: query + name: sorts + schema: + type: string + - description: The ISO timestamp to filter the audit log entries to. + in: query + name: to_timestamp + schema: + type: string + - description: Filter the audit log entries by user id. + in: query + name: user_id + schema: + type: integer + - description: >- + Filter the audit log entries by workspace id. This filter works only + for the admin audit log. + in: query + name: workspace_id + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLog' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogListEntriesForWorkspaceResponse' + '401': + description: No response body + /api/admin/audit-log/action-types: + get: + tags: + - Audit log + operationId: AuditLog_listActionTypes + security: + - JWT: [] + description: |- + List all distinct action types related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - description: >- + If provided only action_types with name that match the query will be + returned. + in: query + name: search + schema: + type: string + - description: Return action types related to the workspace. + in: query + name: workspace_id + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogListActionTypesResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogListActionTypes400Response' + '401': + description: No response body + /api/admin/audit-log/export: + post: + tags: + - Audit log + operationId: AuditLog_createExportJob + security: + - JWT: [] + description: |- + Creates a job to export the filtered audit log to a CSV file. + + This is a **enterprise** feature. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogCreateExportJobResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogCreateExportJob404Response' + /api/admin/audit-log/users: + get: + tags: + - Audit log + operationId: AuditLog_listUsers + security: + - JWT: [] + description: |- + List all users that have performed an action in the audit log. + + This is a **enterprise** feature. + parameters: + - description: Defines which page should be returned. + in: query + name: page + schema: + type: integer + - description: >- + If provided only users with email that match the query will be + returned. + in: query + name: search + schema: + type: string + - description: Defines how many users should be returned per page. + in: query + name: size + schema: + type: integer + - description: Return users belonging to the given workspace_id. + in: query + name: workspace_id + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogUser' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogListUsersResponse' + '401': + description: No response body + /api/admin/audit-log/workspaces: + get: + tags: + - Audit log + operationId: AuditLog_listDistinctWorkspaceNames + security: + - JWT: [] + description: |- + List all distinct workspace names related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - description: Defines which page should be returned. + in: query + name: page + schema: + type: integer + - description: >- + If provided only workspaces with name that match the query will be + returned. + in: query + name: search + schema: + type: string + - description: Defines how many workspaces should be returned per page. + in: query + name: size + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogWorkspace' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/AuditLogListDistinctWorkspaceNamesResponse + '401': + description: No response body + /api/admin/auth-provider: + get: + tags: + - Auth + operationId: Auth_listProviders + security: + - JWT: [] + description: List all the available authentication providers. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuthListProvidersResponse' + post: + tags: + - Auth + operationId: Auth_registerAuthProvider + security: + - JWT: [] + description: >- + Creates a new authentication provider. This can be used to enable + authentication with a third party service like Google or Facebook. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuthRegisterAuthProviderResponse' + /api/admin/auth-provider/{auth_provider_id}: + get: + tags: + - Auth + operationId: Auth_getAuthProvider + security: + - JWT: [] + description: Get an authentication provider. + parameters: + - description: The authentication provider id to fetch. + in: path + name: auth_provider_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuthGetAuthProviderResponse' + patch: + tags: + - Auth + operationId: Auth_updateAuthProvider + security: + - JWT: [] + description: >- + Updates a new authentication provider. This can be used to enable + authentication with a third party service like Google or Facebook. + parameters: + - description: The authentication provider id to update. + in: path + name: auth_provider_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuthUpdateAuthProviderResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuthUpdateAuthProvider404Response' + delete: + tags: + - Auth + operationId: Auth_deleteAuthProvider + security: + - JWT: [] + description: Delete an authentication provider. + parameters: + - description: The authentication provider id to delete. + in: path + name: auth_provider_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuthDeleteAuthProviderResponse' + /api/admin/dashboard: + get: + tags: + - Admin + operationId: admin_dashboard + security: + - JWT: [] + description: >- + Returns the new and active users for the last 24 hours, 7 days and 30 + days. The `previous_` values are the values of the period before, so for + example `previous_new_users_last_24_hours` are the new users that signed + up from 48 to 24 hours ago. It can be used to calculate an increase or + decrease in the amount of signups. A list of the new and active users + for every day for the last 30 days is also included. + + + This is a **premium** feature. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDashboard' + '401': + description: No response body + /api/admin/groups: + get: + tags: + - Admin + operationId: Admin_getAllGroups + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [admin_list_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns all groups with detailed information on each group, if the requesting user is staff. + + This is a **premium** feature. + parameters: + - description: Defines which page should be returned. + in: query + name: page + schema: + type: integer + - description: >- + If provided only groups with id or name that match the query will be + returned. + in: query + name: search + schema: + type: string + - description: Defines how many groups should be returned per page. + in: query + name: size + schema: + type: integer + - description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, name, + application_count, created_on, row_count, storage_usage`. For + example `sorts=-id,-name` will sort the groups first by descending + id and then ascending name. A sortparameter with multiple instances + of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + in: query + name: sorts + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWorkspacesAdminResponse + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminGetAllGroupsResponse' + '401': + description: No response body + deprecated: true + /api/admin/groups/{group_id}: + delete: + tags: + - Admin + operationId: Admin_deleteGroup + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [admin_delete_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes the specified group and the applications inside that group, if the requesting user is staff. + + This is a **premium** feature. + parameters: + - description: The id of the group to delete + in: path + name: group_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteGroupResponse' + '401': + description: No response body + deprecated: true + /api/admin/users: + get: + tags: + - Admin + operationId: Admin_getUsersDetail + security: + - JWT: [] + description: >- + Returns all users with detailed information on each user, if the + requesting user is staff. + + + This is a **premium** feature. + parameters: + - description: Defines which page should be returned. + in: query + name: page + schema: + type: integer + - description: >- + If provided only users with username that match the query will be + returned. + in: query + name: search + schema: + type: string + - description: Defines how many users should be returned per page. + in: query + name: size + schema: + type: integer + - description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, is_active, + name, username, date_joined, last_login`. For example + `sorts=-id,-is_active` will sort the users first by descending id + and then ascending is_active. A sortparameter with multiple + instances of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + in: query + name: sorts + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerUserAdminResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminGetUsersDetailResponse' + '401': + description: No response body + post: + tags: + - Admin + operationId: Admin_createNewUser + security: + - JWT: [] + description: >- + Creates and returns a new user if the requesting user is staff. This + works even if new signups are disabled. + + + This is a **premium** feature. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/UserAdminCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/UserAdminCreate' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCreateNewUserResponse' + /api/admin/users/{user_id}: + patch: + tags: + - Admin + operationId: Admin_updateUserAttributes + security: + - JWT: [] + description: >- + Updates specified user attributes and returns the updated user if the + requesting user is staff. You cannot update yourself to no longer be an + admin or active. + + + This is a **premium** feature. + parameters: + - description: The id of the user to edit + in: path + name: user_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUpdateUserAttributesResponse' + '401': + description: No response body + delete: + tags: + - Admin + operationId: Admin_deleteUserPremium + security: + - JWT: [] + description: >- + Deletes the specified user, if the requesting user has admin + permissions. You cannot delete yourself. + + + This is a **premium** feature. + parameters: + - description: The id of the user to delete + in: path + name: user_id + schema: + type: integer + required: true + responses: + '200': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteUserPremiumResponse' + '401': + description: No response body + /api/admin/users/impersonate: + post: + tags: + - Admin + operationId: Admin_impersonateUser + security: + - JWT: [] + description: >- + This endpoint allows staff to impersonate another user by requesting a + JWT token and user object. The requesting user must have staff access in + order to do this. It's not possible to impersonate a superuser or staff. + + + This is a **premium** feature. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + multipart/form-data: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminImpersonateUserResponse' + /api/admin/workspaces: + get: + tags: + - Admin + operationId: Admin_getWorkspaceDetails + security: + - JWT: [] + description: >- + Returns all workspaces with detailed information on each workspace, if + the requesting user is staff. + + + This is a **premium** feature. + parameters: + - description: Defines which page should be returned. + in: query + name: page + schema: + type: integer + - description: >- + If provided only workspaces with id or name that match the query + will be returned. + in: query + name: search + schema: + type: string + - description: Defines how many workspaces should be returned per page. + in: query + name: size + schema: + type: integer + - description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, name, + application_count, created_on, row_count, storage_usage`. For + example `sorts=-id,-name` will sort the workspaces first by + descending id and then ascending name. A sortparameter with multiple + instances of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + in: query + name: sorts + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWorkspacesAdminResponse + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminGetWorkspaceDetailsResponse' + '401': + description: No response body + /api/admin/workspaces/{workspace_id}: + delete: + tags: + - Admin + operationId: Admin_deleteWorkspaceAndApplications + security: + - JWT: [] + description: >- + Deletes the specified workspace and the applications inside that + workspace, if the requesting user is staff. + + + This is a **premium** feature. + parameters: + - description: The id of the workspace to delete + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/AdminDeleteWorkspaceAndApplicationsResponse + '401': + description: No response body + /api/application/{application_id}/integrations: + get: + tags: + - Integrations + operationId: Integrations_listApplicationIntegrations + security: + - JWT: [] + description: >- + Lists all the integrations of the application related to the provided + parameter if the user has access to the related application's workspace. + If the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - description: >- + Returns only the integrations of the application related to the + provided Id. + in: path + name: application_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/IntegrationsListApplicationIntegrationsResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/IntegrationsListApplicationIntegrations404Response + post: + tags: + - Integrations + operationId: Integrations_createNewIntegration + security: + - JWT: [] + description: Creates a new integration + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + Creates an integration for the application related to the provided + value. + in: path + name: application_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationsCreateNewIntegrationResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/IntegrationsCreateNewIntegration404Response + /api/application/{application_id}/list-user-source-users: + get: + tags: + - User sources + operationId: UserSources_listAvailableUsers + security: + - JWT: [] + description: List per user sources the first 5 users available. + parameters: + - description: The application we want the users for. + in: path + name: application_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UsersPerUserSource' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesListAvailableUsersResponse' + /api/application/{application_id}/user-sources: + get: + tags: + - User sources + operationId: UserSources_list + security: + - JWT: [] + description: >- + Lists all the user_sources of the application related to the provided + parameter if the user has access to the related application's workspace. + If the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - description: >- + Returns only the user_sources of the application related to the + provided Id. + in: path + name: application_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesListResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesList404Response' + post: + tags: + - User sources + operationId: UserSources_createNewUserSource + security: + - JWT: [] + description: Creates a new user_source + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + Creates an user_source for the application related to the provided + value. + in: path + name: application_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesCreateNewUserSourceResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesCreateNewUserSource404Response' + /api/applications: + get: + tags: + - Applications + operationId: Applications_listUserApplications + security: + - JWT: [] + description: >- + Lists all the applications that the authorized user has access to. The + properties that belong to the application can differ per type. An + application always belongs to a single workspace. All the applications + of the workspaces that the user has access to are going to be listed + here. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationsListUserApplicationsResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsListUserApplications400Response + /api/applications/{application_id}: + get: + tags: + - Applications + operationId: Applications_getApplicationById + security: + - JWT: [] + description: >- + Returns the requested application if the authorized user is in the + application's workspace. The properties that belong to the application + can differ per type. + parameters: + - description: Returns the application related to the provided value. + in: path + name: application_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationsGetApplicationByIdResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationsGetApplicationById404Response' + patch: + tags: + - Applications + operationId: update_application + security: + - JWT: [] + description: >- + Updates the existing application related to the provided + `application_id` param if the authorized user is in the application's + workspace. It is not possible to change the type, but properties like + the name can be changed. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the application related to the provided value. + in: path + name: application_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateApplicationResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateApplication404Response' + delete: + tags: + - Applications + operationId: delete_application + security: + - JWT: [] + description: >- + Deletes an application if the authorized user is in the application's + workspace. All the related children are also going to be deleted. For + example in case of a database application all the underlying tables, + fields, views and rows are going to be deleted. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the application related to the provided value. + in: path + name: application_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteApplicationResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteApplication404Response' + /api/applications/{application_id}/duplicate/async: + post: + tags: + - Applications + operationId: Applications_duplicateAsync + security: + - JWT: [] + description: >- + Duplicate an application if the authorized user is in the application's + workspace. All the related children are also going to be duplicated. For + example in case of a database application all the underlying tables, + fields, views and rows are going to be duplicated. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: The id of the application to duplicate. + in: path + name: application_id + schema: + type: integer + required: true + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateApplicationJobType' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationsDuplicateAsyncResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationsDuplicateAsync404Response' + /api/applications/group/{group_id}: + get: + tags: + - Applications + operationId: Applications_listGroupApplications + security: + - JWT: [] + - {} + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_list_applications](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the applications of the group related to the provided `group_id` parameter if the authorized user is in that group. If the group is related to a template, then this endpoint will be publicly accessible. The properties that belong to the application can differ per type. An application always belongs to a single group. + parameters: + - description: >- + Returns only applications that are in the group related to the + provided value. + in: path + name: group_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationsListGroupApplicationsResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsListGroupApplications400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsListGroupApplications404Response + deprecated: true + post: + tags: + - Applications + operationId: Applications_createGroupApplication + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_create_application](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new application based on the provided type. The newly created application is going to be added to the group related to the provided `group_id` parameter. If the authorized user does not belong to the group an error will be returned. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Creates an application for the group related to the provided value. + in: path + name: group_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + multipart/form-data: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsCreateGroupApplicationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsCreateGroupApplication404Response + deprecated: true + /api/applications/group/{group_id}/order: + post: + tags: + - Applications + operationId: Applications_changeOrderOfGroupApplications + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_order_applications](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Changes the order of the provided application ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order of the not provided tables will be set to `0`. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + Updates the order of the applications in the group related to the + provided value. + in: path + name: group_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderApplications' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderApplications' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderApplications' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsChangeOrderOfGroupApplicationsResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsChangeOrderOfGroupApplications404Response + deprecated: true + /api/applications/workspace/{workspace_id}: + get: + tags: + - Applications + operationId: Applications_listUserApplications + security: + - JWT: [] + - {} + description: >- + Lists all the applications of the workspace related to the provided + `workspace_id` parameter if the authorized user is in that workspace. If + theworkspace is related to a template, then this endpoint will be + publicly accessible. The properties that belong to the application can + differ per type. An application always belongs to a single workspace. + parameters: + - description: >- + Returns only applications that are in the workspace related to the + provided value. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsListUserApplications200Response + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsListUserApplications400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsListUserApplications404Response + post: + tags: + - Applications + operationId: Applications_createApplicationInWorkspace + security: + - JWT: [] + description: >- + Creates a new application based on the provided type. The newly created + application is going to be added to the workspace related to the + provided `workspace_id` parameter. If the authorized user does not + belong to the workspace an error will be returned. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + Creates an application for the workspace related to the provided + value. + in: path + name: workspace_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + multipart/form-data: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsCreateApplicationInWorkspaceResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsCreateApplicationInWorkspace404Response + /api/applications/workspace/{workspace_id}/order: + post: + tags: + - Applications + operationId: Applications_changeApplicationOrder + security: + - JWT: [] + description: >- + Changes the order of the provided application ids to the matching + position that the id has in the list. If the authorized user does not + belong to the workspace it will be ignored. The order of the not + provided tables will be set to `0`. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + Updates the order of the applications in the workspace related to + the provided value. + in: path + name: workspace_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderApplications' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderApplications' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderApplications' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsChangeApplicationOrderResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ApplicationsChangeApplicationOrder404Response + /api/audit-log: + get: + tags: + - Audit log + operationId: AuditLog_listEntries + security: + - JWT: [] + description: |- + Lists all audit log entries for the given workspace id. + + This is a **enterprise** feature. + parameters: + - description: Filter the audit log entries by action type. + in: query + name: action_type + schema: + type: string + - description: The ISO timestamp to filter the audit log entries from. + in: query + name: from_timestamp + schema: + type: string + - description: Defines which page should be returned. + in: query + name: page + schema: + type: integer + - description: Defines how many audit log entries should be returned per page. + in: query + name: size + schema: + type: integer + - description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `user, workspace, + type, timestamp, ip_address`. For example `sorts=-user,-workspace` + will sort the audit log entries first by descending user and then + ascending workspace. A sortparameter with multiple instances of the + same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + in: query + name: sorts + schema: + type: string + - description: The ISO timestamp to filter the audit log entries to. + in: query + name: to_timestamp + schema: + type: string + - description: Filter the audit log entries by user id. + in: query + name: user_id + schema: + type: integer + - description: >- + Filter the audit log entries by workspace id. This filter works only + for the admin audit log. + in: query + name: workspace_id + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLog' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogListEntriesResponse' + '401': + description: No response body + /api/audit-log/action-types: + get: + tags: + - Audit log + operationId: AuditLog_listActionTypes + security: + - JWT: [] + description: |- + List all distinct action types related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - description: >- + If provided only action_types with name that match the query will be + returned. + in: query + name: search + schema: + type: string + - description: Return action types related to the workspace. + in: query + name: workspace_id + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogListActionTypes200Response' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogListActionTypes400Response' + '401': + description: No response body + /api/audit-log/export: + post: + tags: + - Audit log + operationId: AuditLog_exportJob + security: + - JWT: [] + description: |- + Creates a job to export the filtered audit log to a CSV file. + + This is a **enterprise** feature. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogExportJobResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogExportJob404Response' + /api/audit-log/users: + get: + tags: + - Audit log + operationId: AuditLog_listUsers + security: + - JWT: [] + description: |- + List all users that have performed an action in the audit log. + + This is a **enterprise** feature. + parameters: + - description: Defines which page should be returned. + in: query + name: page + schema: + type: integer + - description: >- + If provided only users with email that match the query will be + returned. + in: query + name: search + schema: + type: string + - description: Defines how many users should be returned per page. + in: query + name: size + schema: + type: integer + - description: Return users belonging to the given workspace_id. + in: query + name: workspace_id + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogUser' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuditLogListUsers400Response' + '401': + description: No response body + /api/audit-log/workspaces: + get: + tags: + - Audit log + operationId: AuditLog_listDistinctWorkspaceNames + security: + - JWT: [] + description: |- + List all distinct workspace names related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - description: Defines which page should be returned. + in: query + name: page + schema: + type: integer + - description: >- + If provided only workspaces with name that match the query will be + returned. + in: query + name: search + schema: + type: string + - description: Defines how many workspaces should be returned per page. + in: query + name: size + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogWorkspace' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/AuditLogListDistinctWorkspaceNames400Response + '401': + description: No response body + /api/auth-provider/login-options: + get: + tags: + - Auth + operationId: Auth_listLoginOptions + security: + - JWT: [] + - {} + description: >- + Lists the available login options for the configured authentication + providers. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuthListLoginOptionsResponse' + /api/builder/{builder_id}/domains: + get: + tags: + - Builder domains + operationId: BuilderDomains_getAll + security: + - JWT: [] + description: Gets all the domains of a builder + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: Gets all the domains for the specified builder + in: path + name: builder_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDomainsGetAllResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDomainsGetAll400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDomainsGetAll404Response' + post: + tags: + - Builder domains + operationId: BuilderDomains_createNewDomain + security: + - JWT: [] + description: Creates a new domain for an application builder + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + Creates a domain for the application builder related tothe provided + value + in: path + name: builder_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + multipart/form-data: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeDomain' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDomainsCreateNewDomainResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDomainsCreateNewDomain404Response' + /api/builder/{builder_id}/domains/order: + post: + tags: + - Builder domains + operationId: BuilderDomains_applyOrder + security: + - JWT: [] + description: Apply a new order to the domains of a builder + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The builder the domain belongs to + in: path + name: builder_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderDomains' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderDomains' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderDomains' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDomainsApplyOrderResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDomainsApplyOrder404Response' + /api/builder/{builder_id}/pages: + post: + tags: + - Builder pages + operationId: BuilderPages_createNewPage + security: + - JWT: [] + description: Creates a new page for an application builder + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + Creates a page for the application builder related to the provided + value. + in: path + name: builder_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreatePage' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreatePage' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreatePage' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Page' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderPagesCreateNewPageResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderPagesCreateNewPage404Response' + /api/builder/{builder_id}/pages/order: + post: + tags: + - Builder pages + operationId: BuilderPages_applyOrderToPages + security: + - JWT: [] + description: Apply a new order to the pages of a builder + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The builder the page belongs to + in: path + name: builder_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderPages' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderPages' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderPages' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderPagesApplyOrderToPagesResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderPagesApplyOrderToPages404Response' + /api/builder/{builder_id}/theme: + patch: + tags: + - Builder theme + operationId: BuilderTheme_updateProperties + security: + - JWT: [] + description: Updates the theme properties for the provided id. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + Updates the theme for the application builder related to the + provided value. + in: path + name: builder_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CombinedThemeConfigBlocks' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderThemeUpdatePropertiesResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderThemeUpdateProperties404Response' + /api/builder/data-source/{data_source_id}: + patch: + tags: + - Builder data sources + operationId: BuilderDataSources_updateExistingDataSource + security: + - JWT: [] + description: Updates an existing builder data_source. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the data_source + in: path + name: data_source_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDataSourcesUpdateExistingDataSourceResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDataSourcesUpdateExistingDataSource404Response + delete: + tags: + - Builder data sources + operationId: BuilderDataSources_deleteById + security: + - JWT: [] + description: Deletes the data_source related by the given id. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the data_source + in: path + name: data_source_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDataSourcesDeleteByIdResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDataSourcesDeleteById404Response' + /api/builder/data-source/{data_source_id}/dispatch: + post: + tags: + - Builder data sources + operationId: BuilderDataSources_dispatchServiceResult + security: + - JWT: [] + - {} + description: >- + Dispatches the service of the related data_source and returns the + result. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the data_source you want to call the dispatch for + in: path + name: data_source_id + schema: + type: integer + required: true + responses: + default: + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDataSourcesDispatchServiceResultResponse + /api/builder/data_source/{data_source_id}/move: + patch: + tags: + - Builder data sources + operationId: BuilderDataSources_moveDataSource + security: + - JWT: [] + description: >- + Moves the data_source in the page before another data_source or at the + end of the page if no before data_source is given. The data_sources must + belong to the same page. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the data_source to move + in: path + name: data_source_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDataSourcesMoveDataSourceResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDataSourcesMoveDataSource404Response + /api/builder/domains/{domain_id}: + patch: + tags: + - Builder domains + operationId: BuilderDomains_updateExistingDomain + security: + - JWT: [] + description: Updates an existing domain of an application builder + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the domain + in: path + name: domain_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeDomain' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDomainsUpdateExistingDomainResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDomainsUpdateExistingDomain404Response + delete: + tags: + - Builder domains + operationId: BuilderDomains_removeExistingDomain + security: + - JWT: [] + description: Deletes an existing domain of an application builder + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the domain + in: path + name: domain_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDomainsRemoveExistingDomainResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDomainsRemoveExistingDomain404Response + /api/builder/domains/{domain_id}/publish/async: + post: + tags: + - Builder domains + operationId: BuilderDomains_startPublishJob + security: + - JWT: [] + description: >- + This endpoint starts an asynchronous job to publish the builder. The job + clones the current version of the given builder and publish it for the + given domain. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The builder application id the user wants to publish. + in: path + name: domain_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDomainsStartPublishJobResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDomainsStartPublishJob404Response' + /api/builder/domains/ask-public-domain-exists: + get: + tags: + - Builder domains + operationId: BuilderDomains_checkDomainExists + security: + - JWT: [] + - {} + description: >- + This endpoint can be used to check whether a domain exists for SSL + certificate purposes. It's compatible with the Caddy on_demand TLS as + described here: + https://caddyserver.com/docs/json/apps/tls/automation/on_demand/ask/. It + will respond with a 200 status code if it exists or a 404 if it doesn't + exist. + parameters: + - description: The domain name for which + in: query + name: domain + schema: + type: integer + responses: + '200': + description: No response body + '404': + description: No response body + /api/builder/domains/published/by_id/{builder_id}: + get: + tags: + - Builder public + operationId: BuilderPublic_serializedVersionById + security: + - JWT: [] + - {} + description: >- + Returns the public serialized version of the builder and its pages for + the given builder id. + parameters: + - description: Returns the builder related to the provided Id and its pages. + in: path + name: builder_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicBuilder' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderPublicSerializedVersionByIdResponse + /api/builder/domains/published/by_name/{domain_name}: + get: + tags: + - Builder public + operationId: BuilderPublic_serializedVersion + security: + - JWT: [] + - {} + description: >- + Returns the public serialized version of the builder for the given + domain name and its pages . + parameters: + - description: Returns the builder published for the given domain name. + in: path + name: domain_name + schema: + type: string + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicBuilder' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderPublicSerializedVersionResponse' + /api/builder/domains/published/page/{page_id}/data_sources: + get: + tags: + - Builder data sources + operationId: BuilderDataSources_listPageDataSources + security: + - JWT: [] + - {} + description: >- + Lists all the data_sources of the page related to the provided parameter + if the builder is public. + parameters: + - description: >- + Returns only the data_sources of the page related to the provided Id + if the related builder is public. + in: path + name: page_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDataSourcesListPageDataSourcesResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDataSourcesListPageDataSources404Response + /api/builder/domains/published/page/{page_id}/elements: + get: + tags: + - Builder elements + operationId: BuilderElements_getPageElements + security: + - JWT: [] + - {} + description: >- + Lists all the elements of the page related to the provided parameter. If + the user is Anonymous, the page must belong to a published builder + instance to being accessible. + parameters: + - description: Returns the elements of the page related to the provided Id. + in: path + name: page_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderElementsGetPageElementsResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderElementsGetPageElements404Response' + /api/builder/domains/published/page/{page_id}/workflow_actions: + get: + tags: + - Builder workflow actions + operationId: BuilderWorkflowActions_listPageWorkflowActions + security: + - JWT: [] + - {} + description: >- + Lists all the workflow actions with their public accessible data. Some + configuration might be omitted for security reasons such as passwords or + PII. + parameters: + - description: >- + Returns only the public workflow actions of the page related to the + provided Id. + in: path + name: page_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsListPageWorkflowActionsResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsListPageWorkflowActions404Response + /api/builder/element/{element_id}: + patch: + tags: + - Builder elements + operationId: BuilderElements_updateExistingElement + security: + - JWT: [] + description: Updates an existing builder element. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the element + in: path + name: element_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderElementsUpdateExistingElementResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderElementsUpdateExistingElement404Response + delete: + tags: + - Builder elements + operationId: BuilderElements_removeElementById + security: + - JWT: [] + description: Deletes the element related by the given id. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the element + in: path + name: element_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderElementsRemoveElementByIdResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderElementsRemoveElementById404Response + /api/builder/element/{element_id}/duplicate: + post: + tags: + - Builder elements + operationId: BuilderElements_duplicateElementChildren + security: + - JWT: [] + description: >- + Duplicates an element and all of the elements children and the + associated workflow actions as well. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the element to duplicate + in: path + name: element_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DuplicateElement' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderElementsDuplicateElementChildrenResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderElementsDuplicateElementChildren404Response + /api/builder/element/{element_id}/move: + patch: + tags: + - Builder elements + operationId: BuilderElements_moveElement + security: + - JWT: [] + description: >- + Moves the element in the page before another element or at the end of + the page if no before element is given. The elements must belong to the + same page. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the element to move + in: path + name: element_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderElementsMoveElementResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderElementsMoveElement404Response' + /api/builder/page/{page_id}/data-sources: + get: + tags: + - Builder data sources + operationId: BuilderDataSources_listPageDataSources + security: + - JWT: [] + description: >- + Lists all the data_sources of the page related to the provided parameter + if the user has access to the related builder's workspace. If the + workspace is related to a template, then this endpoint will be publicly + accessible. + parameters: + - description: >- + Returns only the data_sources of the page related to the provided + Id. + in: path + name: page_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDataSourcesListPageDataSources200Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDataSourcesListPageDataSources404Response + post: + tags: + - Builder data sources + operationId: BuilderDataSources_createNew + security: + - JWT: [] + description: Creates a new builder data_source + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + Creates a data_source for the builder page related to the provided + value. + in: path + name: page_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDataSourcesCreateNewResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderDataSourcesCreateNew404Response' + /api/builder/page/{page_id}/dispatch-data-sources: + post: + tags: + - Builder data sources + operationId: BuilderDataSources_dispatchPageDataSources + security: + - JWT: [] + - {} + description: Dispatches the service of the related page data_sources + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The page we want to dispatch the data source for. + in: path + name: page_id + schema: + type: integer + required: true + responses: + default: + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderDataSourcesDispatchPageDataSourcesResponse + /api/builder/page/{page_id}/elements: + get: + tags: + - Builder elements + operationId: BuilderElements_getPageElements + security: + - JWT: [] + description: >- + Lists all the elements of the page related to the provided parameter if + the user has access to the related builder's workspace. If the workspace + is related to a template, then this endpoint will be publicly + accessible. + parameters: + - description: Returns only the elements of the page related to the provided Id. + in: path + name: page_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderElementsGetPageElements200Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderElementsGetPageElements404Response' + post: + tags: + - Builder elements + operationId: BuilderElements_createNewElement + security: + - JWT: [] + description: Creates a new builder element + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + Creates an element for the builder page related to the provided + value. + in: path + name: page_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderElementsCreateNewElementResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderElementsCreateNewElement404Response + /api/builder/page/{page_id}/workflow_actions: + get: + tags: + - Builder workflow actions + operationId: BuilderWorkflowActions_listPageWorkflowActions + security: + - JWT: [] + description: >- + Lists all the workflow actions of the page related to the provided + parameter if the user has access to the related builder's workspace. If + the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - description: >- + Returns only the workflow actions of the page related to the + provided Id. + in: path + name: page_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsListPageWorkflowActions200Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsListPageWorkflowActions404Response + post: + tags: + - Builder workflow actions + operationId: BuilderWorkflowActions_createNewAction + security: + - JWT: [] + description: Creates a new builder workflow action + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + Creates a workflow action for the builder page related to the + provided value. + in: path + name: page_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + multipart/form-data: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsCreateNewActionResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsCreateNewAction404Response + /api/builder/page/{page_id}/workflow_actions/order: + post: + tags: + - Builder workflow actions + operationId: BuilderWorkflowActions_applyNewOrder + security: + - JWT: [] + description: Apply a new order to the workflow actions of a page + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The page the workflow actions belong to + in: path + name: page_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsApplyNewOrderResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsApplyNewOrder404Response + /api/builder/pages/{page_id}: + patch: + tags: + - Builder pages + operationId: BuilderPages_updateExistingPage + security: + - JWT: [] + description: Updates an existing page of an application builder + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the page + in: path + name: page_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Page' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderPagesUpdateExistingPageResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderPagesUpdateExistingPage404Response' + delete: + tags: + - Builder pages + operationId: BuilderPages_deletePage + security: + - JWT: [] + description: Deletes an existing page of an application builder + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the page + in: path + name: page_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderPagesDeletePageResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderPagesDeletePage404Response' + /api/builder/pages/{page_id}/duplicate/async: + post: + tags: + - Builder pages + operationId: BuilderPages_startDuplicationJob + security: + - JWT: [] + description: >- + Start a job to duplicate the page with the provided `page_id` parameter + if the authorized user has access to the builder's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The page to duplicate. + in: path + name: page_id + schema: + type: integer + required: true + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicatePageJobType' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/BuilderPagesStartDuplicationJobResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderPagesStartDuplicationJob404Response + /api/builder/workflow_action/{workflow_action_id}: + patch: + tags: + - Builder workflow actions + operationId: BuilderWorkflowActions_updateExistingAction + security: + - JWT: [] + description: Updates an existing builder workflow action. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the workflow action + in: path + name: workflow_action_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsUpdateExistingActionResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsUpdateExistingAction404Response + delete: + tags: + - Builder workflow actions + operationId: BuilderWorkflowActions_deleteWorkflowActionById + security: + - JWT: [] + description: Deletes the workflow action related by the given id. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the workflow action + in: path + name: workflow_action_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsDeleteWorkflowActionByIdResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsDeleteWorkflowActionById404Response + /api/builder/workflow_action/{workflow_action_id}/dispatch: + post: + tags: + - Builder workflow actions + operationId: BuilderWorkflowActions_dispatchServiceResult + security: + - JWT: [] + - {} + description: >- + Dispatches the service of the related workflow_action and returns the + result. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the workflow_action you want to call the dispatch for. + in: path + name: workflow_action_id + schema: + type: integer + required: true + responses: + default: + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/BuilderWorkflowActionsDispatchServiceResultResponse + /api/database/export/{job_id}: + get: + tags: + - Database table export + operationId: DatabaseTableExport_exportJobDetails + security: + - JWT: [] + description: >- + Returns information such as export progress and state or the url of the + exported file for the specified export job, only if the requesting user + has access. + parameters: + - description: The job id to lookup information about. + in: path + name: job_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ExportJob' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableExportExportJobDetailsResponse + /api/database/export/table/{table_id}: + post: + tags: + - Database table export + operationId: export_table + security: + - JWT: [] + description: >- + Creates and starts a new export job for a table given some exporter + options. Returns an error if the requesting user does not have + permissionsto view the table. + parameters: + - description: The table id to create and start an export job for + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Export' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Export' + multipart/form-data: + schema: + $ref: '#/components/schemas/Export' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ExportJob' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ExportTableResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ExportTable404Response' + /api/database/fields/{field_id}: + get: + tags: + - Database table fields + operationId: DatabaseTableFields_getFieldProperties + security: + - JWT: [] + description: >- + Returns the existing field if the authorized user has access to the + related database's workspace. Depending on the type different properties + could be returned. + parameters: + - description: Returns the field related to the provided value. + in: path + name: field_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/FieldField' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsGetFieldPropertiesResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsGetFieldProperties404Response + patch: + tags: + - Database table fields + operationId: DatabaseTableFields_updateField + security: + - JWT: [] + description: >- + Updates the existing field if the authorized user has access to the + related database's workspace. The type can also be changed and depending + on that type, different additional properties can optionally be set. If + you change the field type it could happen that the data conversion + fails, in that case the `ERROR_CANNOT_CHANGE_FIELD_TYPE` is returned, + but this rarely happens. If a data value cannot be converted it is set + to `null` so data might go lost.If updated the field causes other fields + to change then the specificinstances of those fields will be included in + the related fields response key. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the field related to the provided value. + in: path + name: field_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/FieldFieldSerializerWithRelatedFields' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableFieldsUpdateFieldResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableFieldsUpdateField404Response' + delete: + tags: + - Database table fields + operationId: DatabaseTableFields_deleteField + security: + - JWT: [] + description: >- + Deletes the existing field if the authorized user has access to the + related database's workspace. Note that all the related data to that + field is also deleted. Primary fields cannot be deleted because their + value represents the row. If deleting the field causes other fields to + change then the specificinstances of those fields will be included in + the related fields response key. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the field related to the provided value. + in: path + name: field_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RelatedFields' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableFieldsDeleteFieldResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableFieldsDeleteField404Response' + /api/database/fields/{field_id}/duplicate/async: + post: + tags: + - Database table fields + operationId: DatabaseTableFields_duplicateAsync + security: + - JWT: [] + description: >- + Duplicates the table with the provided `table_id` parameter if the + authorized user has access to the database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: The field to duplicate. + in: path + name: field_id + schema: + type: integer + required: true + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateFieldJobType' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableFieldsDuplicateAsyncResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsDuplicateAsync404Response + /api/database/fields/{field_id}/unique_row_values: + get: + tags: + - Database table fields + operationId: DatabaseTableFields_getUniqueRowValues + security: + - JWT: [] + description: >- + Returns a list of all the unique row values for an existing field, + sorted in order of frequency. + parameters: + - description: Returns the values related to the provided field. + in: path + name: field_id + schema: + type: integer + required: true + - description: Defines how many values should be returned. + in: query + name: limit + schema: + type: integer + - description: >- + Indicates whether the original column values must be splitted by + comma. + in: query + name: split_comma_separated + schema: + type: boolean + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UniqueRowValues' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsGetUniqueRowValuesResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsGetUniqueRowValues404Response + /api/database/fields/table/{table_id}: + get: + tags: + - Database table fields + operationId: DatabaseTableFields_getTableFields + security: + - JWT: [] + - Database token: [] + - {} + description: >- + Lists all the fields of the table related to the provided parameter if + the user has access to the related database's workspace. If the + workspace is related to a template, then this endpoint will be publicly + accessible. A table consists of fields and each field can have a + different type. Each type can have different properties. A field is + comparable with a regular table's column. + parameters: + - description: Returns only the fields of the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableFieldsGetTableFieldsResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsGetTableFields400Response + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsGetTableFields401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsGetTableFields404Response + post: + tags: + - Database table fields + operationId: DatabaseTableFields_createNewField + security: + - JWT: [] + - Database token: [] + description: >- + Creates a new field for the table related to the provided `table_id` + parameter if the authorized user has access to the related database's + workspace. Depending on the type, different properties can optionally be + set.If creating the field causes other fields to change then the + specificinstances of those fields will be included in the related fields + response key. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Creates a new field for the provided table related to the value. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FieldCreateField' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/FieldCreateField' + multipart/form-data: + schema: + $ref: '#/components/schemas/FieldCreateField' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/FieldFieldSerializerWithRelatedFields' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableFieldsCreateNewFieldResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsCreateNewField401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsCreateNewField404Response + /api/database/formula/{table_id}/type: + post: + tags: + - Database table fields + operationId: DatabaseTableFields_calculateFormulaType + security: + - JWT: [] + description: >- + Calculates and returns the type of the specified formula value. Does not + change the state of the field in any way. + parameters: + - description: The table id of the formula field to type. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TypeFormulaResult' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsCalculateFormulaTypeResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFieldsCalculateFormulaType404Response + /api/database/rows/names: + get: + tags: + - Database table rows + operationId: DatabaseTableRows_getNamesOfRow + security: + - JWT: [] + - Database token: [] + description: >- + Returns the names of the given row of the given tables. The nameof a row + is the primary field value for this row. The result can be usedfor + example, when you want to display the name of a linked row from another + table. + parameters: + - description: >- + A list of comma separated row ids to query from the table with id + {id}. For example, if you want the name of row `42` and `43` from + table `28` this parameter will be `table__28=42,43`. You can specify + multiple rows for different tables but every tables must be in the + same database. You need at least read permission on all specified + tables. + in: query + name: table__{id} + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsGetNamesOfRowResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsGetNamesOfRow400Response' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsGetNamesOfRow401Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsGetNamesOfRow404Response' + /api/database/rows/table/{table_id}: + get: + tags: + - Database table rows + operationId: DatabaseTableRows_listTableRows + security: + - JWT: [] + - Database token: [] + description: >- + Lists all the rows of the table related to the provided parameter if the + user has access to the related database's workspace. The response is + paginated by a page/size style. It is also possible to provide an + optional search query, only rows where the data matches the search query + are going to be returned then. The properties of the returned rows + depends on which fields the table has. For a complete overview of fields + use the **list_database_table_fields** endpoint to list them all. In the + example all field types are listed, but normally the number in + field_{id} key is going to be the id of the field. Or if the GET + parameter `user_field_names` is provided then the keys will be the name + of the field. The value is what the user has provided and the format of + it depends on the fields type. + parameters: + - description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude query parameter. + If you for example provide the following GET parameter + `exclude=field_1,field_2` then the fields with id `1` and id `2` are + going to be excluded from the selection and response. If the + `user_field_names` parameter is provided then instead exclude should + be a comma separated list of the actual field names. For field names + with commas you should surround the name with quotes like so: + `exclude=My Field,"Field With , "`. A backslash can be used to + escape field names which contain double quotes like so: `exclude=My + Field,Field with \"`. + in: query + name: exclude + 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + in: query + name: filter__{field}__{filter} + 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: filter_type + 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + in: query + name: filters + schema: + type: string + - description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the include query parameter. + If you for example provide the following GET parameter + `include=field_1,field_2` then only the fields withid `1` and id `2` + are going to be selected and included in the response. If the + `user_field_names` parameter is provided then instead include should + be a comma separated list of the actual field names. For field names + with commas you should surround the name with quotes like so: + `include=My Field,"Field With , "`. A backslash can be used to + escape field names which contain double quotes like so: `include=My + Field,Field with \"`. + in: query + name: include + schema: + type: string + - description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). If the `user_field_names` parameter is provided then instead + order_by should be a comma separated list of the actual field names. + For field names with commas you should surround the name with quotes + like so: `order_by=My Field,"Field With , "`. A backslash can be + used to escape field names which contain double quotes like so: + `order_by=My Field,Field with \"`. + in: query + name: order_by + schema: + type: string + - description: Defines which page of rows should be returned. + in: query + name: page + schema: + type: integer + - description: >- + If provided only rows with data that matches the search query are + going to be returned. + in: query + name: search + schema: + type: string + - description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` + is used, then Postgres full-text search is used. If `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: search_mode + schema: + type: string + - description: Defines how many rows should be returned per page. + in: query + name: size + schema: + type: integer + - description: Returns the rows of the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + - description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + in: query + name: user_field_names + schema: + type: boolean + - description: Includes all the filters and sorts of the provided view. + in: query + name: view_id + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerExampleRowResponseSerializerWithUserFieldNames + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsListTableRowsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsListTableRows401Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsListTableRows404Response' + post: + tags: + - Database table rows + operationId: DatabaseTableRows_createRow + security: + - JWT: [] + - Database token: [] + description: >- + Creates a new row in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** to list them all. None of the fields are + required, if they are not provided the value is going to be `null` or + `false` or some default value is that is set. If you want to add a value + for the field with for example id `10`, the key must be named + `field_10`. Or instead if the `user_field_names` GET param is provided + the key must be the name of the field. Of course multiple fields can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + If provided then the newly created row will be positioned before the + row with the provided id. + in: query + name: before + schema: + type: integer + - description: Creates a row in the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + - description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + in: query + name: user_field_names + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + multipart/form-data: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsCreateRowResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsCreateRow401Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsCreateRow404Response' + /api/database/rows/table/{table_id}/{row_id}: + get: + tags: + - Database table rows + operationId: DatabaseTableRows_getRowByTableIdAndRowId + security: + - JWT: [] + - Database token: [] + description: >- + Fetches an existing row from the table if the user has access to the + related table's workspace. The properties of the returned row depend on + which fields the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field of the field. Or if the GET parameter + `user_field_names` is provided then the keys will be the name of the + field. The value is what the user has provided and the format of it + depends on the fields type. + parameters: + - description: Returns the row related the provided value. + in: path + name: row_id + schema: + type: integer + required: true + - description: Returns the row of the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + - description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + in: query + name: user_field_names + schema: + type: boolean + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsGetRowByTableIdAndRowIdResponse + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsGetRowByTableIdAndRowId401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsGetRowByTableIdAndRowId404Response + patch: + tags: + - Database table rows + operationId: DatabaseTableRows_updateRow + security: + - JWT: [] + - Database token: [] + description: >- + Updates an existing row in the table if the user has access to the + related table's workspace. The accepted body fields are depending on the + fields that the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. None of the + fields are required, if they are not provided the value is not going to + be updated. When you want to update a value for the field with id `10`, + the key must be named `field_10`. Or if the GET parameter + `user_field_names` is provided the key of the field to update must be + the name of the field. Multiple different fields to update can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the row related to the value. + in: path + name: row_id + schema: + type: integer + required: true + - description: Updates the row in the table related to the value. + in: path + name: table_id + schema: + type: integer + required: true + - description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + in: query + name: user_field_names + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsUpdateRowResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsUpdateRow401Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsUpdateRow404Response' + delete: + tags: + - Database table rows + operationId: DatabaseTableRows_deleteRow + security: + - JWT: [] + - Database token: [] + description: >- + Deletes an existing row in the table if the user has access to the + table's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the row related to the value. + in: path + name: row_id + schema: + type: integer + required: true + - description: Deletes the row in the table related to the value. + in: path + name: table_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsDeleteRowResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsDeleteRow404Response' + /api/database/rows/table/{table_id}/{row_id}/adjacent: + get: + tags: + - Database table rows + operationId: DatabaseTableRows_getAdjacentRow + security: + - JWT: [] + description: >- + Fetches the adjacent row to a given row_id in the table with the given + table_id. If the previous flag is set it will return the previous row, + otherwise it will return the next row. You can specifya view_id and it + will apply the filters and sorts of the provided view. + parameters: + - description: >- + A flag query parameter which if provided returns theprevious row to + the specified row_id. If it's not setit will return the next row. + in: query + name: previous + schema: + type: boolean + - description: Returns the row adjacent the provided value. + in: path + name: row_id + schema: + type: integer + required: true + - description: >- + If provided, the adjacent row will be one that matchesthe search + query. + in: query + name: search + schema: + type: string + - description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` + is used, then Postgres full-text search is used. If `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: search_mode + schema: + type: string + - description: Returns the row of the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + - description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + in: query + name: user_field_names + schema: + type: boolean + - description: Applies the filters and sorts of the provided view. + in: query + name: view_id + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsGetAdjacentRowResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsGetAdjacentRow404Response + /api/database/rows/table/{table_id}/{row_id}/history: + get: + tags: + - Database table rows + operationId: DatabaseTableRows_getRowChangeHistory + security: + - JWT: [] + description: >- + Fetches the row change history of a given row_id in the table with the + given table_id. The row change history is paginated and can be limited + with the limit and offset query parameters. + parameters: + - description: The maximum number of row change history entries to return. + in: query + name: limit + schema: + type: integer + - description: The offset of the row change history entries to return. + in: query + name: offset + schema: + type: integer + - description: The id of the row to fetch the change history from. + in: path + name: row_id + schema: + type: integer + required: true + - description: The id of the table to fetch the row change history from. + in: path + name: table_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerRowHistory' + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsGetRowChangeHistoryResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsGetRowChangeHistory404Response + /api/database/rows/table/{table_id}/{row_id}/move: + patch: + tags: + - Database table rows + operationId: DatabaseTableRows_moveRowTo + security: + - JWT: [] + - Database token: [] + description: >- + Moves the row related to given `row_id` parameter to another position. + It is only possible to move the row before another existing row or to + the end. If the `before_id` is provided then the row related to the + `row_id` parameter is moved before that row. If the `before_id` + parameter is not provided, then the row will be moved to the end. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + Moves the row related to the given `row_id` before the row related + to the provided value. If not provided, then the row will be moved + to the end. + in: query + name: before_id + schema: + type: integer + - description: Moves the row related to the value. + in: path + name: row_id + schema: + type: integer + required: true + - description: Moves the row in the table related to the value. + in: path + name: table_id + schema: + type: integer + required: true + - description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + in: query + name: user_field_names + schema: + type: boolean + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsMoveRowToResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsMoveRowTo401Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsMoveRowTo404Response' + /api/database/rows/table/{table_id}/batch: + post: + tags: + - Database table rows + operationId: DatabaseTableRows_createBatchRows + security: + - JWT: [] + - Database token: [] + description: >- + Creates new rows in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** to list them all. None of the fields are + required, if they are not provided the value is going to be `null` or + `false` or some default value is that is set. If you want to add a value + for the field with for example id `10`, the key must be named + `field_10`. Or instead if the `user_field_names` GET param is provided + the key must be the name of the field. Of course multiple fields can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + + **WARNING:** This endpoint doesn't yet work with row created webhooks. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + If provided then the newly created rows will be positioned before + the row with the provided id. + in: query + name: before + schema: + type: integer + - description: Creates the rows in the table. + in: path + name: table_id + schema: + type: integer + required: true + - description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + in: query + name: user_field_names + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsCreateBatchRowsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsCreateBatchRows401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsCreateBatchRows404Response + patch: + tags: + - Database table rows + operationId: DatabaseTableRows_updateBatchRows + security: + - JWT: [] + - Database token: [] + description: >- + Updates existing rows in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. None of the + fields are required, if they are not provided the value is not going to + be updated. When you want to update a value for the field with id `10`, + the key must be named `field_10`. Or if the GET parameter + `user_field_names` is provided the key of the field to update must be + the name of the field. Multiple different fields to update can be + provided for each row. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + + **WARNING:** This endpoint doesn't yet work with row updated webhooks. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the rows in the table. + in: path + name: table_id + schema: + type: integer + required: true + - description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + in: query + name: user_field_names + schema: + type: boolean + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsUpdateBatchRowsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsUpdateBatchRows401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsUpdateBatchRows404Response + /api/database/rows/table/{table_id}/batch-delete: + post: + tags: + - Database table rows + operationId: DatabaseTableRows_batchDelete + security: + - JWT: [] + - Database token: [] + description: >- + Deletes existing rows in the table if the user has access to the table's + workspace. + + **WARNING:** This endpoint doesn't yet work with row deleted webhooks. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the rows in the table related to the value. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsBatchDeleteResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsBatchDelete404Response' + /api/database/tables/{table_id}: + get: + tags: + - Database tables + operationId: DatabaseTables_getTable + security: + - JWT: [] + description: >- + Returns the requested table if the authorized user has access to the + related database's workspace. + parameters: + - description: Returns the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesGetTableResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesGetTable404Response' + patch: + tags: + - Database tables + operationId: DatabaseTables_updateTable + security: + - JWT: [] + description: >- + Updates the existing table if the authorized user has access to the + related database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesUpdateTableResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesUpdateTable404Response' + delete: + tags: + - Database tables + operationId: DatabaseTables_deleteTable + security: + - JWT: [] + description: >- + Deletes the existing table if the authorized user has access to the + related database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesDeleteTableResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesDeleteTable404Response' + /api/database/tables/{table_id}/duplicate/async: + post: + tags: + - Database tables + operationId: DatabaseTables_duplicateAsyncJob + security: + - JWT: [] + description: >- + Start a job to duplicate the table with the provided `table_id` + parameter if the authorized user has access to the database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: The table to duplicate. + in: path + name: table_id + schema: + type: integer + required: true + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateTableJobType' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesDuplicateAsyncJobResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTablesDuplicateAsyncJob404Response + /api/database/tables/{table_id}/import/async: + post: + tags: + - Database tables + operationId: DatabaseTables_importAsyncJob + security: + - JWT: [] + description: >- + Import data in the specified table if the authorized user has access to + the related database's workspace. This endpoint is asynchronous and + return the created job to track the progress of the task. + parameters: + - description: Import data into the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableImport' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableImport' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableImport' + required: true + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SingleFileImportJobSerializerClass' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesImportAsyncJobResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesImportAsyncJob404Response' + /api/database/tables/database/{database_id}: + get: + tags: + - Database tables + operationId: DatabaseTables_listByDatabaseId + security: + - JWT: [] + description: >- + Lists all the tables that are in the database related to the + `database_id` parameter if the user has access to the database's + workspace. A table is exactly as the name suggests. It can hold multiple + fields, each having their own type and multiple rows. They can be added + via the **create_database_table_field** and + **create_database_table_row** endpoints. + parameters: + - description: Returns only tables that are related to the provided value. + in: path + name: database_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesListByDatabaseIdResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesListByDatabaseId400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesListByDatabaseId404Response' + post: + tags: + - Database tables + operationId: DatabaseTables_createTable + security: + - JWT: [] + description: >- + Creates synchronously a new table for the database related to the + provided `database_id` parameter if the authorized user has access to + the database's workspace. + + + As an alternative you can use the `create_async_database_table` for + better performances and importing bigger files. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Creates a table for the database related to the provided value. + in: path + name: database_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableCreate' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesCreateTableResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesCreateTable404Response' + /api/database/tables/database/{database_id}/async: + post: + tags: + - Database tables + operationId: DatabaseTables_createTableJob + security: + - JWT: [] + description: >- + Creates a job that creates a new table for the database related to the + provided `database_id` parameter if the authorized user has access to + the database's workspace. This endpoint is asynchronous and return the + created job to track the progress of the task. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: Creates a table for the database related to the provided value. + in: path + name: database_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableCreate' + required: true + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SingleFileImportJobSerializerClass' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesCreateTableJobResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesCreateTableJob404Response' + /api/database/tables/database/{database_id}/order: + post: + tags: + - Database tables + operationId: DatabaseTables_updateTableOrder + security: + - JWT: [] + description: >- + Changes the order of the provided table ids to the matching position + that the id has in the list. If the authorized user does not belong to + the workspace it will be ignored. The order of the not provided tables + will be set to `0`. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + Updates the order of the tables in the database related to the + provided value. + in: path + name: database_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderTables' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderTables' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderTables' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesUpdateTableOrderResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTablesUpdateTableOrder404Response' + /api/database/tokens: + get: + tags: + - Database tokens + operationId: DatabaseTokens_list + security: + - JWT: [] + description: >- + Lists all the database tokens that belong to the authorized user. A + token can be used to create, read, update and delete rows in the tables + of the token's workspace. It only works on the tables if the token has + the correct permissions. The **Database table rows** endpoints can be + used for these operations. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTokensListResponse' + post: + tags: + - Database tokens + operationId: DatabaseTokens_createNewToken + security: + - JWT: [] + description: >- + Creates a new database token for a given workspace and for the + authorized user. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenCreate' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTokensCreateNewTokenResponse' + /api/database/tokens/{token_id}: + get: + tags: + - Database tokens + operationId: DatabaseTokens_getToken + security: + - JWT: [] + description: >- + Returns the requested database token if it is owned by the authorized + user andif the user has access to the related workspace. + parameters: + - description: Returns the database token related to the provided value. + in: path + name: token_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTokensGetTokenResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTokensGetToken404Response' + patch: + tags: + - Database tokens + operationId: DatabaseTokens_updateTokenOwnership + security: + - JWT: [] + description: >- + Updates the existing database token if it is owned by the authorized + user and ifthe user has access to the related workspace. + parameters: + - description: Updates the database token related to the provided value. + in: path + name: token_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTokensUpdateTokenOwnershipResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTokensUpdateTokenOwnership404Response + delete: + tags: + - Database tokens + operationId: DatabaseTokens_deleteToken + security: + - JWT: [] + description: >- + Deletes the existing database token if it is owned by the authorized + user and ifthe user has access to the related workspace. + parameters: + - description: Deletes the database token related to the provided value. + in: path + name: token_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTokensDeleteTokenResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTokensDeleteToken404Response' + /api/database/tokens/check: + get: + tags: + - Database tokens + operationId: DatabaseTokens_verifyTokenValidity + security: + - Database token: [] + description: >- + This endpoint check be used to check if the provided personal API token + is valid. If returns a `200` response if so and a `403` is not. This can + be used by integrations like Zapier or n8n to test if a token is valid. + responses: + '200': + description: No response body + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTokensVerifyTokenValidityResponse' + /api/database/views/{slug}/link-row-field-lookup/{field_id}: + get: + tags: + - Database table views + operationId: DatabaseTableViews_getLinkRowFieldValue + security: + - JWT: [] + - {} + description: >- + If the view is publicly shared or if an authenticated user has access to + the related workspace, then this endpoint can be used to do a value + lookup of the link row fields that are included in the view. Normally it + is not possible for a not authenticated visitor to fetch the rows of a + table. This endpoint makes it possible to fetch the id and primary field + value of the related table of a link row included in the view. + parameters: + - description: The field id of the link row field. + in: path + name: field_id + schema: + type: integer + required: true + - description: >- + If provided only rows with data that matches the search query are + going to be returned. + in: query + name: search + schema: + type: string + - description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` + is used, then Postgres full-text search is used. If `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: search_mode + schema: + type: string + - description: The slug related to the view. + in: path + name: slug + schema: + type: string + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerLinkRowValue' + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsGetLinkRowFieldValueResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsGetLinkRowFieldValue404Response + /api/database/views/{slug}/public/auth: + post: + tags: + - Database table views + operationId: DatabaseTableViews_generateToken + security: + - JWT: [] + - {} + description: >- + Returns a valid never-expiring JWT token for this public shared view if + the password provided matches with the one saved by the view's owner. + parameters: + - description: The slug of the grid view to get public information about. + in: path + name: slug + schema: + type: string + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewAuthResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsGenerateTokenResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsGenerateToken404Response + /api/database/views/{slug}/public/info: + get: + tags: + - Database table views + operationId: DatabaseTableViews_getPublicInfo + security: + - JWT: [] + - {} + description: Returns the required public information to display a single shared view. + parameters: + - description: The slug of the view to get public information about. + in: path + name: slug + schema: + type: string + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewInfo' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsGetPublicInfoResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsGetPublicInfo401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsGetPublicInfo404Response + /api/database/views/{view_id}: + get: + tags: + - Database table views + operationId: DatabaseTableViews_getViewById + security: + - JWT: [] + description: >- + Returns the existing view. Depending on the type different + propertiescould be returned. + parameters: + - description: >- + A comma separated list of extra attributes to include on the + returned view. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + in: query + name: include + schema: + type: string + - description: Returns the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsGetViewByIdResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsGetViewById404Response' + patch: + tags: + - Database table views + operationId: DatabaseTableViews_updateView + security: + - JWT: [] + description: >- + Updates the existing view. The type cannot be changed. It depends on the + existing type which properties can be changed. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + A comma separated list of extra attributes to include on the + returned view. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + in: query + name: include + schema: + type: string + - description: Updates the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsUpdateViewResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsUpdateView404Response' + delete: + tags: + - Database table views + operationId: DatabaseTableViews_deleteView + security: + - JWT: [] + description: >- + Deletes the existing view. Note that all the related settings of the + view are going to be deleted also. The data stays intact after deleting + the view because this is related to the table and not the view. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsDeleteViewResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsDeleteView404Response' + /api/database/views/{view_id}/decorations: + get: + tags: + - Database table view decorations + operationId: DatabaseTableViewDecorations_list + security: + - JWT: [] + description: >- + Lists all decorations of the view related to the provided `view_id` if + the user has access to the related database's workspace. A view can have + multiple decorations. View decorators can be used to decorate rows. This + can, for example, be used to change the border or background color of a + row if it matches certain conditions. + parameters: + - description: Returns only decoration of the view given to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewDecorationsListResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewDecorationsList400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewDecorationsList404Response + post: + tags: + - Database table view decorations + operationId: DatabaseTableViewDecorations_createNew + security: + - JWT: [] + description: >- + Creates a new decoration for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Creates a decoration for the view related to the given value. + in: path + name: view_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + multipart/form-data: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewDecorationsCreateNewResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewDecorationsCreateNew404Response + /api/database/views/{view_id}/duplicate: + post: + tags: + - Database table views + operationId: DatabaseTableViews_duplicateView + security: + - JWT: [] + description: >- + Duplicates an existing view if the user has access to it. When a view is + duplicated everything is copied except: + + - The name is appended with the copy number. Ex: + `ViewName`->`ViewName(2)` and `View(2)`->`View(3)` + + - If the original view is publicly shared, the new view will not be + shared anymore + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Duplicates the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsDuplicateViewResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsDuplicateView404Response + /api/database/views/{view_id}/field-options: + get: + tags: + - Database table views + operationId: DatabaseTableViews_getFieldOptions + security: + - JWT: [] + - {} + description: >- + Responds with the fields options of the provided view if the + authenticated user has access to the related workspace. + parameters: + - description: Responds with field options related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFieldOptions' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsGetFieldOptionsResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsGetFieldOptions404Response + patch: + tags: + - Database table views + operationId: DatabaseTableViews_updateFieldOptions + security: + - JWT: [] + description: >- + Updates the field options of a view. The field options differ per field + type This could for example be used to update the field width of a + `grid` view if the user changes it. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the field options related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFieldOptions' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsUpdateFieldOptionsResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsUpdateFieldOptions404Response + /api/database/views/{view_id}/filter-groups: + post: + tags: + - Database table view filters + operationId: DatabaseTableViewFilters_createNewFilterGroup + security: + - JWT: [] + description: >- + Creates a new filter group for the view related to the provided + `view_id` parameter. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: The ID of the view where create the new filter group. + in: path + name: view_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersCreateNewFilterGroupResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersCreateNewFilterGroup404Response + /api/database/views/{view_id}/filters: + get: + tags: + - Database table view filters + operationId: DatabaseTableViewFilters_getList + security: + - JWT: [] + description: >- + Lists all filters of the view related to the provided `view_id`. A view + can have multiple filters. When all the rows are requested for the view + only those that apply to the filters are returned. + parameters: + - description: Returns only filters of the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewFiltersGetListResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersGetList400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersGetList404Response + post: + tags: + - Database table view filters + operationId: DatabaseTableViewFilters_createNewFilter + security: + - JWT: [] + description: >- + Creates a new filter for the view related to the provided `view_id` + parameter. When the rows of a view are requested, for example via the + `list_database_table_grid_view_rows` endpoint, then only the rows that + apply to all the filters are going to be returned. A filter compares the + value of a field to the value of a filter. It depends on the type how + values are going to be compared. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Creates a filter for the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewFilter' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersCreateNewFilterResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersCreateNewFilter404Response + /api/database/views/{view_id}/group_bys: + get: + tags: + - Database table view groupings + operationId: DatabaseTableViewGroupings_list + security: + - JWT: [] + description: >- + Lists all groupings of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple groupings. + parameters: + - description: Returns only groupings of the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewGroupingsListResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewGroupingsList400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewGroupingsList404Response' + post: + tags: + - Database table view groupings + operationId: DatabaseTableViewGroupings_createNewGrouping + security: + - JWT: [] + description: >- + Creates a new group by for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Creates a group by for the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewGroupingsCreateNewGroupingResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewGroupingsCreateNewGrouping404Response + /api/database/views/{view_id}/rotate-slug: + post: + tags: + - Database table views + operationId: DatabaseTableViews_rotateSlug + security: + - JWT: [] + description: >- + Rotates the unique slug of the view by replacing it with a new value. + This would mean that the publicly shared URL of the view will change. + Anyone with the old URL won't be able to access the viewanymore. Only + view types which are sharable can have their slugs rotated. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Rotates the slug of the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsRotateSlugResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsRotateSlug404Response' + /api/database/views/{view_id}/sortings: + get: + tags: + - Database table view sortings + operationId: DatabaseTableViewSortings_list + security: + - JWT: [] + description: >- + Lists all sortings of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple sortings. When all the rows are requested they will be in the + desired order. + parameters: + - description: Returns only sortings of the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewSortingsListResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewSortingsList400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewSortingsList404Response' + post: + tags: + - Database table view sortings + operationId: DatabaseTableViewSortings_createNewSort + security: + - JWT: [] + description: >- + Creates a new sort for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. When the rows of a view are requested, for example via the + `list_database_table_grid_view_rows` endpoint, they will be returned in + the respected order defined by all the sortings. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Creates a sort for the view related to the provided value. + in: path + name: view_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewSort' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewSort' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewSort' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewSortingsCreateNewSortResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewSortingsCreateNewSort404Response + /api/database/views/calendar/{slug}/public/rows: + get: + tags: + - Database table calendar view + operationId: DatabaseTableCalendarView_getPublicRows + security: + - JWT: [] + - {} + 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. + + + This is a **premium** feature. + parameters: + - description: Restricts results based on the calendar date field. + in: query + name: from_timestamp + schema: + type: string + format: date-time + required: true + - description: >- + Defines how many rows should be returned by default. This value can + be overwritten per select option. + in: query + name: limit + schema: + type: integer + - description: >- + Defines from which offset the rows should be returned.This value can + be overwritten per select option. + in: query + name: offset + schema: + type: integer + - description: Returns only rows that belong to the related view. + in: path + name: slug + schema: + type: string + required: true + - description: Restricts results based on the calendar date field. + in: query + name: to_timestamp + schema: + type: string + format: date-time + required: true + - 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: query + name: user_timezone + schema: + type: string + default: UTC + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CalendarViewExampleResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableCalendarViewGetPublicRowsResponse + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableCalendarViewGetPublicRows401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableCalendarViewGetPublicRows404Response + /api/database/views/calendar/{view_id}: + get: + tags: + - Database table calendar view + operationId: DatabaseTableCalendarView_getGroupedRows + security: + - JWT: [] + - {} + 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: + - description: Restricts results based on the calendar date field. + in: query + name: from_timestamp + schema: + type: string + format: date-time + required: true + - 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: include + schema: + type: string + - description: Defines how many rows should be returned by default. + in: query + name: limit + schema: + type: integer + - description: Defines from which offset the rows should be returned. + in: query + name: offset + schema: + type: integer + default: 0 + - description: >- + If provided only rows with data that matches the search query are + going to be returned. + in: query + name: search + schema: + type: string + - description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` + is used, then Postgres full-text search is used. If `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: search_mode + schema: + type: string + - description: Restricts results based on the calendar date field. + in: query + name: to_timestamp + schema: + type: string + format: date-time + required: true + - 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: query + name: user_timezone + schema: + type: string + default: UTC + - description: Returns only rows that belong to the related view's table. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CalendarViewExampleResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableCalendarViewGetGroupedRowsResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableCalendarViewGetGroupedRows404Response + /api/database/views/decoration/{view_decoration_id}: + get: + tags: + - Database table view decorations + operationId: DatabaseTableViewDecorations_getViewDecoration + security: + - JWT: [] + description: >- + Returns the existing view decoration if the current user has access to + the related database's workspace. + parameters: + - description: Returns the view decoration related to the provided id. + in: path + name: view_decoration_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewDecorationsGetViewDecorationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewDecorationsGetViewDecoration404Response + patch: + tags: + - Database table view decorations + operationId: DatabaseTableViewDecorations_updateDecoration + security: + - JWT: [] + description: >- + Updates the existing decoration if the authorized user has access to the + related database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the view decoration related to the provided value. + in: path + name: view_decoration_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewDecorationsUpdateDecorationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewDecorationsUpdateDecoration404Response + delete: + tags: + - Database table view decorations + operationId: DatabaseTableViewDecorations_deleteExistingDecoration + security: + - JWT: [] + description: >- + Deletes the existing decoration if the authorized user has access to the + related database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the decoration related to the provided value. + in: path + name: view_decoration_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewDecorationsDeleteExistingDecorationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewDecorationsDeleteExistingDecoration404Response + /api/database/views/filter-group/{filter_group_id}: + get: + tags: + - Database table view filters + operationId: DatabaseTableViewFilters_getFilterGroupById + security: + - JWT: [] + description: >- + Returns the existing view filter group with the given + `view_filter_group_id`. + parameters: + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - description: Teh ID of the view filter group to return. + in: path + name: view_filter_group_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersGetFilterGroupByIdResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersGetFilterGroupById404Response + patch: + tags: + - Database table view filters + operationId: DatabaseTableViewFilters_updateFilterGroup + security: + - JWT: [] + description: Updates the existing filter group with the given `view_filter_group_id`. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - description: The ID of the view filter group to update. + in: path + name: view_filter_group_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersUpdateFilterGroupResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersUpdateFilterGroup404Response + delete: + tags: + - Database table view filters + operationId: DatabaseTableViewFilters_deleteFilterGroup + security: + - JWT: [] + description: Deletes the existing filter group with the given `view_filter_group_id`. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - description: The ID of the view filter group to delete. + in: path + name: view_filter_group_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersDeleteFilterGroupResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersDeleteFilterGroup404Response + /api/database/views/filter/{view_filter_id}: + get: + tags: + - Database table view filters + operationId: DatabaseTableViewFilters_getViewFilter + security: + - JWT: [] + description: Returns the existing view filter. + parameters: + - description: The ID of the view filter to return. + in: path + name: view_filter_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersGetViewFilterResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersGetViewFilter404Response + patch: + tags: + - Database table view filters + operationId: DatabaseTableViewFilters_updateExistingFilter + security: + - JWT: [] + description: Updates the existing filter. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: The ID of the view filter to update. + in: path + name: view_filter_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersUpdateExistingFilterResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersUpdateExistingFilter404Response + delete: + tags: + - Database table view filters + operationId: DatabaseTableViewFilters_deleteFilter + security: + - JWT: [] + description: >- + Deletes the existing filter if the authorized user has access to the + related database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: The ID of the view filter to delete. + in: path + name: view_filter_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersDeleteFilterResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewFiltersDeleteFilter404Response + /api/database/views/form/{slug}/submit: + get: + tags: + - Database table form view + operationId: DatabaseTableFormView_getFormMetadataBySlug + security: + - JWT: [] + - {} + description: >- + Returns the metadata related to the form view if the form is publicly + shared or if the user has access to the related workspace. This data can + be used to construct a form with the right fields. + parameters: + - description: The slug related to the form form. + in: path + name: slug + schema: + type: string + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PublicFormView' + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFormViewGetFormMetadataBySlugResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFormViewGetFormMetadataBySlug404Response + post: + tags: + - Database table form view + operationId: DatabaseTableFormView_submitForm + security: + - JWT: [] + - {} + description: >- + Submits the form if the form is publicly shared or if the user has + access to the related workspace. The provided data will be validated + based on the fields that are in the form and the rules per field. If + valid, a new row will be created in the table. + parameters: + - description: The slug related to the form. + in: path + name: slug + schema: + type: string + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/FormViewSubmitted' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableFormViewSubmitFormResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFormViewSubmitForm404Response + /api/database/views/form/{slug}/upload-file: + post: + tags: + - Database table form view + operationId: DatabaseTableFormView_uploadFile + security: + - JWT: [] + - {} + description: >- + Uploads a file anonymously to Baserow by uploading the file contents + directly. A `file` multipart is expected containing the file contents. + parameters: + - description: >- + Submits files only if the view with the provided slughas a public + file field. + in: path + name: slug + schema: + type: string + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableFormViewUploadFileResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFormViewUploadFile401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableFormViewUploadFile404Response + /api/database/views/gallery/{slug}/public/rows: + get: + tags: + - Database table gallery view + operationId: DatabaseTableGalleryView_listPublicRows + security: + - JWT: [] + - {} + description: >+ + Lists the requested rows of the view's table related to the provided + `slug` if the gallery view is public.The response is paginated either by + a limit/offset or page/size style. The style depends on the provided GET + parameters. The properties of the returned rows depends on which fields + the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. The value is what the user has provided + and the format of it depends on the fields type. + + parameters: + - description: If provided only the count will be returned. + in: query + name: count + schema: + type: boolean + - description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + in: query + name: exclude_fields + 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + in: query + name: filter__{field}__{filter} + 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: filter_type + 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + in: query + name: filters + schema: + type: string + - description: >- + A comma separated list allowing the values of `field_options` 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. + in: query + name: include + schema: + type: string + - description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + in: query + name: include_fields + schema: + type: string + - description: Defines how many rows should be returned. + in: query + name: limit + schema: + type: integer + - description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + in: query + name: offset + schema: + type: integer + - description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + in: query + name: order_by + schema: + type: string + - description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + in: query + name: page + schema: + type: integer + - description: >- + If provided only rows with data that matches the search query are + going to be returned. + in: query + name: search + schema: + type: string + - description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` + is used, then Postgres full-text search is used. If `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: search_mode + schema: + type: string + - description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + in: query + name: size + schema: + type: integer + - description: Returns only rows that belong to the related view. + in: path + name: slug + schema: + type: string + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/PublicPaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGalleryViewListPublicRowsResponse + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGalleryViewListPublicRows401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGalleryViewListPublicRows404Response + /api/database/views/gallery/{view_id}: + get: + tags: + - Database table gallery view + operationId: DatabaseTableGalleryView_listRowsByViewId + security: + - JWT: [] + - {} + description: >- + Lists the requested rows of the view's table related to the provided + `view_id` if the authorized user has access to the database's workspace. + The response is paginated by a limit/offset style. + parameters: + - description: If provided only the count will be returned. + in: query + name: count + schema: + type: boolean + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the + view filters saved for the view itself will be ignored. + in: query + name: filter__{field}__{filter} + 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: filter_type + 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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + in: query + name: filters + 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: include + schema: + type: string + - description: Defines how many rows should be returned. + in: query + name: limit + schema: + type: integer + - description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + in: query + name: offset + schema: + type: integer + - description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + in: query + name: order_by + schema: + type: string + - description: >- + If provided only rows with data that matches the search query are + going to be returned. + in: query + name: search + schema: + type: string + - description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` + is used, then Postgres full-text search is used. If `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: search_mode + schema: + type: string + - description: Returns only rows that belong to the related view's table. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGalleryViewListRowsByViewIdResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGalleryViewListRowsByViewId404Response + /api/database/views/grid/{slug}/public/rows: + get: + tags: + - Database table grid view + operationId: DatabaseTableGridView_listPublicRows + security: + - JWT: [] + - {} + description: >+ + Lists the requested rows of the view's table related to the provided + `slug` if the grid view is public.The response is paginated either by a + limit/offset or page/size style. The style depends on the provided GET + parameters. The properties of the returned rows depends on which fields + the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. The value is what the user has provided + and the format of it depends on the fields type. + + parameters: + - description: If provided only the count will be returned. + in: query + name: count + schema: + type: boolean + - description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + in: query + name: exclude_fields + 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + in: query + name: filter__{field}__{filter} + 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: filter_type + 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + in: query + name: filters + schema: + type: string + - description: >- + Optionally the rows can be grouped by provided field ids separated + by comma. By default no groups are applied. This doesn't actually + responds with the rows groups, this is just what's needed for the + Baserow group by feature. + in: query + name: group_by + schema: + type: string + - description: >- + A comma separated list allowing the values of `field_options` 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. + in: query + name: include + schema: + type: string + - description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + in: query + name: include_fields + schema: + type: string + - description: Defines how many rows should be returned. + in: query + name: limit + schema: + type: integer + - description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + in: query + name: offset + schema: + type: integer + - description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + in: query + name: order_by + schema: + type: string + - description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + in: query + name: page + schema: + type: integer + - description: >- + If provided only rows with data that matches the search query are + going to be returned. + in: query + name: search + schema: + type: string + - description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` + is used, then Postgres full-text search is used. If `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: search_mode + schema: + type: string + - description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + in: query + name: size + schema: + type: integer + - description: Returns only rows that belong to the related view. + in: path + name: slug + schema: + type: string + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/PublicPaginationSerializerWithGridViewFieldOptionsExampleRowResponse + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewListPublicRowsResponse + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewListPublicRows401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewListPublicRows404Response + /api/database/views/grid/{view_id}: + get: + tags: + - Database table grid view + operationId: DatabaseTableGridView_getViewRows + security: + - JWT: [] + - {} + description: >- + Lists the requested rows of the view's table related to the provided + `view_id` if the authorized user has access to the database's workspace. + The response is paginated either by a limit/offset or page/size style. + The style depends on the provided GET parameters. The properties of the + returned rows depends on which fields the table has. For a complete + overview of fields use the **list_database_table_fields** endpoint to + list them all. In the example all field types are listed, but normally + the number in field_{id} key is going to be the id of the field. The + value is what the user has provided and the format of it depends on the + fields type. + + + The filters and sortings are automatically applied. To get a full + overview of the applied filters and sortings you can use the + `list_database_table_view_filters` and + `list_database_table_view_sortings` endpoints. + parameters: + - description: If provided only the count will be returned. + in: query + name: count + schema: + type: boolean + - description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + in: query + name: exclude_fields + 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the + view filters saved for the view itself will be ignored. + in: query + name: filter__{field}__{filter} + 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: filter_type + 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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + in: query + name: filters + 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: include + schema: + type: string + - description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + in: query + name: include_fields + schema: + type: string + - description: Defines how many rows should be returned. + in: query + name: limit + schema: + type: integer + - description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + in: query + name: offset + schema: + type: integer + - description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + in: query + name: order_by + schema: + type: string + - description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + in: query + name: page + schema: + type: integer + - description: >- + If provided only rows with data that matches the search query are + going to be returned. + in: query + name: search + schema: + type: string + - description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` + is used, then Postgres full-text search is used. If `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: search_mode + schema: + type: string + - description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + in: query + name: size + schema: + type: integer + - description: Returns only rows that belong to the related view's table. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWithGridViewFieldOptionsExampleRowResponse + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableGridViewGetViewRowsResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewGetViewRows404Response + post: + tags: + - Database table grid view + operationId: DatabaseTableGridView_getFilteredData + security: + - JWT: [] + description: >- + Lists only the rows and fields that match the request. Only the rows + with the ids that are in the `row_ids` list are going to be returned. + Same goes for the fields, only the fields with the ids in the + `field_ids` are going to be returned. This endpoint could be used to + refresh data after changes something. For example in the web frontend + after changing a field type, the data of the related cells will be + refreshed using this endpoint. In the example all field types are + listed, but normally the number in field_{id} key is going to be the id + of the field. The value is what the user has provided and the format of + it depends on the fields type. + parameters: + - description: Returns only rows that belong to the related view's table. + in: path + name: view_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GridViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/GridViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/GridViewFilter' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewGetFilteredDataResponse + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewGetFilteredData400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewGetFilteredData404Response + /api/database/views/grid/{view_id}/aggregation/{field_id}: + get: + tags: + - Database table grid view + operationId: DatabaseTableGridView_computeAggregation + security: + - JWT: [] + - {} + description: >- + Computes the aggregation of all the values for a specified field from + the selected grid view. You must select the aggregation type by setting + the `type` GET parameter. If filters are configured for the selected + view, the aggregation is calculated only on filtered rows. You need to + have read permissions on the view to request an aggregation. + parameters: + - description: The field id you want to aggregate + in: path + name: field_id + schema: + type: integer + required: true + - description: >- + if `include` is set to `total`, the total row count will be returned + with the result. + in: query + name: include + schema: + type: string + - description: >- + The aggregation type you want. Available aggregation types: + empty_count, not_empty_count, unique_count, min, max, sum, average, + median, decile, variance, std_dev + in: query + name: type + schema: + type: string + - description: Select the view you want the aggregation for. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewComputeAggregationResponse + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewComputeAggregation400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewComputeAggregation404Response + /api/database/views/grid/{view_id}/aggregations: + get: + tags: + - Database table grid view + operationId: DatabaseTableGridView_getFieldAggregations + security: + - JWT: [] + - {} + description: >- + Returns all field aggregations values previously defined for this grid + view. If filters exist for this view, the aggregations are computed only + on filtered rows.You need to have read permissions on the view to + request aggregations. + parameters: + - description: >- + The aggregation 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the + view filters saved for the view itself will be ignored. + in: query + name: filter__{field}__{filter} + schema: + type: string + - description: >+ + `AND`: Indicates that the aggregated rows must match all the + provided filters. + + `OR`: Indicates that the aggregated 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: filter_type + schema: + type: string + - description: >- + A JSON serialized string containing the filter tree to apply for the + aggregation. The filter tree is a nested structure containing the + filters that need to be applied. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + in: query + name: filters + schema: + type: string + - description: >- + if `include` is set to `total`, the total row count will be returned + with the result. + in: query + name: include + schema: + type: string + - description: If provided the aggregations are calculated only for matching rows. + in: query + name: search + schema: + type: string + - description: >- + If provided, allows API consumers to determine what kind of search + experience they wish to have. If the default `full-text-with-count` + is used, then Postgres full-text search is used. If `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: search_mode + schema: + type: string + - description: Select the view you want the aggregations for. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewGetFieldAggregationsResponse + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewGetFieldAggregations400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableGridViewGetFieldAggregations404Response + /api/database/views/group_by/{view_group_by_id}: + get: + tags: + - Database table view groupings + operationId: DatabaseTableViewGroupings_getViewGroupBy + security: + - JWT: [] + description: >- + Returns the existing view group by if the authorized user has access to + the related database's workspace. + parameters: + - description: Returns the view group by related to the provided value. + in: path + name: view_group_by_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewGroupingsGetViewGroupByResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewGroupingsGetViewGroupBy404Response + patch: + tags: + - Database table view groupings + operationId: DatabaseTableViewGroupings_updateGroupBy + security: + - JWT: [] + description: >- + Updates the existing group by if the authorized user has access to the + related database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the view group by related to the provided value. + in: path + name: view_group_by_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewGroupingsUpdateGroupByResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewGroupingsUpdateGroupBy404Response + delete: + tags: + - Database table view groupings + operationId: DatabaseTableViewGroupings_deleteGroupBy + security: + - JWT: [] + description: >- + Deletes the existing group by if the authorized user has access to the + related database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the group by related to the provided value. + in: path + name: view_group_by_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewGroupingsDeleteGroupByResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewGroupingsDeleteGroupBy404Response + /api/database/views/kanban/{slug}/public/rows: + get: + tags: + - Database table kanban view + operationId: DatabaseTableKanbanView_getPublicRowsBySlug + security: + - JWT: [] + - {} + description: >- + Responds with serialized rows grouped by the view's single select field + options related to the `slug` if the kanban view is publicly shared. + Additional query parameters can be provided to control the `limit` and + `offset` per select option. + + + This is a **premium** feature. + parameters: + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + in: query + name: filter__{field}__{filter} + 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: filter_type + 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + in: query + name: filters + schema: + type: string + - description: >- + Defines how many rows should be returned by default. This value can + be overwritten per select option. + in: query + name: limit + schema: + type: integer + - description: >- + Defines from which offset the rows should be returned.This value can + be overwritten per select option. + in: query + name: offset + schema: + type: integer + - description: >- + Accepts multiple `select_option` parameters. If not provided, the + rows of all select options will be returned. If one or more + `select_option` parameters are provided, then only the rows of those + will be included in the response. + `?select_option=1&select_option=null` will only include the rows for + both select option with id `1` and `null`. `?select_option=1,10,20` + will only include the rows of select option id `1` with a limit of + `10` and and offset of `20`. + in: query + name: select_option + schema: + type: string + - description: Returns only rows that belong to the related view. + in: path + name: slug + schema: + type: string + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/KanbanViewExampleResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableKanbanViewGetPublicRowsBySlugResponse + '401': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableKanbanViewGetPublicRowsBySlug401Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableKanbanViewGetPublicRowsBySlug404Response + /api/database/views/kanban/{view_id}: + get: + tags: + - Database table kanban view + operationId: DatabaseTableKanbanView_getSerializedRowsByViewId + security: + - JWT: [] + - {} + description: >- + Responds with serialized rows grouped by the view's single select field + options if the user is authenticated and has access to the related + workspace. Additional query parameters can be provided to control the + `limit` and `offset` per select option. + + + This is a **premium** feature. + parameters: + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the + view filters saved for the view itself will be ignored. + in: query + name: filter__{field}__{filter} + 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: filter_type + 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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + in: query + name: filters + 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: include + schema: + type: string + - description: >- + Defines how many rows should be returned by default. This value can + be overwritten per select option. + in: query + name: limit + schema: + type: integer + - description: >- + Defines from which offset the rows should be returned.This value can + be overwritten per select option. + in: query + name: offset + schema: + type: integer + - description: >- + Accepts multiple `select_option` parameters. If not provided, the + rows of all select options will be returned. If one or more + `select_option` parameters are provided, then only the rows of those + will be included in the response. + `?select_option=1&select_option=null` will only include the rows for + both select option with id `1` and `null`. `?select_option=1,10,20` + will only include the rows of select option id `1` with a limit of + `10` and and offset of `20`. + in: query + name: select_option + schema: + type: string + - description: Returns only rows that belong to the related view's table. + in: path + name: view_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/KanbanViewExampleResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableKanbanViewGetSerializedRowsByViewIdResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableKanbanViewGetSerializedRowsByViewId404Response + /api/database/views/sort/{view_sort_id}: + get: + tags: + - Database table view sortings + operationId: DatabaseTableViewSortings_getSortById + security: + - JWT: [] + description: >- + Returns the existing view sort if the authorized user has access to the + related database's workspace. + parameters: + - description: Returns the view sort related to the provided value. + in: path + name: view_sort_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewSortingsGetSortByIdResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewSortingsGetSortById404Response + patch: + tags: + - Database table view sortings + operationId: DatabaseTableViewSortings_updateById + security: + - JWT: [] + description: >- + Updates the existing sort if the authorized user has access to the + related database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the view sort related to the provided value. + in: path + name: view_sort_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewSortingsUpdateByIdResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewSortingsUpdateById404Response + delete: + tags: + - Database table view sortings + operationId: DatabaseTableViewSortings_deleteById + security: + - JWT: [] + description: >- + Deletes the existing sort if the authorized user has access to the + related database's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the sort related to the provided value. + in: path + name: view_sort_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewSortingsDeleteByIdResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewSortingsDeleteById404Response + /api/database/views/table/{table_id}: + get: + tags: + - Database table views + operationId: DatabaseTableViews_listTableViews + security: + - JWT: [] + - {} + description: >- + Lists all views of the table related to the provided `table_id`. If the + workspace is related to a template, then this endpoint will be publicly + accessible. A table can have multiple views. Each view can display the + data in a different way. For example the `grid` view shows the in a + spreadsheet like way. That type has custom endpoints for data retrieval + and manipulation. In the future other views types like a calendar or + Kanban are going to be added. Each type can have different properties. + parameters: + - description: >- + A comma separated list of extra attributes to include on each view + in the response. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + in: query + name: include + schema: + type: string + - description: >- + The maximum amount of views that must be returned. This endpoint + doesn't support pagination, but if you for example just need to + fetch the first view, you can do that by setting a limit. There + isn't a limit by default. + in: query + name: limit + schema: + type: integer + - description: Returns only views of the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + - description: >- + Optionally filter on the view type. If provided, only views of that + type will be returned. + in: query + name: type + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsListTableViewsResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsListTableViews400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsListTableViews404Response + post: + tags: + - Database table views + operationId: DatabaseTableViews_createNewView + security: + - JWT: [] + description: >- + Creates a new view for the table related to the provided `table_id` + parameter. Depending on the type, different properties can optionally be + set. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + A comma separated list of extra attributes to include on each view + in the response. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + in: query + name: include + schema: + type: string + - description: Creates a view for the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ViewCreateView' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ViewCreateView' + multipart/form-data: + schema: + $ref: '#/components/schemas/ViewCreateView' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableViewsCreateNewViewResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsCreateNewView404Response + /api/database/views/table/{table_id}/order: + post: + tags: + - Database table views + operationId: DatabaseTableViews_reorderTableOrder + security: + - JWT: [] + description: >- + Changes the order of the provided view ids to the matching position that + the id has in the list. The order of the not provided views will be set + to `0`. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + Updates the order of the views in the table related to the provided + value. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderViews' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderViews' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderViews' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsReorderTableOrderResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableViewsReorderTableOrder404Response + /api/database/webhooks/{webhook_id}: + get: + tags: + - Database table webhooks + operationId: DatabaseTableWebhooks_getExistingWebhook + security: + - JWT: [] + description: >- + Returns the existing webhook if the authorized user has access to the + related database workspace. + parameters: + - description: Returns the webhook related to the provided value. + in: path + name: webhook_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableWebhooksGetExistingWebhookResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableWebhooksGetExistingWebhook404Response + patch: + tags: + - Database table webhooks + operationId: DatabaseTableWebhooks_updateView + security: + - JWT: [] + description: >- + Updates the existing view if the authorized user has access to the + related database workspace. + parameters: + - description: Updates the webhook related to the provided value. + in: path + name: webhook_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableWebhooksUpdateViewResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableWebhooksUpdateView404Response + delete: + tags: + - Database table webhooks + operationId: DatabaseTableWebhooks_deleteWebhook + security: + - JWT: [] + description: >- + Deletes the existing webhook if the authorized user has access to the + related database's workspace. + parameters: + - description: Deletes the webhook related to the provided value. + in: path + name: webhook_id + schema: + type: integer + required: true + responses: + '200': + description: OK + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableWebhooksDeleteWebhookResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableWebhooksDeleteWebhook404Response + /api/database/webhooks/table/{table_id}: + get: + tags: + - Database table webhooks + operationId: DatabaseTableWebhooks_list + security: + - JWT: [] + description: >- + Lists all webhooks of the table related to the provided `table_id` if + the user has access to the related database workspace. + parameters: + - description: Returns only webhooks of the table related to this value. + in: path + name: table_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableWebhooksListResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableWebhooksList400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableWebhooksList404Response' + post: + tags: + - Database table webhooks + operationId: DatabaseTableWebhooks_createWebhook + security: + - JWT: [] + description: >- + Creates a new webhook for the table related to the provided `table_id` + parameter if the authorized user has access to the related database + workspace. + parameters: + - description: Creates a webhook for the table related to the provided value. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableWebhooksCreateWebhookResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableWebhooksCreateWebhook404Response + /api/database/webhooks/table/{table_id}/test-call: + post: + tags: + - Database table webhooks + operationId: DatabaseTableWebhooks_triggerTestCall + security: + - JWT: [] + description: >- + This endpoint triggers a test call based on the provided data if the + user has access to the workspace related to the table. The test call + will be made immediately and a copy of the request, response and status + will be included in the response. + parameters: + - description: The id of the table that must be tested. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookTestCallResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableWebhooksTriggerTestCallResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableWebhooksTriggerTestCall404Response + /api/groups: + get: + tags: + - Groups + operationId: list_groups + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the groups of the authorized user. A group can contain multiple applications like a database. Multiple users can have access to a group. For example each company could have their own group containing databases related to that company. The order of the groups are custom for each user. The order is configurable via the **order_groups** endpoint. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListGroupsResponse' + deprecated: true + post: + tags: + - Groups + operationId: create_group + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [create_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new group where only the authorized user has access to. No initial data like database applications are added, they have to be created via other endpoints. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Workspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/Workspace' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + deprecated: true + /api/groups/{group_id}: + patch: + tags: + - Groups + operationId: update_group + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Updates the existing group related to the provided `group_id` parameter if the authorized user belongs to the group. It is not yet possible to add additional users to a group. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the group related to the provided value. + in: path + name: group_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateGroupResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateGroup404Response' + deprecated: true + delete: + tags: + - Groups + operationId: delete_group + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes an existing group if the authorized user belongs to the group. All the applications, databases, tables etc that were in the group are going to be deleted also. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the group related to the provided value. + in: path + name: group_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteGroupResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteGroup404Response' + deprecated: true + /api/groups/{group_id}/leave: + post: + tags: + - Groups + operationId: leave_group + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [leave_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Makes the authenticated user leave the group related to the provided `group_id` if the user is in that group. If the user is the last admin in the group, they will not be able to leave it. There must always be one admin in the group, otherwise it will be left without control. If that is the case, they must either delete the group or give another member admin permissions first. + parameters: + - description: Leaves the group related to the value. + in: path + name: group_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LeaveGroupResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LeaveGroup404Response' + deprecated: true + /api/groups/{group_id}/permissions: + get: + tags: + - Groups + operationId: group_permissions + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_permissions](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns a the permission data necessary to determine the permissions of a specific user over a specific group. + See `core.handler.CoreHandler.get_permissions()` for more details. + parameters: + - description: The group id we want the permission object for. + in: path + name: group_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupPermissionsResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupPermissions404Response' + deprecated: true + /api/groups/invitations/{group_invitation_id}: + get: + tags: + - Group invitations + operationId: GroupInvitations_getById + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [get_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns the requested group invitation if the authorized user has admin right to the related group + parameters: + - description: Returns the group invitation related to the provided value. + in: path + name: group_invitation_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupInvitationsGetByIdResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupInvitationsGetById404Response' + deprecated: true + patch: + tags: + - Group invitations + operationId: GroupInvitations_updateRelatedInvitation + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Updates the existing group invitation related to the provided `group_invitation_id` param if the authorized user has admin rights to the related group. + parameters: + - description: Updates the group invitation related to the provided value. + in: path + name: group_invitation_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/GroupInvitationsUpdateRelatedInvitationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/GroupInvitationsUpdateRelatedInvitation404Response + deprecated: true + delete: + tags: + - Group invitations + operationId: GroupInvitations_deleteInvitation + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes a group invitation if the authorized user has admin rights to the related group. + parameters: + - description: Deletes the group invitation related to the provided value. + in: path + name: group_invitation_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupInvitationsDeleteInvitationResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/GroupInvitationsDeleteInvitation404Response + deprecated: true + /api/groups/invitations/{group_invitation_id}/accept: + post: + tags: + - Group invitations + operationId: GroupInvitations_acceptGroupInvitation + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [accept_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Accepts a group invitation with the given id if the email address of the user matches that of the invitation. + parameters: + - description: Accepts the group invitation related to the provided value. + in: path + name: group_invitation_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/GroupInvitationsAcceptGroupInvitationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/GroupInvitationsAcceptGroupInvitation404Response + deprecated: true + /api/groups/invitations/{group_invitation_id}/reject: + post: + tags: + - Group invitations + operationId: GroupInvitations_rejectGroupInvitation + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [reject_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Rejects a group invitation with the given id if the email address of the user matches that of the invitation. + parameters: + - description: Rejects the group invitation related to the provided value. + in: path + name: group_invitation_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/GroupInvitationsRejectGroupInvitationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/GroupInvitationsRejectGroupInvitation404Response + deprecated: true + /api/groups/invitations/group/{group_id}: + get: + tags: + - Group invitations + operationId: GroupInvitations_listForGroup + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspace_invitations](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the group invitations of the group related to the provided `group_id` parameter if the authorized user has admin rights to that group. + parameters: + - description: >- + Returns only invitations that are in the group related to the + provided value. + in: path + name: group_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupInvitationsListForGroupResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupInvitationsListForGroup400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupInvitationsListForGroup404Response' + deprecated: true + post: + tags: + - Group invitations + operationId: GroupInvitations_createNewInvitation + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [create_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new group invitations for an email address if the authorized user has admin rights to the related group. An email containing a sign up link will be send to the user. + parameters: + - description: >- + Creates a group invitation to the group related to the provided + value. + in: path + name: group_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/GroupInvitationsCreateNewInvitationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/GroupInvitationsCreateNewInvitation404Response + deprecated: true + /api/groups/invitations/token/{token}: + get: + tags: + - Group invitations + operationId: GroupInvitations_findByToken + security: + - JWT: [] + - {} + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [get_workspace_invitation_by_token](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Responds with the serialized group invitation if an invitation with the provided token is found. + parameters: + - description: Returns the group invitation related to the provided token. + in: path + name: token + schema: + type: string + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserWorkspaceInvitation' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupInvitationsFindByTokenResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupInvitationsFindByToken404Response' + deprecated: true + /api/groups/order: + post: + tags: + - Groups + operationId: order_groups + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [order_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Changes the order of the provided group ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order will be custom for each user. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + required: true + responses: + '204': + description: No response body + deprecated: true + /api/groups/users/{group_user_id}: + patch: + tags: + - Groups + operationId: Groups_updateGroupUser + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace_user](https://api.baserow.io).** + + Updates the existing group user related to the provided `group_user_id` param if the authorized user has admin rights to the related group. + parameters: + - description: Updates the group user related to the provided value. + in: path + name: group_user_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUser' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupsUpdateGroupUserResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupsUpdateGroupUser404Response' + deprecated: true + delete: + tags: + - Groups + operationId: Groups_deleteGroupUser + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace_user](https://api.baserow.io).** + + Deletes a group user if the authorized user has admin rights to the related group. + parameters: + - description: Deletes the group user related to the provided value. + in: path + name: group_user_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupsDeleteGroupUserResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupsDeleteGroupUser404Response' + deprecated: true + /api/groups/users/group/{group_id}: + get: + tags: + - Groups + operationId: Groups_listGroupUsers + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspace_users](https://api.baserow.io).** + + Lists all the users that are in a group if the authorized user has admin permissions to the related group. To add a user to a group an invitation must be sent first. + parameters: + - description: Lists group users related to the provided group value. + in: path + name: group_id + schema: + type: integer + required: true + - description: Search for group users by username, or email. + in: query + name: search + schema: + type: string + - description: Sort group users by name, email or role. + in: query + name: sorts + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupsListGroupUsersResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupsListGroupUsers400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GroupsListGroupUsers404Response' + deprecated: true + /api/integration/{integration_id}: + patch: + tags: + - Integrations + operationId: Integrations_updateExistingIntegration + security: + - JWT: [] + description: Updates an existing integration. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the integration + in: path + name: integration_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/IntegrationsUpdateExistingIntegrationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/IntegrationsUpdateExistingIntegration404Response + delete: + tags: + - Integrations + operationId: Integrations_deleteById + security: + - JWT: [] + description: Deletes the integration related by the given id. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the integration + in: path + name: integration_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationsDeleteByIdResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationsDeleteById404Response' + /api/integration/{integration_id}/move: + patch: + tags: + - Integrations + operationId: Integrations_moveIntegration + security: + - JWT: [] + description: >- + Moves the integration in the application before another integration or + at the end of the application if no before integration is given. The + integrations must belong to the same application. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the integration to move + in: path + name: integration_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationsMoveIntegrationResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationsMoveIntegration404Response' + /api/jobs: + get: + tags: + - Jobs + operationId: list_job + security: + - JWT: [] + description: >- + List all existing jobs. Jobs are task executed asynchronously in the + background. You can use the `get_job` endpoint to read the + currentprogress of a the job. + parameters: + - description: >- + A comma separated list of job ids in the desired order.The jobs will + be returned in the same order as the ids.If a job id is not found it + will be ignored. + in: query + name: job_ids + schema: + type: string + - description: >- + A comma separated list of jobs state to look for. The only possible + values are: `pending`, `finished` and `failed`. It's possible to + exclude a state by prefixing it with a `!`. + in: query + name: states + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListJobResponse' + post: + tags: + - Jobs + operationId: create_job + security: + - JWT: [] + description: >- + Creates a new job. This job runs asynchronously in the background and + execute the task specific to the provided typeparameters. The `get_job` + can be used to get the current state of the job. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + multipart/form-data: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeJob' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateJobResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateJob404Response' + /api/jobs/{job_id}: + get: + tags: + - Jobs + operationId: get_job + security: + - JWT: [] + description: >- + Returns the information related to the provided job id. This endpoint + can for example be polled to get the state and progress of the job in + real time. + parameters: + - description: The job id to lookup information about. + in: path + name: job_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeJob' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetJobResponse' + /api/licenses: + get: + tags: + - Admin + operationId: admin_licenses + security: + - JWT: [] + description: >- + Lists all the valid licenses that are registered to this instance. A + premium license can be used to unlock the premium features for a fixed + amount of users. An enterprise license can similarly be used to unlock + enterpise features. More information about self hosted licenses can be + found on our pricing page https://baserow.io/pricing. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminLicensesResponse' + post: + tags: + - Admin + operationId: Admin_registerLicense + security: + - JWT: [] + description: >- + Registers a new license. After registering you can assign users to the + license that will be able to use the license's features while the + license is active. If an existing license with the same `license_id` + already exists and the provided license has been issued later than that + one, the existing one will be upgraded. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RegisterLicense' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RegisterLicense' + multipart/form-data: + schema: + $ref: '#/components/schemas/RegisterLicense' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/License' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegisterLicenseResponse' + /api/licenses/{id}: + get: + tags: + - Admin + operationId: Admin_getLicenseDetails + security: + - JWT: [] + description: >- + Responds with detailed information about the license related to the + provided parameter. + parameters: + - description: The internal identifier of the license. + in: path + name: id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseWithUsers' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminGetLicenseDetailsResponse' + delete: + tags: + - Admin + operationId: Admin_removeLicense + security: + - JWT: [] + description: >- + Removes the existing license related to the provided parameter. If the + license is active, then all the users that are using the license will + lose access to the features granted by that license. + parameters: + - description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + in: path + name: id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRemoveLicenseResponse' + /api/licenses/{id}/{user_id}: + post: + tags: + - Admin + operationId: Admin_addUserToLicense + security: + - JWT: [] + description: >- + Adds the user related to the provided parameter and to the license + related to the parameter. This only happens if there are enough seats + left on the license and if the user is not already on the license. + parameters: + - description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + in: path + name: id + schema: + type: integer + required: true + - description: The ID of the user that must be added to the license. + in: path + name: user_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseUser' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminAddUserToLicenseResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminAddUserToLicense404Response' + delete: + tags: + - Admin + operationId: Admin_removeUserFromLicense + security: + - JWT: [] + description: >- + Removes the user related to the provided parameter and to the license + related to the parameter. This only happens if the user is on the + license, otherwise nothing will happen. + parameters: + - description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + in: path + name: id + schema: + type: integer + required: true + - description: The ID of the user that must be removed from the license. + in: path + name: user_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRemoveUserFromLicenseResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRemoveUserFromLicense404Response' + /api/licenses/{id}/check: + get: + tags: + - Admin + operationId: Admin_checkLicenseStatus + security: + - JWT: [] + description: >- + This endpoint checks with the authority if the license needs to be + updated. It also checks if the license is operating within its limits + and might take action on that. It could also happen that the license has + been deleted because there is an instance id mismatch or because it's + invalid. In that case a `204` status code is returned. + parameters: + - description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + in: path + name: id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseWithUsers' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCheckLicenseStatusResponse' + /api/licenses/{id}/fill-seats: + post: + tags: + - Admin + operationId: Admin_fillSeatsLicense + security: + - JWT: [] + description: >- + Fills the remaining empty seats of the license with the first users that + are found. + parameters: + - description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + in: path + name: id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminFillSeatsLicenseResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminFillSeatsLicense400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminFillSeatsLicense404Response' + /api/licenses/{id}/lookup-users: + get: + tags: + - Admin + operationId: Admin_lookupUsers + security: + - JWT: [] + description: >- + This endpoint can be used to lookup users that can be added to a + license. Users that are already in the license are not returned here. + Optionally a `search` query parameter can be provided to filter the + results. + parameters: + - description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + in: path + name: id + schema: + type: integer + required: true + - description: Defines which page of users should be returned. + in: query + name: page + schema: + type: integer + - description: >- + If provided, only users where the name or email contains the value + are returned. + in: query + name: search + schema: + type: string + - description: Defines how many users should be returned per page. + in: query + name: size + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerLicenseUserLookup' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminLookupUsersResponse' + /api/licenses/{id}/remove-all-users: + post: + tags: + - Admin + operationId: Admin_removeAllUsers + security: + - JWT: [] + description: >- + Removes all the users that are on the license. This will empty all the + seats. + parameters: + - description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + in: path + name: id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRemoveAllUsersResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRemoveAllUsers404Response' + /api/notifications/{workspace_id}: + get: + tags: + - Notifications + operationId: Notifications_listForWorkspaceAndUser + security: + - JWT: [] + description: >- + Lists the notifications for the given workspace and the current user. + The response is paginated and the limit and offset parameters can be + controlled using the query parameters. + parameters: + - description: Defines how many notifications should be returned. + in: query + name: limit + schema: + type: integer + - description: Defines the offset of the notifications that should be returned. + in: query + name: offset + schema: + type: integer + - description: The workspace id that the notifications belong to. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerNotificationRecipient' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/NotificationsListForWorkspaceAndUserResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/NotificationsListForWorkspaceAndUser404Response + delete: + tags: + - Notifications + operationId: Notifications_clearWorkspaceNotifications + security: + - JWT: [] + description: Clear all the notifications for the given workspace and user. + parameters: + - description: The workspace the notifications are in. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/NotificationsClearWorkspaceNotificationsResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/NotificationsClearWorkspaceNotifications404Response + /api/notifications/{workspace_id}/{notification_id}: + patch: + tags: + - Notifications + operationId: Notifications_markAsRead + security: + - JWT: [] + description: Marks a notification as read. + parameters: + - description: The notification id to update. + in: path + name: notification_id + schema: + type: integer + required: true + - description: The workspace the notification is in. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationRecipient' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationsMarkAsReadResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationsMarkAsRead404Response' + /api/notifications/{workspace_id}/mark-all-as-read: + post: + tags: + - Notifications + operationId: Notifications_markAllAsRead + security: + - JWT: [] + description: Mark as read all the notifications for the given workspace and user. + parameters: + - description: The workspace the notifications are in. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationsMarkAllAsReadResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationsMarkAllAsRead404Response' + /api/role/{group_id}: + get: + tags: + - Role assignments + operationId: RoleAssignments_listWithinGroup + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can list the role assignments within a group, optionally filtered down to a specific scope inside of that group. If the scope isn't specified,the group will be considered the scope. + parameters: + - description: The group in which the role assignments are related to. + in: path + name: group_id + schema: + type: integer + required: true + - description: The id of the scope you are trying to get all roleassignments for. + in: query + name: scope_id + schema: + type: integer + - description: The type of scope you are trying to get all roleassignments for. + in: query + name: scope_type + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RoleAssignmentsListWithinGroupResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RoleAssignmentsListWithinGroup400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RoleAssignmentsListWithinGroup404Response' + deprecated: true + post: + tags: + - Role assignments + operationId: RoleAssignments_assignRoleToGroup + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can assign a role to a subject into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property. + parameters: + - description: The group in which the role assignment takes place. + in: path + name: group_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/OpenApiRoleAssignment' + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RoleAssignmentsAssignRoleToGroupResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/RoleAssignmentsAssignRoleToGroup404Response + deprecated: true + /api/role/{group_id}/batch: + post: + tags: + - Role assignments + operationId: RoleAssignments_assignMultipleSubjectsToGroup + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_batch_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can assign a role to a multiple subjects into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property. + parameters: + - description: The group in which the role assignment takes place. + in: path + name: group_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/RoleAssignmentsAssignMultipleSubjectsToGroupResponse + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/RoleAssignmentsAssignMultipleSubjectsToGroup400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/RoleAssignmentsAssignMultipleSubjectsToGroup404Response + deprecated: true + /api/role/{workspace_id}: + get: + tags: + - Role assignments + operationId: RoleAssignments_listWithinWorkspaceScope + security: + - JWT: [] + description: >- + You can list the role assignments within a workspace, optionally + filtered downto a specific scope inside of that workspace. If the scope + isn't specified,the workspace will be considered the scope. + parameters: + - description: The id of the scope you are trying to get all roleassignments for. + in: query + name: scope_id + schema: + type: integer + - description: The type of scope you are trying to get all roleassignments for. + in: query + name: scope_type + schema: + type: string + - description: The workspace in which the role assignments are related to. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/RoleAssignmentsListWithinWorkspaceScopeResponse + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/RoleAssignmentsListWithinWorkspaceScope400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/RoleAssignmentsListWithinWorkspaceScope404Response + post: + tags: + - Role assignments + operationId: assign_role + security: + - JWT: [] + description: >- + You can assign a role to a subject into the given workspace for the + given scope with this endpoint. If you want to remove the role you can + omit the role property. + parameters: + - description: The workspace in which the role assignment takes place. + in: path + name: workspace_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/OpenApiRoleAssignment' + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AssignRoleResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AssignRole404Response' + /api/role/{workspace_id}/batch: + post: + tags: + - Role assignments + operationId: RoleAssignments_assignRoleToGroup + security: + - JWT: [] + description: >- + You can assign a role to a multiple subjects into the given workspace + for the given scopes with this endpoint. If you want to remove the role + you can omit the role property. + parameters: + - description: The workspace in which the role assignment takes place. + in: path + name: workspace_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/RoleAssignmentsAssignRoleToGroup200Response + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/RoleAssignmentsAssignRoleToGroup400Response + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/RoleAssignmentsAssignRoleToGroup404Response + /api/row_comments/{table_id}/{row_id}: + get: + tags: + - Database table rows + operationId: DatabaseTableRows_getAllComments + security: + - JWT: [] + description: |- + Returns all row comments for the specified table and row. + + This is a **premium** feature. + parameters: + - description: Defines how many rows should be returned. + in: query + name: limit + schema: + type: integer + - description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + in: query + name: offset + schema: + type: integer + - description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + in: query + name: page + schema: + type: integer + - description: The row to get row comments for. + in: path + name: row_id + schema: + type: integer + required: true + - description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + in: query + name: size + schema: + type: integer + - description: The table the row is in. + in: path + name: table_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerRowComment' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsGetAllCommentsResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsGetAllComments404Response + post: + tags: + - Database table rows + operationId: DatabaseTableRows_createComment + security: + - JWT: [] + description: |- + Creates a comment on the specified row. + + This is a **premium** feature. + parameters: + - description: The row to create a comment for. + in: path + name: row_id + schema: + type: integer + required: true + - description: The table to find the row to comment on in. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RowCommentCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RowCommentCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/RowCommentCreate' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsCreateCommentResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsCreateComment404Response' + /api/row_comments/{table_id}/{row_id}/notification-mode: + put: + tags: + - Database table rows + operationId: DatabaseTableRows_updateNotificationMode + security: + - JWT: [] + description: >- + Updates the user's notification preferences for comments made on a + specified table row. + + + This is a **premium** feature. + parameters: + - description: The row on which to manage the comment subscription. + in: path + name: row_id + schema: + type: integer + required: true + - description: The table id where the row is in. + in: path + name: table_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + multipart/form-data: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsUpdateNotificationModeResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/DatabaseTableRowsUpdateNotificationMode404Response + /api/row_comments/{table_id}/comment/{comment_id}: + patch: + tags: + - Database table rows + operationId: DatabaseTableRows_updateComment + security: + - JWT: [] + description: |- + Update a row comment. + + This is a **premium** feature. + parameters: + - description: The row comment to update. + in: path + name: comment_id + schema: + type: integer + required: true + - description: The table the row is in. + in: path + name: table_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsUpdateCommentResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsUpdateComment401Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsUpdateComment404Response' + delete: + tags: + - Database table rows + operationId: DatabaseTableRows_deleteComment + security: + - JWT: [] + description: |- + Delete a row comment. + + This is a **premium** feature. + parameters: + - description: The row comment to delete. + in: path + name: comment_id + schema: + type: integer + required: true + - description: The table the row is in. + in: path + name: table_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsDeleteCommentResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsDeleteComment401Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseTableRowsDeleteComment404Response' + /api/settings: + get: + tags: + - Settings + operationId: get_settings + description: Responds with all the admin configured settings. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Settings' + /api/settings/instance-id: + get: + tags: + - Settings + operationId: Settings_getInstanceId + security: + - JWT: [] + description: >- + Responds with the self hosted instance id. Only a user with staff + permissions can request it. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/InstanceId' + /api/settings/update: + patch: + tags: + - Settings + operationId: update_settings + security: + - JWT: [] + description: Updates the admin configured settings if the user has admin permissions. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedSettings' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedSettings' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedSettings' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Settings' + /api/snapshots/{snapshot_id}: + delete: + tags: + - Snapshots + operationId: delete_snapshot + security: + - JWT: [] + description: >- + Deletes a snapshot. Deleting a snapshot doesn't affect the application + that the snapshot is made from and doesn't affect any applications that + were created by restoring it. Snapshot deletion is permanent and can't + be undone. + parameters: + - description: Id of the snapshot to delete. + in: path + name: snapshot_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteSnapshotResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteSnapshot404Response' + /api/snapshots/{snapshot_id}/restore: + post: + tags: + - Snapshots + operationId: restore_snapshot + security: + - JWT: [] + description: >- + Restores a snapshot. When an application snapshot is restored, a new + application will be created in the same workspace that the original + application was placed in with the name of the snapshot and data that + were in the original application at the time the snapshot was taken. The + original application that the snapshot was taken from is unaffected. + Snapshots can be restored multiple times and a number suffix is added to + the new application name in the case of a collision. + parameters: + - description: Id of the snapshot to restore. + in: path + name: snapshot_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Job' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RestoreSnapshotResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RestoreSnapshot404Response' + /api/snapshots/application/{application_id}: + get: + tags: + - Snapshots + operationId: list_snapshots + security: + - JWT: [] + description: Lists snapshots that were created for a given application. + parameters: + - description: Application ID for which to list snapshots. + in: path + name: application_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListSnapshotsResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListSnapshots400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListSnapshots404Response' + post: + tags: + - Snapshots + operationId: create_snapshot + security: + - JWT: [] + description: >- + Creates a new application snapshot. Snapshots represent a state of an + application at a specific point in time and can be restored later, + making it easy to create backups of entire applications. + parameters: + - description: Application ID for which to list snapshots. + in: path + name: application_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Snapshot' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Snapshot' + multipart/form-data: + schema: + $ref: '#/components/schemas/Snapshot' + required: true + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Job' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSnapshotResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSnapshot404Response' + /api/sso/oauth2/callback/{provider_id}: + get: + tags: + - Auth + operationId: Auth_completeProviderCallback + description: >- + Processes callback from OAuth2 provider and logs the user in if + successful. + parameters: + - description: The id of the provider for which to process the callback. + in: query + name: code + schema: + type: integer + - description: The id of the provider for which to process the callback. + in: path + name: provider_id + schema: + type: integer + required: true + responses: + default: + description: No response body + /api/sso/oauth2/login/{provider_id}: + get: + tags: + - Auth + operationId: Auth_redirectToProvider + description: >- + Redirects to the OAuth2 provider's authentication URL based on the + provided auth provider's id. + parameters: + - description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future. + in: query + name: group_invitation_token + schema: + type: string + deprecated: true + - description: The relative part of URL that the user wanted to access. + in: query + name: original + schema: + type: integer + - description: The id of the provider for redirect. + in: path + name: provider_id + schema: + type: integer + required: true + - description: The invitation token sent to the user to join a specific workspace. + in: query + name: workspace_invitation_token + schema: + type: string + responses: + default: + description: No response body + /api/sso/saml/acs: + post: + tags: + - Auth + operationId: Auth_completeSamlAuthenticationFlow + description: >- + Complete the SAML authentication flow by validating the SAML response. + Sign in the user if already exists in Baserow or create a new one + otherwise. Once authenticated, the user will be redirected to the + original URL they were trying to access. If the response is invalid, the + user will be redirected to an error page with a specific error + message.It accepts the language code and the workspace invitation token + as query parameters if provided. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SAMLResponse' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SAMLResponse' + multipart/form-data: + schema: + $ref: '#/components/schemas/SAMLResponse' + required: true + responses: + default: + description: No response body + /api/sso/saml/login: + get: + tags: + - Auth + operationId: Auth_initiateSsoSamlLogin + description: >- + This is the endpoint that is called when the user wants to initiate a + SSO SAML login from Baserow (the service provider). The user will be + redirected to the SAML identity provider (IdP) where the user can + authenticate. Once logged in in the IdP, the user will be redirected + back to the assertion consumer service endpoint (ACS) where the SAML + response will be validated and a new JWT session token will be provided + to work with Baserow APIs. + parameters: + - description: The email address of the user that want to sign in using SAML. + in: query + name: email + schema: + type: string + - description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future + in: query + name: group_invitation_token + schema: + type: string + deprecated: true + - description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + in: query + name: language + schema: + type: string + - description: >- + The url to which the user should be redirected after a successful + login or sign up. + in: query + name: original + schema: + type: string + - description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after login or signing up. + in: query + name: workspace_invitation_token + schema: + type: string + responses: + default: + description: No response body + /api/sso/saml/login-url: + get: + tags: + - Auth + operationId: Auth_getSamlLoginUrl + description: >- + Return the correct redirect_url to initiate the SSO SAML login. It needs + an email address if multiple SAML providers are configured otherwise the + only configured SAML provider signup URL will be returned. + parameters: + - description: The email address of the user that want to sign in using SAML. + in: query + name: email + schema: + type: string + - description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future. + in: query + name: group_invitation_token + schema: + type: string + deprecated: true + - description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + in: query + name: language + schema: + type: string + - description: >- + The url to which the user should be redirected after a successful + login. + in: query + name: original + schema: + type: string + - description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after login or signing up. + in: query + name: workspace_invitation_token + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuthGetSamlLoginUrlResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AuthGetSamlLoginUrl400Response' + /api/teams/{team_id}: + get: + tags: + - Teams + operationId: get_team + security: + - JWT: [] + description: Returns the information related to the provided team id. + parameters: + - description: Returns the team related to the provided value. + in: path + name: team_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetTeamResponse' + put: + tags: + - Teams + operationId: update_team + security: + - JWT: [] + description: Updates an existing team with a new name. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateTeamResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateTeam404Response' + delete: + tags: + - Teams + operationId: delete_team + security: + - JWT: [] + description: >- + Deletes a team if the authorized user is in the team's workspace. All + the related children (e.g. subjects) are also going to be deleted. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: Deletes the team related to the provided value. + in: path + name: team_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteTeamResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteTeam404Response' + /api/teams/{team_id}/subjects: + get: + tags: + - Teams + operationId: Teams_listSubjects + security: + - JWT: [] + description: Lists all team subjects in a given team. + parameters: + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsListSubjectsResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsListSubjects400Response' + post: + tags: + - Teams + operationId: create_subject + security: + - JWT: [] + description: Creates a new team subject. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubject' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TeamSubject' + multipart/form-data: + schema: + $ref: '#/components/schemas/TeamSubject' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubjectResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSubjectResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSubject404Response' + /api/teams/{team_id}/subjects/{subject_id}: + get: + tags: + - Teams + operationId: get_subject + security: + - JWT: [] + description: Returns the information related to the provided subject id + parameters: + - description: Returns the subject related to the provided value. + in: path + name: subject_id + schema: + type: integer + required: true + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubjectResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetSubjectResponse' + delete: + tags: + - Teams + operationId: delete_subject + security: + - JWT: [] + description: Deletes a subject if the authorized user is in the team's workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The subject id to remove from the team. + in: path + name: subject_id + schema: + type: integer + required: true + - description: The team id which the subject will be removed from. + in: path + name: team_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteSubjectResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteSubject404Response' + /api/teams/group/{group_id}: + get: + tags: + - Teams + operationId: Teams_getAllInGroup + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_list_teams](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all teams in a given group. + parameters: + - description: Lists all teams in a given group. + in: path + name: group_id + schema: + type: integer + required: true + - description: Search for teams by their name. + in: query + name: search + schema: + type: string + - description: Sort teams by name or subjects. + in: query + name: sorts + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsGetAllInGroupResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsGetAllInGroup404Response' + deprecated: true + post: + tags: + - Teams + operationId: Teams_createInGroup + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_create_team](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new team in a given group. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - in: path + name: group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsCreateInGroupResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsCreateInGroup404Response' + deprecated: true + /api/teams/workspace/{workspace_id}: + get: + tags: + - Teams + operationId: Teams_listInWorkspace + security: + - JWT: [] + description: Lists all teams in a given workspace. + parameters: + - description: Search for teams by their name. + in: query + name: search + schema: + type: string + - description: Sort teams by name or subjects. + in: query + name: sorts + schema: + type: string + - description: Lists all teams in a given workspace. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsListInWorkspaceResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsListInWorkspace404Response' + post: + tags: + - Teams + operationId: Teams_createNewTeam + security: + - JWT: [] + description: Creates a new team. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - in: path + name: workspace_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsCreateNewTeamResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsCreateNewTeam404Response' + /api/templates: + get: + tags: + - Templates + operationId: list_templates + security: + - JWT: [] + - {} + description: >- + Lists all the template categories and the related templates that are in + that category. The template's `workspace_id` can be used for previewing + purposes because that workspace contains the applications that are in + the template. All the `get` and `list` endpoints related to that + workspace are publicly accessible. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListTemplatesResponse' + /api/templates/install/{group_id}/{template_id}: + post: + tags: + - Templates + operationId: Templates_installApplications + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_install_template](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Installs the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + The id related to the group where the template applications must be + installed into. + in: path + name: group_id + schema: + type: integer + required: true + - description: The id related to the template that must be installed. + in: path + name: template_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TemplatesInstallApplicationsResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TemplatesInstallApplications400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TemplatesInstallApplications404Response' + deprecated: true + /api/templates/install/{group_id}/{template_id}/async: + post: + tags: + - Templates + operationId: Templates_startAsyncJob + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_install_template_async](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Start an async job to install the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: >- + The id related to the group where the template applications must be + installed into. + in: path + name: group_id + schema: + type: integer + required: true + - description: The id related to the template that must be installed. + in: path + name: template_id + schema: + type: integer + required: true + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SingleInstallTemplateJobType' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TemplatesStartAsyncJobResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TemplatesStartAsyncJob404Response' + deprecated: true + /api/templates/install/{workspace_id}/{template_id}: + post: + tags: + - Templates + operationId: install_template + security: + - JWT: [] + description: >- + (Deprecated) Installs the applications of the given template into the + given workspace if the user has access to that workspace. The response + contains those newly created applications. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: The id related to the template that must be installed. + in: path + name: template_id + schema: + type: integer + required: true + - description: >- + The id related to the workspace where the template applications must + be installed into. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/InstallTemplateResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/InstallTemplate400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/InstallTemplate404Response' + /api/templates/install/{workspace_id}/{template_id}/async: + post: + tags: + - Templates + operationId: Templates_startAsyncJob + security: + - JWT: [] + description: >- + Start an async job to install the applications of the given template + into the given workspace if the user has access to that workspace. The + response contains those newly created applications. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: The id related to the template that must be installed. + in: path + name: template_id + schema: + type: integer + required: true + - description: >- + The id related to the workspace where the template applications must + be installed into. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '202': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SingleInstallTemplateJobType' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TemplatesStartAsyncJob400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TemplatesStartAsyncJob404Response' + /api/trash: + get: + tags: + - Trash + operationId: Trash_inspectTrashContents + security: + - JWT: [] + description: >- + Responds with the workspaces and applications available for the + requesting user to inspect the trash contents of. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TrashStructure' + /api/trash/group/{group_id}: + get: + tags: + - Trash + operationId: Trash_getGroupContents + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_get_contents](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Responds with trash contents for a group optionally filtered to a specific application. + parameters: + - description: >- + Optionally filters down the trash to only items for this application + in the group. + in: query + name: application_id + schema: + type: integer + - description: Returns the trash for the group with this id. + in: path + name: group_id + schema: + type: integer + required: true + - description: Selects which page of trash contents should be returned. + in: query + name: page + schema: + type: integer + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerTrashContents' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TrashGetGroupContentsResponse' + deprecated: true + delete: + tags: + - Trash + operationId: Trash_emptyGroupContents + security: + - JWT: [] + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_empty_contents](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Empties the specified group and/or application of trash, including the group and application themselves if they are trashed also. + parameters: + - description: >- + Optionally filters down the trash to delete to only items for this + application in the group. + in: query + name: application_id + schema: + type: integer + - description: >- + The group whose trash contents to empty, including the group itself + if it is also trashed. + in: path + name: group_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TrashEmptyGroupContentsResponse' + deprecated: true + /api/trash/restore: + patch: + tags: + - Trash + operationId: Trash_restoreItem + security: + - JWT: [] + description: Restores the specified trashed item back into baserow. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TrashRestoreItemResponse' + /api/trash/workspace/{workspace_id}: + get: + tags: + - Trash + operationId: Trash_getWorkspaceTrashContents + security: + - JWT: [] + description: >- + Responds with trash contents for a workspace optionally filtered to a + specific application. + parameters: + - description: >- + Optionally filters down the trash to only items for this application + in the workspace. + in: query + name: application_id + schema: + type: integer + - description: Selects which page of trash contents should be returned. + in: query + name: page + schema: + type: integer + - description: Returns the trash for the workspace with this id. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerTrashContents' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TrashGetWorkspaceTrashContentsResponse' + delete: + tags: + - Trash + operationId: Trash_emptyWorkspace + security: + - JWT: [] + description: >- + Empties the specified workspace and/or application of trash, including + the workspace and application themselves if they are trashed also. + parameters: + - description: >- + Optionally filters down the trash to delete to only items for this + application in the workspace. + in: query + name: application_id + schema: + type: integer + - description: >- + The workspace whose trash contents to empty, including the workspace + itself if it is also trashed. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TrashEmptyWorkspaceResponse' + /api/user: + post: + tags: + - User + operationId: create_user + description: >- + Creates a new user based on the provided values. If desired an + authentication JWT can be generated right away. After creating an + account the initial workspace containing a database is created. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Register' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Register' + multipart/form-data: + schema: + $ref: '#/components/schemas/Register' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateUserResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateUser400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateUser404Response' + /api/user-files/upload-file: + post: + tags: + - User files + operationId: upload_file + security: + - JWT: [] + - Database token: [] + description: >- + Uploads a file to Baserow by uploading the file contents directly. A + `file` multipart is expected containing the file contents. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UploadFileResponse' + /api/user-files/upload-via-url: + post: + tags: + - User files + operationId: UserFiles_uploadViaUrl + security: + - JWT: [] + - Database token: [] + description: Uploads a file to Baserow by downloading it from the provided URL. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserFilesUploadViaUrlResponse' + /api/user-source-auth-refresh: + post: + tags: + - User sources + operationId: UserSources_refreshAccessToken + security: + - JWT: [] + - {} + description: >- + Generate a new access_token that can be used to continue operating on + Baserow with a user source user starting from a valid refresh token. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesRefreshAccessTokenResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesRefreshAccessToken401Response' + /api/user-source-token-blacklist: + post: + tags: + - User sources + operationId: UserSources_blacklistToken + description: >- + Blacklists the provided user source token. This can be used the sign the + user off. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenBlacklist' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenBlacklist' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenBlacklist' + required: true + responses: + '204': + description: No response body + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesBlacklistTokenResponse' + /api/user-source/{user_source_id}: + patch: + tags: + - User sources + operationId: UserSources_updateExistingUserSource + security: + - JWT: [] + description: Updates an existing user_source. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the user_source + in: path + name: user_source_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/UserSourcesUpdateExistingUserSourceResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/UserSourcesUpdateExistingUserSource404Response + delete: + tags: + - User sources + operationId: UserSources_removeById + security: + - JWT: [] + description: Deletes the user_source related by the given id. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the user_source + in: path + name: user_source_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesRemoveByIdResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesRemoveById404Response' + /api/user-source/{user_source_id}/move: + patch: + tags: + - User sources + operationId: UserSources_rearrangeUserSource + security: + - JWT: [] + description: >- + Moves the user_source in the application before another user_source or + at the end of the application if no before user_source is given. The + user_sources must belong to the same application. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: The id of the user_source to move + in: path + name: user_source_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesRearrangeUserSourceResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSourcesRearrangeUserSource404Response' + /api/user/account: + patch: + tags: + - User + operationId: update_account + security: + - JWT: [] + description: Updates the account information of the authenticated user. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedAccount' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedAccount' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedAccount' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Account' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateAccountResponse' + /api/user/change-password: + post: + tags: + - User + operationId: change_password + security: + - JWT: [] + description: >- + Changes the password of an authenticated user, but only if the old + password matches. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ChangePasswordResponse' + /api/user/dashboard: + get: + tags: + - User + operationId: User_viewPendingWorkspaceInvitations + security: + - JWT: [] + description: >- + Lists all the relevant user information that for example could be shown + on a dashboard. It will contain all the pending workspace invitations + for that user. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Dashboard' + /api/user/redo: + patch: + tags: + - User + operationId: User_redoAction + security: + - JWT: [] + description: >- + Redoes the latest redoable action performed by the user making the + request. a ClientSessionId header must be provided and only actions + which were performed the same user with the same ClientSessionId value + set on the api request that performed the action will be + redone.Additionally the ClientSessionId header must be between 1 and 256 + characters long and must only contain alphanumeric or the - characters. + parameters: + - description: >- + The particular client session to redo actions for. The actions must + have been performed with this same header set with the same value + for them to be redoable by this endpoint. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UndoRedoResponse' + /api/user/reset-password: + post: + tags: + - User + operationId: reset_password + description: >- + Changes the password of a user if the reset token is valid. The + **send_password_reset_email** endpoint sends an email to the user + containing the token. That token can be used to change the password here + without providing the old password. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ResetPasswordResponse' + /api/user/schedule-account-deletion: + post: + tags: + - User + operationId: User_scheduleAccountDeletion + security: + - JWT: [] + description: >- + Schedules the account deletion of the authenticated user. The user will + be permanently deleted after the grace delay defined by the instance + administrator. + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserScheduleAccountDeletionResponse' + /api/user/send-reset-password-email: + post: + tags: + - User + operationId: User_sendResetPasswordEmail + description: >- + Sends an email containing the password reset link to the email address + of the user. This will only be done if a user is found with the given + email address. The endpoint will not fail if the email address is not + found. The link is going to the valid for 48 hours. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserSendResetPasswordEmailResponse' + /api/user/token-auth: + post: + tags: + - User + operationId: token_auth + description: >- + Authenticates an existing user based on their email and their password. + If successful, an access token and a refresh token will be returned. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TokenAuthResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TokenAuth401Response' + /api/user/token-blacklist: + post: + tags: + - User + operationId: token_blacklist + description: Blacklists the provided token. This can be used the sign the user off. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenBlacklist' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenBlacklist' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenBlacklist' + required: true + responses: + '204': + description: No response body + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TokenBlacklistResponse' + /api/user/token-refresh: + post: + tags: + - User + operationId: token_refresh + description: >- + Generate a new access_token that can be used to continue operating on + Baserow starting from a valid refresh token. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TokenRefreshResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TokenRefresh401Response' + /api/user/token-verify: + post: + tags: + - User + operationId: token_verify + description: >- + Verifies if the refresh token is valid and can be used to generate a new + access_token. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TokenVerifyResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TokenVerify401Response' + /api/user/undo: + patch: + tags: + - User + operationId: User_undoLatestUndoableAction + security: + - JWT: [] + description: >- + undoes the latest undoable action performed by the user making the + request. a ClientSessionId header must be provided and only actions + which were performed the same user with the same ClientSessionId value + set on the api request that performed the action will be + undone.Additionally the ClientSessionId header must be between 1 and 256 + characters long and must only contain alphanumeric or the - characters. + parameters: + - description: >- + The particular client session to undo actions for. The actions must + have been performed with this same header set with the same value + for them to be undoable by this endpoint. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UndoRedoResponse' + /api/workspaces: + get: + tags: + - Workspaces + operationId: list_workspaces + security: + - JWT: [] + description: >- + Lists all the workspaces of the authorized user. A workspace can contain + multiple applications like a database. Multiple users can have access to + a workspace. For example each company could have their own workspace + containing databases related to that company. The order of the + workspaces are custom for each user. The order is configurable via the + **order_workspaces** endpoint. + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListWorkspacesResponse' + post: + tags: + - Workspaces + operationId: create_workspace + security: + - JWT: [] + description: >- + Creates a new workspace where only the authorized user has access to. No + initial data like database applications are added, they have to be + created via other endpoints. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Workspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/Workspace' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + /api/workspaces/{workspace_id}: + patch: + tags: + - Workspaces + operationId: update_workspace + security: + - JWT: [] + description: >- + Updates the existing workspace related to the provided `workspace_id` + parameter if the authorized user belongs to the workspace. It is not yet + possible to add additional users to a workspace. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Updates the workspace related to the provided value. + in: path + name: workspace_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateWorkspaceResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateWorkspace404Response' + delete: + tags: + - Workspaces + operationId: delete_workspace + security: + - JWT: [] + description: >- + Deletes an existing workspace if the authorized user belongs to the + workspace. All the applications, databases, tables etc that were in the + workspace are going to be deleted also. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + - description: Deletes the workspace related to the provided value. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteWorkspaceResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteWorkspace404Response' + /api/workspaces/{workspace_id}/leave: + post: + tags: + - Workspaces + operationId: leave_workspace + security: + - JWT: [] + description: >- + Makes the authenticated user leave the workspace related to the provided + `workspace_id` if the user is in that workspace. If the user is the last + admin in the workspace, they will not be able to leave it. There must + always be one admin in the workspace, otherwise it will be left without + control. If that is the case, they must either delete the workspace or + give another member admin permissions first. + parameters: + - description: Leaves the workspace related to the value. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LeaveWorkspaceResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LeaveWorkspace404Response' + /api/workspaces/{workspace_id}/permissions: + get: + tags: + - Workspaces + operationId: workspace_permissions + security: + - JWT: [] + description: >- + Returns a the permission data necessary to determine the permissions of + a specific user over a specific workspace. + + See `core.handler.CoreHandler.get_permissions()` for more details. + parameters: + - description: The workspace id we want the permission object for. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspacePermissionsResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspacePermissions404Response' + /api/workspaces/invitations/{workspace_invitation_id}: + get: + tags: + - Workspace invitations + operationId: WorkspaceInvitations_getById + security: + - JWT: [] + description: >- + Returns the requested workspace invitation if the authorized user has + admin right to the related workspace + parameters: + - description: Returns the workspace invitation related to the provided value. + in: path + name: workspace_invitation_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitationsGetByIdResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitationsGetById404Response' + patch: + tags: + - Workspace invitations + operationId: WorkspaceInvitations_updateExistingInvitation + security: + - JWT: [] + description: >- + Updates the existing workspace invitation related to the provided + `workspace_invitation_id` param if the authorized user has admin rights + to the related workspace. + parameters: + - description: Updates the workspace invitation related to the provided value. + in: path + name: workspace_invitation_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/WorkspaceInvitationsUpdateExistingInvitationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/WorkspaceInvitationsUpdateExistingInvitation404Response + delete: + tags: + - Workspace invitations + operationId: WorkspaceInvitations_deleteInvitation + security: + - JWT: [] + description: >- + Deletes a workspace invitation if the authorized user has admin rights + to the related workspace. + parameters: + - description: Deletes the workspace invitation related to the provided value. + in: path + name: workspace_invitation_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/WorkspaceInvitationsDeleteInvitationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/WorkspaceInvitationsDeleteInvitation404Response + /api/workspaces/invitations/{workspace_invitation_id}/accept: + post: + tags: + - Workspace invitations + operationId: WorkspaceInvitations_acceptInvitation + security: + - JWT: [] + description: >- + Accepts a workspace invitation with the given id if the email address of + the user matches that of the invitation. + parameters: + - description: Accepts the workspace invitation related to the provided value. + in: path + name: workspace_invitation_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/WorkspaceInvitationsAcceptInvitationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/WorkspaceInvitationsAcceptInvitation404Response + /api/workspaces/invitations/{workspace_invitation_id}/reject: + post: + tags: + - Workspace invitations + operationId: WorkspaceInvitations_rejectInvitation + security: + - JWT: [] + description: >- + Rejects a workspace invitation with the given id if the email address of + the user matches that of the invitation. + parameters: + - description: Rejects the workspace invitation related to the provided value. + in: path + name: workspace_invitation_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/WorkspaceInvitationsRejectInvitationResponse + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/WorkspaceInvitationsRejectInvitation404Response + /api/workspaces/invitations/token/{token}: + get: + tags: + - Workspace invitations + operationId: WorkspaceInvitations_getByToken + security: + - JWT: [] + - {} + description: >- + Responds with the serialized workspace invitation if an invitation with + the provided token is found. + parameters: + - description: Returns the workspace invitation related to the provided token. + in: path + name: token + schema: + type: string + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UserWorkspaceInvitation' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitationsGetByTokenResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitationsGetByToken404Response' + /api/workspaces/invitations/workspace/{workspace_id}: + get: + tags: + - Workspace invitations + operationId: WorkspaceInvitations_list + security: + - JWT: [] + description: >- + Lists all the workspace invitations of the workspace related to the + provided `workspace_id` parameter if the authorized user has admin + rights to that workspace. + parameters: + - description: >- + Returns only invitations that are in the workspace related to the + provided value. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitationsListResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitationsList400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitationsList404Response' + post: + tags: + - Workspace invitations + operationId: WorkspaceInvitations_createInvite + security: + - JWT: [] + description: >- + Creates a new workspace invitations for an email address if the + authorized user has admin rights to the related workspace. An email + containing a sign up link will be send to the user. + parameters: + - description: >- + Creates a workspace invitation to the workspace related to the + provided value. + in: path + name: workspace_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitationsCreateInviteResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: >- + #/components/schemas/WorkspaceInvitationsCreateInvite404Response + /api/workspaces/order: + post: + tags: + - Workspaces + operationId: order_workspaces + security: + - JWT: [] + description: >- + Changes the order of the provided workspace ids to the matching position + that the id has in the list. If the authorized user does not belong to + the workspace it will be ignored. The order will be custom for each + user. + parameters: + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + in: header + name: ClientSessionId + schema: + type: string + format: uuid + - description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + required: true + responses: + '204': + description: No response body + /api/workspaces/users/{workspace_user_id}: + patch: + tags: + - Workspaces + operationId: Workspaces_updateWorkspaceUser + security: + - JWT: [] + description: >- + Updates the existing workspace user related to the provided + `workspace_user_id` param if the authorized user has admin rights to the + related workspace. + parameters: + - description: Updates the workspace user related to the provided value. + in: path + name: workspace_user_id + schema: + type: integer + required: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUser' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspacesUpdateWorkspaceUserResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspacesUpdateWorkspaceUser404Response' + delete: + tags: + - Workspaces + operationId: Workspaces_deleteUser + security: + - JWT: [] + description: >- + Deletes a workspace user if the authorized user has admin rights to the + related workspace. + parameters: + - description: Deletes the workspace user related to the provided value. + in: path + name: workspace_user_id + schema: + type: integer + required: true + responses: + '204': + description: No response body + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspacesDeleteUserResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspacesDeleteUser404Response' + /api/workspaces/users/workspace/{workspace_id}: + get: + tags: + - Workspaces + operationId: Workspaces_listUsersInWorkspace + security: + - JWT: [] + description: >- + Lists all the users that are in a workspace if the authorized user has + admin permissions to the related workspace. To add a user to a workspace + an invitation must be sent first. + parameters: + - description: Search for workspace users by username, or email. + in: query + name: search + schema: + type: string + - description: Sort workspace users by name, email or role. + in: query + name: sorts + schema: + type: string + - description: Lists workspace users related to the provided workspace value. + in: path + name: workspace_id + schema: + type: integer + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspacesListUsersInWorkspaceResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspacesListUsersInWorkspace400Response' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspacesListUsersInWorkspace404Response' +components: + schemas: + Account: + description: This serializer must be kept in sync with `UserSerializer`. + type: object + properties: + first_name: + type: string + maxLength: 150 + minLength: 2 + language: + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + type: string + maxLength: 10 + minLength: 2 + email_notification_frequency: + $ref: '#/components/schemas/EmailNotificationFrequencyEnum' + x-konfig-properties: + email_notification_frequency: + description: >- + The maximum frequency at which the user wants to receive email + notifications. + + + * `instant` - instant + + * `daily` - daily + + * `weekly` - weekly + + * `never` - never + ActionScopes: + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + type: object + properties: + root: + description: >- + If set to true then actions registered in the root scope will be + included when undoing or redoing. + type: boolean + nullable: true + workspace: + description: >- + If set to a workspaces id then any actions directly related to that + workspace will be be included when undoing or redoing. + type: integer + minimum: 0 + nullable: true + group: + description: >- + If set to a workspaces id then any actions directly related to that + workspace will be be included when undoing or redoing. + type: integer + minimum: 0 + nullable: true + application: + description: >- + If set to an applications id then any actions directly related to + that application will be be included when undoing or redoing. + type: integer + minimum: 0 + nullable: true + table: + description: >- + If set to a table id then any actions directly related to that table + will be be included when undoing or redoing. + type: integer + minimum: 0 + nullable: true + view: + description: >- + If set to an view id then any actions directly related to that view + will be be included when undoing or redoing. + type: integer + minimum: 0 + nullable: true + teams_in_workspace: + description: >- + If set to a workspace id then any actions directly related to that + workspace will be be included when undoing or redoing. + type: integer + minimum: 0 + nullable: true + AdminDashboard: + type: object + properties: + total_users: + type: integer + total_groups: + type: integer + total_workspaces: + type: integer + total_applications: + type: integer + new_users_last_24_hours: + type: integer + new_users_last_7_days: + type: integer + new_users_last_30_days: + type: integer + previous_new_users_last_24_hours: + type: integer + previous_new_users_last_7_days: + type: integer + previous_new_users_last_30_days: + type: integer + active_users_last_24_hours: + type: integer + active_users_last_7_days: + type: integer + active_users_last_30_days: + type: integer + previous_active_users_last_24_hours: + type: integer + previous_active_users_last_7_days: + type: integer + previous_active_users_last_30_days: + type: integer + new_users_per_day: + type: array + items: + $ref: '#/components/schemas/AdminDashboardPerDay' + active_users_per_day: + type: array + items: + $ref: '#/components/schemas/AdminDashboardPerDay' + required: + - active_users_last_24_hours + - active_users_last_30_days + - active_users_last_7_days + - active_users_per_day + - new_users_last_24_hours + - new_users_last_30_days + - new_users_last_7_days + - new_users_per_day + - previous_active_users_last_24_hours + - previous_active_users_last_30_days + - previous_active_users_last_7_days + - previous_new_users_last_24_hours + - previous_new_users_last_30_days + - previous_new_users_last_7_days + - total_applications + - total_groups + - total_users + - total_workspaces + AdminDashboardPerDay: + type: object + properties: + date: + type: string + format: date + count: + type: integer + required: + - count + - date + AggregationRawTypeEnum: + description: |- + * `empty_count` - empty_count + * `not_empty_count` - not_empty_count + * `unique_count` - unique_count + * `min` - min + * `max` - max + * `sum` - sum + * `average` - average + * `median` - median + * `decile` - decile + * `variance` - variance + * `std_dev` - std_dev + enum: + - empty_count + - not_empty_count + - unique_count + - min + - max + - sum + - average + - median + - decile + - variance + - std_dev + type: string + AirtableImportJobCreateJob: + type: object + properties: + type: + $ref: '#/components/schemas/TypeC5eEnum' + group_id: + description: The group ID where the Airtable base must be imported into. + type: integer + workspace_id: + description: The workspace ID where the Airtable base must be imported into. + type: integer + airtable_share_url: + description: >- + The publicly shared URL of the Airtable base (e.g. + https://airtable.com/shrxxxxxxxxxxxxxx) + type: string + format: uri + required: + - airtable_share_url + - type + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + AirtableImportJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + group_id: + description: The group ID where the Airtable base must be imported into. + type: integer + workspace_id: + description: The workspace ID where the Airtable base must be imported into. + type: integer + database: + $ref: '#/components/schemas/Application' + airtable_share_id: + description: Public ID of the shared Airtable base that must be imported. + type: string + format: uri + maxLength: 200 + required: + - airtable_share_id + - database + - group_id + - id + - progress_percentage + - state + - type + - workspace_id + Alignment0e8Enum: + description: |- + * `top` - Top + * `center` - Center + * `bottom` - Bottom + enum: + - top + - center + - bottom + type: string + Alignment675Enum: + description: |- + * `left` - Left + * `center` - Center + * `right` - Right + enum: + - left + - center + - right + type: string + App_Auth_ProviderAppAuthProvider: + oneOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderAppAuthProvider + discriminator: + propertyName: type + mapping: + local_baserow_password: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderAppAuthProvider + App_Auth_ProviderBaseAppAuthProvider: + oneOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider + discriminator: + propertyName: type + mapping: + local_baserow_password: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider + Application: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + $ref: '#/components/schemas/Workspace' + workspace: + $ref: '#/components/schemas/Workspace' + required: + - group + - id + - name + - order + - type + - workspace + x-konfig-properties: + group: + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + description: The workspace that the application belongs to. + ApplicationApplication: + oneOf: + - $ref: '#/components/schemas/DatabaseApplication' + - $ref: '#/components/schemas/BuilderApplication' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseApplication' + builder: '#/components/schemas/BuilderApplication' + ApplicationBaseApplicationCreatePolymorphic: + oneOf: + - $ref: '#/components/schemas/DatabaseBaseApplicationCreatePolymorphic' + - $ref: '#/components/schemas/BuilderBaseApplicationCreatePolymorphic' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseBaseApplicationCreatePolymorphic' + builder: '#/components/schemas/BuilderBaseApplicationCreatePolymorphic' + ArrayFormulaTypeEnum: + description: |- + * `invalid` - invalid + * `text` - text + * `char` - char + * `button` - button + * `link` - link + * `date_interval` - date_interval + * `duration` - duration + * `date` - date + * `boolean` - boolean + * `number` - number + * `single_select` - single_select + * `multiple_select` - multiple_select + * `single_file` - single_file + enum: + - invalid + - text + - char + - button + - link + - date_interval + - duration + - date + - boolean + - number + - single_select + - multiple_select + - single_file + type: string + AuditLog: + type: object + properties: + description: + type: string + readOnly: true + id: + type: integer + readOnly: true + action_type: + type: string + readOnly: true + user: + type: string + readOnly: true + group: + type: string + readOnly: true + workspace: + type: string + readOnly: true + type: + type: string + readOnly: true + timestamp: + type: string + format: date-time + ip_address: + type: string + readOnly: true + nullable: true + required: + - action_type + - description + - group + - id + - ip_address + - timestamp + - type + - user + - workspace + AuditLogActionType: + type: object + properties: + id: + $ref: '#/components/schemas/IdEnum' + value: + description: |- + Given the *incoming* primitive data, return the value for this field + that should be validated and transformed to a native value. + type: string + readOnly: true + required: + - id + - value + AuditLogExportJobCreateJob: + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + type: object + properties: + url: + type: string + format: uri + readOnly: true + type: + $ref: '#/components/schemas/TypeC5eEnum' + export_charset: + $ref: '#/components/schemas/ExportCharsetEnum' + csv_column_separator: + $ref: '#/components/schemas/CsvColumnSeparatorEnum' + csv_first_row_header: + description: Whether or not to generate a header row at the top of the csv file. + type: boolean + default: true + filter_user_id: + description: 'Optional: The user to filter the audit log by.' + type: integer + minimum: 0 + filter_workspace_id: + description: 'Optional: The workspace to filter the audit log by.' + type: integer + minimum: 0 + filter_action_type: + $ref: '#/components/schemas/FilterActionTypeEnum' + filter_from_timestamp: + description: 'Optional: The start date to filter the audit log by.' + type: string + format: date-time + filter_to_timestamp: + description: 'Optional: The end date to filter the audit log by.' + type: string + format: date-time + exclude_columns: + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + type: string + required: + - type + - url + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + export_charset: + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + default: utf-8 + csv_column_separator: + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + default: ',' + filter_action_type: + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + AuditLogExportJobJob: + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + csv_column_separator: + $ref: '#/components/schemas/CsvColumnSeparatorEnum' + csv_first_row_header: + description: Whether or not to generate a header row at the top of the csv file. + type: boolean + default: true + export_charset: + $ref: '#/components/schemas/ExportCharsetEnum' + filter_user_id: + description: 'Optional: The user to filter the audit log by.' + type: integer + minimum: 0 + filter_workspace_id: + description: 'Optional: The workspace to filter the audit log by.' + type: integer + minimum: 0 + filter_action_type: + $ref: '#/components/schemas/FilterActionTypeEnum' + filter_from_timestamp: + description: 'Optional: The start date to filter the audit log by.' + type: string + format: date-time + filter_to_timestamp: + description: 'Optional: The end date to filter the audit log by.' + type: string + format: date-time + exclude_columns: + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + type: string + created_on: + description: The date and time when the export job was created. + type: string + format: date-time + readOnly: true + exported_file_name: + description: The name of the file that was created by the export job. + type: string + readOnly: true + url: + description: The URL to download the exported file. + type: string + format: uri + readOnly: true + required: + - created_on + - exported_file_name + - id + - progress_percentage + - state + - type + - url + x-konfig-properties: + csv_column_separator: + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + default: ',' + export_charset: + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + default: utf-8 + filter_action_type: + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + AuditLogUser: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + required: + - id + - value + AuditLogWorkspace: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + required: + - id + - value + AuthFormElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + user_source_id: + description: Display the auth form for the selected user source + type: integer + nullable: true + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + AuthFormElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + user_source_id: + description: Display the auth form for the selected user source + type: integer + nullable: true + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + AuthFormElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + user_source_id: + description: Display the auth form for the selected user source + type: integer + nullable: true + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + AuthFormElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + user_source_id: + description: Display the auth form for the selected user source + type: integer + nullable: true + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + Authentication_ProviderAuthProvider: + oneOf: + - $ref: '#/components/schemas/PasswordAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/SamlAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GoogleAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/FacebookAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GitHubAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GitLabAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/OpenIdConnectAuthProviderModelAuthProvider' + discriminator: + propertyName: type + mapping: + password: '#/components/schemas/PasswordAuthProviderModelAuthProvider' + saml: '#/components/schemas/SamlAuthProviderModelAuthProvider' + google: '#/components/schemas/GoogleAuthProviderModelAuthProvider' + facebook: '#/components/schemas/FacebookAuthProviderModelAuthProvider' + github: '#/components/schemas/GitHubAuthProviderModelAuthProvider' + gitlab: '#/components/schemas/GitLabAuthProviderModelAuthProvider' + openid_connect: '#/components/schemas/OpenIdConnectAuthProviderModelAuthProvider' + AutonumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + view_id: + description: The id of the view to use for the initial ordering. + type: integer + nullable: true + required: + - name + - type + AutonumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + AutonumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + AutonumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + view_id: + description: The id of the view to use for the initial ordering. + type: integer + nullable: true + BaseExporterOptions: + type: object + properties: + view_id: + description: >- + Optional: The view for this table to export using its filters, sorts + and other view specific settings. + type: integer + minimum: 0 + nullable: true + exporter_type: + $ref: '#/components/schemas/ExporterTypeEnum' + export_charset: + $ref: '#/components/schemas/ExportCharsetEnum' + required: + - exporter_type + x-konfig-properties: + exporter_type: + description: |- + The file type to export to. + + * `csv` - csv + * `json` - json + * `xml` - xml + export_charset: + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + default: utf-8 + BaserowImpersonateAuthToken: + description: Serializer used for impersonation. + type: object + properties: + user: + type: integer + required: + - user + BatchCreateRoleAssignment: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/CreateRoleAssignment' + required: + - items + BatchDeleteRows: + type: object + properties: + items: + type: array + items: + type: integer + maxItems: 200 + minItems: 1 + required: + - items + BlankEnum: + enum: + - '' + type: string + BooleanFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + BooleanFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + BooleanFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + BooleanFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + BuilderApplication: + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + $ref: '#/components/schemas/Workspace' + workspace: + $ref: '#/components/schemas/Workspace' + pages: + description: >- + This field is specific to the `builder` application and contains an + array of pages that are in the builder. + type: array + items: + $ref: '#/components/schemas/Page' + readOnly: true + theme: + $ref: '#/components/schemas/CombinedThemeConfigBlocks' + required: + - group + - id + - name + - order + - pages + - theme + - type + - workspace + x-konfig-properties: + group: + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + description: The workspace that the application belongs to. + theme: + description: >- + This field is specific to the `builder` application and contains the + theme settings. + readOnly: true + BuilderBaseApplicationCreatePolymorphic: + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + type: object + properties: + name: + type: string + maxLength: 160 + type: + $ref: '#/components/schemas/TypeF4fEnum' + init_with_data: + type: boolean + default: false + required: + - name + - type + BuilderBaseApplicationUpdatePolymorphic: + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + type: object + properties: + name: + type: string + maxLength: 160 + required: + - name + BuilderWorkflowAction: + description: Basic builder workflow action serializer + type: object + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + description: The type of the workflow action + type: string + readOnly: true + event: + $ref: '#/components/schemas/EventEnum' + required: + - element_id + - event + - id + - order + - type + x-konfig-properties: + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + Builder_Workflow_Action_TypeBuilderWorkflowAction: + oneOf: + - $ref: '#/components/schemas/NotificationWorkflowActionBuilderWorkflowAction' + - $ref: '#/components/schemas/OpenPageWorkflowActionBuilderWorkflowAction' + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction + - $ref: '#/components/schemas/LogoutWorkflowActionBuilderWorkflowAction' + discriminator: + propertyName: type + mapping: + notification: '#/components/schemas/NotificationWorkflowActionBuilderWorkflowAction' + open_page: '#/components/schemas/OpenPageWorkflowActionBuilderWorkflowAction' + create_row: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction + update_row: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction + logout: '#/components/schemas/LogoutWorkflowActionBuilderWorkflowAction' + Builder_Workflow_Action_TypeCreateBuilderWorkflowAction: + oneOf: + - $ref: >- + #/components/schemas/NotificationWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/OpenPageWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction + - $ref: '#/components/schemas/LogoutWorkflowActionCreateBuilderWorkflowAction' + discriminator: + propertyName: type + mapping: + notification: >- + #/components/schemas/NotificationWorkflowActionCreateBuilderWorkflowAction + open_page: >- + #/components/schemas/OpenPageWorkflowActionCreateBuilderWorkflowAction + create_row: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction + update_row: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction + logout: '#/components/schemas/LogoutWorkflowActionCreateBuilderWorkflowAction' + ButtonElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The caption of the button. + type: string + default: '' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + ButtonElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The caption of the button. + type: string + default: '' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + ButtonElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The caption of the button. + type: string + default: '' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + ButtonElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The caption of the button. + type: string + default: '' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + CalendarViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + $ref: '#/components/schemas/OwnershipTypeEnum' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + date_field: + type: integer + nullable: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - name + - slug + - type + x-konfig-properties: + ownership_type: + default: collaborative + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + CalendarViewExampleResponse: + type: object + properties: + rows: + description: >- + Every date bucket (e.g. '2023-01-01') related to the view's date + field can have its own entry like this. + type: object + additionalProperties: + $ref: '#/components/schemas/CalendarViewExampleResponseStack' + field_options: + type: array + items: + $ref: '#/components/schemas/CalendarViewFieldOptions' + row_metadata: + 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. + type: object + additionalProperties: + $ref: '#/components/schemas/RowMetadata' + required: + - field_options + - rows + CalendarViewExampleResponseStack: + type: object + properties: + count: + description: The total count of rows that are included in this group. + type: integer + results: + description: >- + All the rows that belong in this group and match provided `limit` + and `offset`. + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - results + CalendarViewFieldOptions: + type: object + properties: + hidden: + description: Whether or not the field should be hidden in the card. + type: boolean + order: + description: The order that the field has in the view. Lower value is first. + type: integer + maximum: 32767 + minimum: -32768 + CalendarViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_has_password: + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + type: boolean + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + date_field: + type: integer + nullable: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + ChangePasswordBodyValidation: + type: object + properties: + old_password: + type: string + new_password: + type: string + required: + - new_password + - old_password + CheckboxElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this input + type: string + default: '' + default_value: + description: The input's default value. + type: string + default: '' + required: + description: Whether this input is a required field. + type: boolean + default: false + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + CheckboxElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this input + type: string + default: '' + default_value: + description: The input's default value. + type: string + default: '' + required: + description: Whether this input is a required field. + type: boolean + default: false + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + CheckboxElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this input + type: string + default: '' + default_value: + description: The input's default value. + type: string + default: '' + required: + description: Whether this input is a required field. + type: boolean + default: false + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + CheckboxElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this input + type: string + default: '' + default_value: + description: The input's default value. + type: string + default: '' + required: + description: Whether this input is a required field. + type: boolean + default: false + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + Collaborator: + type: object + properties: + id: + type: integer + name: + type: string + readOnly: true + required: + - id + - name + CollectionField: + description: >- + This serializer transform the flat properties object from/to a config + dict property. + + This allows us to see the field on the frontend side as a simple + polymorphic + + object. + type: object + properties: + id: + type: integer + readOnly: true + name: + description: The name of the field. + type: string + maxLength: 225 + type: + description: The type of the field. + type: string + maxLength: 225 + required: + - id + - name + - type + ColumnElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + column_amount: + description: The amount of columns inside this column element. + type: integer + maximum: 6 + minimum: 1 + column_gap: + description: The amount of space between the columns. + type: integer + maximum: 2000 + minimum: 0 + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + ColumnElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + column_amount: + description: The amount of columns inside this column element. + type: integer + maximum: 6 + minimum: 1 + column_gap: + description: The amount of space between the columns. + type: integer + maximum: 2000 + minimum: 0 + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + ColumnElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + column_amount: + description: The amount of columns inside this column element. + type: integer + maximum: 6 + minimum: 1 + column_gap: + description: The amount of space between the columns. + type: integer + maximum: 2000 + minimum: 0 + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + ColumnElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + column_amount: + description: The amount of columns inside this column element. + type: integer + maximum: 6 + minimum: 1 + column_gap: + description: The amount of space between the columns. + type: integer + maximum: 2000 + minimum: 0 + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + CombinedThemeConfigBlocks: + type: object + properties: + primary_color: + type: string + maxLength: 9 + secondary_color: + type: string + maxLength: 9 + border_color: + type: string + maxLength: 9 + heading_1_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_1_color: + type: string + maxLength: 9 + heading_2_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_2_color: + type: string + maxLength: 9 + heading_3_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_3_color: + type: string + maxLength: 9 + ConditionTypeEnum: + description: |- + * `AND` - And + * `OR` - Or + enum: + - AND + - OR + type: string + ConditionalColorValueProviderConfColor: + type: object + properties: + id: + description: A unique identifier for this condition. + type: string + color: + description: The color the decorator should take if the defined conditions apply. + type: string + filters: + description: >- + A list of conditions that the row must meet to get the selected + color. This list of conditions can be empty, in that case, this + color will always match the row values. + type: array + items: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColorFilter' + filter_groups: + description: >- + A list of filter groups that the row must meet to get the selected + color. + type: array + items: + $ref: >- + #/components/schemas/ConditionalColorValueProviderConfColorFilterGroup + operator: + $ref: '#/components/schemas/ConditionTypeEnum' + required: + - color + - filters + - id + x-konfig-properties: + operator: + description: |- + The boolean operator used to group all conditions. + + * `AND` - And + * `OR` - Or + default: AND + ConditionalColorValueProviderConfColorFilter: + type: object + properties: + id: + description: A unique identifier for this condition. + type: string + field: + description: The field of which the value must be compared to the filter value. + type: integer + nullable: true + type: + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + nullable: true + oneOf: + - $ref: '#/components/schemas/Type880Enum' + - $ref: '#/components/schemas/NullEnum' + value: + description: The field of which the value must be compared to the filter value. + type: string + default: '' + group: + description: >- + The id of the filter group this filter belongs to. If this is null, + the filter is not part of a filter group. + type: string + nullable: true + required: + - field + - id + - type + ConditionalColorValueProviderConfColorFilterGroup: + type: object + properties: + id: + description: A unique identifier for this condition. + type: string + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + required: + - id + x-konfig-properties: + filter_type: + description: |- + The boolean operator used to group all conditions. + + * `AND` - And + * `OR` - Or + default: AND + ConditionalColorValueProviderConfColors: + type: object + properties: + colors: + description: >- + A list of color items. For each row, the value provider try to match + the defined colors one by one in the given order. The first matching + color is returned to the decorator. + type: array + items: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColor' + required: + - colors + CountFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: The id of the link row field to count values for. + type: integer + nullable: true + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + CountFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: The id of the link row field to count values for. + type: integer + nullable: true + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + CountFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: The id of the link row field to count values for. + type: integer + nullable: true + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + CountFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: The id of the link row field to count values for. + type: integer + nullable: true + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + CreatePage: + type: object + properties: + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + required: + - name + - path + CreateRoleAssignment: + description: The create role assignment serializer. + type: object + properties: + subject_id: + description: The subject ID. A subject is an actor that can do operations. + type: integer + minimum: 1 + subject_type: + $ref: '#/components/schemas/SubjectTypeB9aEnum' + role: + description: >- + The uid of the role you want to assign to the user or team in the + given workspace. You can omit this property if you want to remove + the role. + type: string + nullable: true + scope_id: + description: >- + The ID of the scope object. The scope object limit the role + assignment to this scope and all its descendants. + type: integer + minimum: 1 + scope_type: + $ref: '#/components/schemas/ScopeTypeEnum' + required: + - role + - scope_id + - scope_type + - subject_id + - subject_type + x-konfig-properties: + subject_type: + description: |- + The subject type. + + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + scope_type: + description: |- + The scope object type. + + * `core` - core + * `application` - application + * `workspace` - workspace + * `workspace_invitation` - workspace_invitation + * `snapshot` - snapshot + * `workspace_user` - workspace_user + * `integration` - integration + * `user_source` - user_source + * `database` - database + * `database_table` - database_table + * `database_field` - database_field + * `database_view` - database_view + * `database_view_decoration` - database_view_decoration + * `database_view_sort` - database_view_sort + * `database_view_group` - database_view_group + * `database_view_filter` - database_view_filter + * `database_view_filter_group` - database_view_filter_group + * `token` - token + * `builder` - builder + * `builder_page` - builder_page + * `builder_element` - builder_element + * `builder_domain` - builder_domain + * `builder_data_source` - builder_data_source + * `builder_workflow_action` - builder_workflow_action + * `team` - team + * `team_subject` - team_subject + * `license` - license + CreateSnapshotJobCreateJob: + type: object + properties: + type: + $ref: '#/components/schemas/TypeC5eEnum' + required: + - type + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + CreateSnapshotJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + required: + - id + - progress_percentage + - state + - type + CreateViewFilter: + type: object + properties: + field: + description: The field of which the value must be compared to the filter value. + type: integer + type: + $ref: '#/components/schemas/Type880Enum' + value: + description: The filter value that must be compared to the field's value. + type: string + default: '' + maxLength: 255 + group: + description: >- + The id of the filter group the new filter will belong to. If this is + null, the filter will not be part of a filter group, but directly + part of the view. + type: integer + nullable: true + required: + - field + - type + x-konfig-properties: + type: + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + CreateViewFilterGroup: + type: object + properties: + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + CreateViewGroupBy: + type: object + properties: + field: + description: The field that must be grouped by. + type: integer + order: + $ref: '#/components/schemas/OrderEnum' + width: + description: The pixel width of the group by in the related view. + type: integer + maximum: 2147483647 + minimum: 0 + default: 200 + required: + - field + x-konfig-properties: + order: + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + default: ASC + CreateViewSort: + type: object + properties: + field: + description: The field that must be sorted on. + type: integer + order: + $ref: '#/components/schemas/OrderEnum' + required: + - field + x-konfig-properties: + order: + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + default: ASC + CreateWorkspaceInvitation: + type: object + properties: + email: + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + type: string + format: email + maxLength: 254 + permissions: + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + type: string + maxLength: 32 + message: + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + type: string + maxLength: 250 + base_url: + description: >- + The base URL where the user can publicly accept his invitation.The + accept token is going to be appended to the base_url (base_url + '/token'). + type: string + format: uri + required: + - base_url + - email + CreatedByFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + CreatedByFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + CreatedByFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + CreatedByFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + CreatedOnFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_force_timezone_offset: + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + type: integer + nullable: true + required: + - type + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + CreatedOnFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + CreatedOnFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + CreatedOnFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_force_timezone_offset: + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + type: integer + nullable: true + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + CsvColumnSeparatorEnum: + description: "* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + enum: + - ',' + - ; + - '|' + - tab + - record_separator + - unit_separator + type: string + CsvExporterOptions: + type: object + properties: + view_id: + description: >- + Optional: The view for this table to export using its filters, sorts + and other view specific settings. + type: integer + minimum: 0 + nullable: true + exporter_type: + $ref: '#/components/schemas/ExporterTypeEnum' + export_charset: + $ref: '#/components/schemas/ExportCharsetEnum' + csv_column_separator: + $ref: '#/components/schemas/CsvColumnSeparatorEnum' + csv_include_header: + description: Whether or not to generate a header row at the top of the csv file. + type: boolean + default: true + required: + - exporter_type + x-konfig-properties: + exporter_type: + description: |- + The file type to export to. + + * `csv` - csv + * `json` - json + * `xml` - xml + export_charset: + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + default: utf-8 + csv_column_separator: + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + default: ',' + CustomDomainCreateDomain: + type: object + properties: + type: + $ref: '#/components/schemas/Type0a6Enum' + domain_name: + type: string + maxLength: 255 + required: + - domain_name + - type + x-konfig-properties: + type: + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + CustomDomainDomain: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the domain. + type: string + readOnly: true + domain_name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + builder_id: + type: integer + readOnly: true + last_published: + description: Last publication date of this domain + type: string + format: date-time + nullable: true + required: + - builder_id + - domain_name + - id + - order + - type + Dashboard: + type: object + properties: + group_invitations: + type: array + items: + $ref: '#/components/schemas/UserWorkspaceInvitation' + workspace_invitations: + type: array + items: + $ref: '#/components/schemas/UserWorkspaceInvitation' + required: + - group_invitations + - workspace_invitations + DatabaseApplication: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + $ref: '#/components/schemas/Workspace' + workspace: + $ref: '#/components/schemas/Workspace' + tables: + description: >- + This field is specific to the `database` application and contains an + array of tables that are in the database. + type: array + items: + $ref: '#/components/schemas/TableSerializerWithFields' + views: + description: >- + This field is specific to the `database` application and contains an + array of views that are in the tables. + type: array + items: + $ref: '#/components/schemas/LocalBaserowView' + required: + - group + - id + - name + - order + - tables + - type + - views + - workspace + x-konfig-properties: + group: + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + description: The workspace that the application belongs to. + DatabaseBaseApplicationCreatePolymorphic: + type: object + properties: + name: + type: string + maxLength: 160 + type: + $ref: '#/components/schemas/TypeF4fEnum' + init_with_data: + type: boolean + default: false + required: + - name + - type + DatabaseBaseApplicationUpdatePolymorphic: + type: object + properties: + name: + type: string + maxLength: 160 + required: + - name + DateFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_force_timezone_offset: + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + type: integer + nullable: true + required: + - type + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + DateFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + DateFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + DateFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_force_timezone_offset: + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + type: integer + nullable: true + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + DateFormatEnum: + description: |- + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + enum: + - EU + - US + - ISO + type: string + DateTimeFormatEnum: + description: |- + * `24` - 24 hour + * `12` - 12 hour + enum: + - '24' + - '12' + type: string + Decorator_Value_Provider_TypeCreateViewDecoration: + oneOf: + - $ref: >- + #/components/schemas/GeneratedSingle_select_colorCreateViewDecoration + - $ref: '#/components/schemas/GeneratedConditional_colorCreateViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: >- + #/components/schemas/GeneratedSingle_select_colorCreateViewDecoration + conditional_color: '#/components/schemas/GeneratedConditional_colorCreateViewDecoration' + Decorator_Value_Provider_TypeViewDecoration: + oneOf: + - $ref: '#/components/schemas/GeneratedSingle_select_colorViewDecoration' + - $ref: '#/components/schemas/GeneratedConditional_colorViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: '#/components/schemas/GeneratedSingle_select_colorViewDecoration' + conditional_color: '#/components/schemas/GeneratedConditional_colorViewDecoration' + Domain_TypeCreateDomain: + oneOf: + - $ref: '#/components/schemas/CustomDomainCreateDomain' + - $ref: '#/components/schemas/SubDomainCreateDomain' + discriminator: + propertyName: type + mapping: + custom: '#/components/schemas/CustomDomainCreateDomain' + sub_domain: '#/components/schemas/SubDomainCreateDomain' + Domain_TypeDomain: + oneOf: + - $ref: '#/components/schemas/CustomDomainDomain' + - $ref: '#/components/schemas/SubDomainDomain' + discriminator: + propertyName: type + mapping: + custom: '#/components/schemas/CustomDomainDomain' + sub_domain: '#/components/schemas/SubDomainDomain' + DropdownElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this dropdown + type: string + default: '' + default_value: + description: This dropdowns input's default value. + type: string + default: '' + required: + description: Whether this drodpown is a required field. + type: boolean + default: false + placeholder: + description: The placeholder text which should be applied to the element. + type: string + default: '' + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + DropdownElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this dropdown + type: string + default: '' + default_value: + description: This dropdowns input's default value. + type: string + default: '' + required: + description: Whether this drodpown is a required field. + type: boolean + default: false + placeholder: + description: The placeholder text which should be applied to the element. + type: string + default: '' + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + DropdownElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this dropdown + type: string + default: '' + default_value: + description: This dropdowns input's default value. + type: string + default: '' + required: + description: Whether this drodpown is a required field. + type: boolean + default: false + placeholder: + description: The placeholder text which should be applied to the element. + type: string + default: '' + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + DropdownElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this dropdown + type: string + default: '' + default_value: + description: This dropdowns input's default value. + type: string + default: '' + required: + description: Whether this drodpown is a required field. + type: boolean + default: false + placeholder: + description: The placeholder text which should be applied to the element. + type: string + default: '' + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + DropdownOption: + type: object + properties: + id: + type: integer + readOnly: true + value: + description: The value of the option + type: string + name: + description: The display name of the option + type: string + required: + - id + DuplicateApplicationJobCreateJob: + type: object + properties: + type: + $ref: '#/components/schemas/TypeC5eEnum' + application_id: + description: The application ID to duplicate. + type: integer + required: + - application_id + - type + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + DuplicateApplicationJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + original_application: + $ref: '#/components/schemas/ApplicationApplication' + duplicated_application: + $ref: '#/components/schemas/ApplicationApplication' + required: + - duplicated_application + - id + - original_application + - progress_percentage + - state + - type + x-konfig-properties: + original_application: + readOnly: true + duplicated_application: + readOnly: true + DuplicateElement: + type: object + properties: + elements: + description: The duplicated elements. + type: array + items: + $ref: '#/components/schemas/Element' + readOnly: true + workflow_actions: + description: The duplicated workflow actions + type: array + items: + $ref: '#/components/schemas/BuilderWorkflowAction' + readOnly: true + required: + - elements + - workflow_actions + DuplicateFieldJobCreateJob: + type: object + properties: + type: + $ref: '#/components/schemas/TypeC5eEnum' + field_id: + description: The ID of the field to duplicate. + type: integer + duplicate_data: + description: Whether to duplicate the data of the field. + type: boolean + default: false + required: + - field_id + - type + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + DuplicateFieldJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + original_field: + $ref: '#/components/schemas/Field' + duplicated_field: + $ref: '#/components/schemas/FieldSerializerWithRelatedFields' + required: + - duplicated_field + - id + - original_field + - progress_percentage + - state + - type + x-konfig-properties: + original_field: + readOnly: true + duplicated_field: + readOnly: true + DuplicatePageJobCreateJob: + type: object + properties: + type: + $ref: '#/components/schemas/TypeC5eEnum' + page_id: + description: The ID of the page to duplicate. + type: integer + required: + - page_id + - type + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + DuplicatePageJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + original_page: + $ref: '#/components/schemas/Page' + duplicated_page: + $ref: '#/components/schemas/Page' + required: + - duplicated_page + - id + - original_page + - progress_percentage + - state + - type + x-konfig-properties: + original_page: + readOnly: true + duplicated_page: + readOnly: true + DuplicateTableJobCreateJob: + type: object + properties: + type: + $ref: '#/components/schemas/TypeC5eEnum' + table_id: + description: The ID of the table to duplicate. + type: integer + required: + - table_id + - type + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + DuplicateTableJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + original_table: + $ref: '#/components/schemas/Table' + duplicated_table: + $ref: '#/components/schemas/Table' + required: + - duplicated_table + - id + - original_table + - progress_percentage + - state + - type + x-konfig-properties: + original_table: + readOnly: true + duplicated_table: + readOnly: true + DurationFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + duration_format: + $ref: '#/components/schemas/DurationFormatEnum' + required: + - name + - type + x-konfig-properties: + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + DurationFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + duration_format: + $ref: '#/components/schemas/DurationFormatEnum' + required: + - id + - name + - order + - read_only + - table_id + - type + x-konfig-properties: + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + DurationFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + duration_format: + $ref: '#/components/schemas/DurationFormatEnum' + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + x-konfig-properties: + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + DurationFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + duration_format: + $ref: '#/components/schemas/DurationFormatEnum' + x-konfig-properties: + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + DurationFormatEnum: + description: |- + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + enum: + - h:mm + - h:mm:ss + - h:mm:ss.s + - h:mm:ss.ss + - h:mm:ss.sss + - d h + - d h:mm + - d h:mm:ss + type: string + Element: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + Element_TypeCreateElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementCreateElement' + - $ref: '#/components/schemas/TextElementCreateElement' + - $ref: '#/components/schemas/LinkElementCreateElement' + - $ref: '#/components/schemas/ImageElementCreateElement' + - $ref: '#/components/schemas/InputTextElementCreateElement' + - $ref: '#/components/schemas/ColumnElementCreateElement' + - $ref: '#/components/schemas/ButtonElementCreateElement' + - $ref: '#/components/schemas/TableElementCreateElement' + - $ref: '#/components/schemas/FormContainerElementCreateElement' + - $ref: '#/components/schemas/DropdownElementCreateElement' + - $ref: '#/components/schemas/CheckboxElementCreateElement' + - $ref: '#/components/schemas/IFrameElementCreateElement' + - $ref: '#/components/schemas/AuthFormElementCreateElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementCreateElement' + text: '#/components/schemas/TextElementCreateElement' + link: '#/components/schemas/LinkElementCreateElement' + image: '#/components/schemas/ImageElementCreateElement' + input_text: '#/components/schemas/InputTextElementCreateElement' + column: '#/components/schemas/ColumnElementCreateElement' + button: '#/components/schemas/ButtonElementCreateElement' + table: '#/components/schemas/TableElementCreateElement' + form_container: '#/components/schemas/FormContainerElementCreateElement' + dropdown: '#/components/schemas/DropdownElementCreateElement' + checkbox: '#/components/schemas/CheckboxElementCreateElement' + iframe: '#/components/schemas/IFrameElementCreateElement' + auth_form: '#/components/schemas/AuthFormElementCreateElement' + Element_TypeElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementElement' + - $ref: '#/components/schemas/TextElementElement' + - $ref: '#/components/schemas/LinkElementElement' + - $ref: '#/components/schemas/ImageElementElement' + - $ref: '#/components/schemas/InputTextElementElement' + - $ref: '#/components/schemas/ColumnElementElement' + - $ref: '#/components/schemas/ButtonElementElement' + - $ref: '#/components/schemas/TableElementElement' + - $ref: '#/components/schemas/FormContainerElementElement' + - $ref: '#/components/schemas/DropdownElementElement' + - $ref: '#/components/schemas/CheckboxElementElement' + - $ref: '#/components/schemas/IFrameElementElement' + - $ref: '#/components/schemas/AuthFormElementElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementElement' + text: '#/components/schemas/TextElementElement' + link: '#/components/schemas/LinkElementElement' + image: '#/components/schemas/ImageElementElement' + input_text: '#/components/schemas/InputTextElementElement' + column: '#/components/schemas/ColumnElementElement' + button: '#/components/schemas/ButtonElementElement' + table: '#/components/schemas/TableElementElement' + form_container: '#/components/schemas/FormContainerElementElement' + dropdown: '#/components/schemas/DropdownElementElement' + checkbox: '#/components/schemas/CheckboxElementElement' + iframe: '#/components/schemas/IFrameElementElement' + auth_form: '#/components/schemas/AuthFormElementElement' + Element_TypePublicElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementPublicElement' + - $ref: '#/components/schemas/TextElementPublicElement' + - $ref: '#/components/schemas/LinkElementPublicElement' + - $ref: '#/components/schemas/ImageElementPublicElement' + - $ref: '#/components/schemas/InputTextElementPublicElement' + - $ref: '#/components/schemas/ColumnElementPublicElement' + - $ref: '#/components/schemas/ButtonElementPublicElement' + - $ref: '#/components/schemas/TableElementPublicElement' + - $ref: '#/components/schemas/FormContainerElementPublicElement' + - $ref: '#/components/schemas/DropdownElementPublicElement' + - $ref: '#/components/schemas/CheckboxElementPublicElement' + - $ref: '#/components/schemas/IFrameElementPublicElement' + - $ref: '#/components/schemas/AuthFormElementPublicElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementPublicElement' + text: '#/components/schemas/TextElementPublicElement' + link: '#/components/schemas/LinkElementPublicElement' + image: '#/components/schemas/ImageElementPublicElement' + input_text: '#/components/schemas/InputTextElementPublicElement' + column: '#/components/schemas/ColumnElementPublicElement' + button: '#/components/schemas/ButtonElementPublicElement' + table: '#/components/schemas/TableElementPublicElement' + form_container: '#/components/schemas/FormContainerElementPublicElement' + dropdown: '#/components/schemas/DropdownElementPublicElement' + checkbox: '#/components/schemas/CheckboxElementPublicElement' + iframe: '#/components/schemas/IFrameElementPublicElement' + auth_form: '#/components/schemas/AuthFormElementPublicElement' + EmailFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + EmailFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + EmailFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + EmailFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + EmailNotificationFrequencyEnum: + description: |- + * `instant` - instant + * `daily` - daily + * `weekly` - weekly + * `never` - never + enum: + - instant + - daily + - weekly + - never + type: string + EmailTesterRequest: + type: object + properties: + target_email: + type: string + format: email + required: + - target_email + EmailTesterResponse: + type: object + properties: + succeeded: + description: Whether or not the test email was sent successfully. + type: boolean + error_stack: + description: The full stack trace and error message if the test email failed. + type: string + nullable: true + error_type: + description: The type of error that occurred if the test email failed. + type: string + nullable: true + error: + description: >- + A short message describing the error that occured if the test email + failed + type: string + nullable: true + required: + - succeeded + EventEnum: + description: |- + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + enum: + - click + - submit + - after_login + type: string + EventTypeEnum: + description: |- + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + enum: + - rows.created + - row.created + - rows.updated + - row.updated + - rows.deleted + - row.deleted + type: string + EventTypesEnum: + description: |- + * `rows.created` - rows.created + * `rows.updated` - rows.updated + * `rows.deleted` - rows.deleted + enum: + - rows.created + - rows.updated + - rows.deleted + type: string + Events3eaEnum: + description: |- + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + enum: + - rows.created + - row.created + - rows.updated + - row.updated + - rows.deleted + - row.deleted + type: string + ExampleBatchRowsRequest: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/ExampleRowRequestSerializerWithUserFieldNames' + maxItems: 200 + minItems: 1 + required: + - items + ExampleBatchRowsResponse: + type: object + properties: + items: + type: array + items: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + maxItems: 200 + minItems: 1 + required: + - items + ExampleBatchUpdateRowRequestSerializerWithUserFieldNames: + type: object + properties: + id: + description: The unique identifier of the row in the table. + type: integer + field_1: + description: >- + This field represents the `text` field. The number in field_1 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_2: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_3: + description: >- + This field represents the `url` field. The number in field_3 is in a + normal request or response the id of the field. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name of the field. + type: string + nullable: true + field_4: + description: >- + This field represents the `email` field. The number in field_4 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + maxLength: 254 + field_5: + description: >- + This field represents the `number` field. The number in field_5 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + format: decimal + pattern: ^-?\d{0,50}(?:\.\d{0,0})?$ + nullable: true + field_6: + description: >- + This field represents the `rating` field. The number in field_6 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: integer + maximum: 5 + minimum: 0 + default: 0 + field_7: + description: >- + This field represents the `boolean` field. The number in field_7 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: boolean + default: false + field_8: + description: >- + This field represents the `date` field. The number in field_8 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + format: date + nullable: true + field_13: + description: >- + This field represents the `duration` field. The number in field_13 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + type: number + format: float + nullable: true + field_14: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. The response contains a + list of objects containing the `id` and the primary field's `value` + as a string for display purposes. + type: array + items: + type: integer + nullable: true + field_15: + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + type: array + items: + $ref: '#/components/schemas/FileFieldRequest' + nullable: true + field_16: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. + type: integer + nullable: true + field_17: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. The response represents chosen field, but also the value and + color is exposed. + type: array + items: + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + type: integer + nullable: true + field_18: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + type: string + nullable: true + maxLength: 100 + field_23: + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + type: array + items: + $ref: '#/components/schemas/Collaborator' + field_26: + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + type: string + nullable: true + required: + - id + ExampleRowRequest: + type: object + properties: + field_1: + description: >- + This field represents the `text` field. The number in field_1 is in + a normal request or response the id of the field. + type: string + nullable: true + field_2: + 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. + type: string + nullable: true + field_3: + description: >- + This field represents the `url` field. The number in field_3 is in a + normal request or response the id of the field. + type: string + nullable: true + field_4: + description: >- + This field represents the `email` field. The number in field_4 is in + a normal request or response the id of the field. + type: string + nullable: true + maxLength: 254 + field_5: + description: >- + This field represents the `number` field. The number in field_5 is + in a normal request or response the id of the field. + type: string + format: decimal + pattern: ^-?\d{0,50}(?:\.\d{0,0})?$ + nullable: true + field_6: + description: >- + This field represents the `rating` field. The number in field_6 is + in a normal request or response the id of the field. + type: integer + maximum: 5 + minimum: 0 + default: 0 + field_7: + description: >- + This field represents the `boolean` field. The number in field_7 is + in a normal request or response the id of the field. + type: boolean + default: false + field_8: + description: >- + This field represents the `date` field. The number in field_8 is in + a normal request or response the id of the field. + type: string + format: date + nullable: true + field_13: + 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. + type: number + format: float + nullable: true + field_14: + 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. + The response contains a list of objects containing the `id` and the + primary field's `value` as a string for display purposes. + type: array + items: + type: integer + nullable: true + field_15: + 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. + type: array + items: + $ref: '#/components/schemas/FileFieldRequest' + nullable: true + field_16: + 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. + type: integer + nullable: true + field_17: + 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. The response represents chosen + field, but also the value and color is exposed. + type: array + items: + 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. The response represents + chosen field, but also the value and color is exposed. + type: integer + nullable: true + field_18: + 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. + type: string + nullable: true + maxLength: 100 + field_23: + 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 list of objects representing the chosen + collaborators through the object's `id` property. The id is Baserow + user id. The response objects also contains the collaborator name + directly along with its id. + type: array + items: + $ref: '#/components/schemas/Collaborator' + field_26: + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. Allows + setting a write only password value. Providing a string will set the + password, `null` will unset it, `true` will be ignored. The response + will respond with `true` is a password is set, but will never expose + the password itself. + type: string + nullable: true + ExampleRowRequestSerializerWithUserFieldNames: + type: object + properties: + field_1: + description: >- + This field represents the `text` field. The number in field_1 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_2: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_3: + description: >- + This field represents the `url` field. The number in field_3 is in a + normal request or response the id of the field. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name of the field. + type: string + nullable: true + field_4: + description: >- + This field represents the `email` field. The number in field_4 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + maxLength: 254 + field_5: + description: >- + This field represents the `number` field. The number in field_5 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + format: decimal + pattern: ^-?\d{0,50}(?:\.\d{0,0})?$ + nullable: true + field_6: + description: >- + This field represents the `rating` field. The number in field_6 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: integer + maximum: 5 + minimum: 0 + default: 0 + field_7: + description: >- + This field represents the `boolean` field. The number in field_7 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: boolean + default: false + field_8: + description: >- + This field represents the `date` field. The number in field_8 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + format: date + nullable: true + field_13: + description: >- + This field represents the `duration` field. The number in field_13 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + type: number + format: float + nullable: true + field_14: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. The response contains a + list of objects containing the `id` and the primary field's `value` + as a string for display purposes. + type: array + items: + type: integer + nullable: true + field_15: + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + type: array + items: + $ref: '#/components/schemas/FileFieldRequest' + nullable: true + field_16: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. + type: integer + nullable: true + field_17: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. The response represents chosen field, but also the value and + color is exposed. + type: array + items: + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + type: integer + nullable: true + field_18: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + type: string + nullable: true + maxLength: 100 + field_23: + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + type: array + items: + $ref: '#/components/schemas/Collaborator' + field_26: + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + type: string + nullable: true + ExampleRowResponse: + type: object + properties: + id: + description: The unique identifier of the row in the table. + type: integer + order: + description: Indicates the position of the row, lowest first and highest last. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + field_1: + description: >- + This field represents the `text` field. The number in field_1 is in + a normal request or response the id of the field. + type: string + nullable: true + field_2: + 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. + type: string + nullable: true + field_3: + description: >- + This field represents the `url` field. The number in field_3 is in a + normal request or response the id of the field. + type: string + nullable: true + field_4: + description: >- + This field represents the `email` field. The number in field_4 is in + a normal request or response the id of the field. + type: string + nullable: true + maxLength: 254 + field_5: + description: >- + This field represents the `number` field. The number in field_5 is + in a normal request or response the id of the field. + type: string + format: decimal + pattern: ^-?\d{0,50}(?:\.\d{0,0})?$ + nullable: true + field_6: + description: >- + This field represents the `rating` field. The number in field_6 is + in a normal request or response the id of the field. + type: integer + maximum: 5 + minimum: 0 + default: 0 + field_7: + description: >- + This field represents the `boolean` field. The number in field_7 is + in a normal request or response the id of the field. + type: boolean + default: false + field_8: + description: >- + This field represents the `date` field. The number in field_8 is in + a normal request or response the id of the field. + type: string + format: date + nullable: true + field_9: + 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. + type: string + format: date-time + field_10: + $ref: '#/components/schemas/Collaborator' + field_11: + 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. + type: string + format: date-time + field_12: + $ref: '#/components/schemas/Collaborator' + field_13: + 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. + type: number + format: float + nullable: true + field_14: + 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. + The response contains a list of objects containing the `id` and the + primary field's `value` as a string for display purposes. + type: array + items: + $ref: '#/components/schemas/LinkRowValue' + field_15: + 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. + type: array + items: + $ref: '#/components/schemas/FileFieldResponse' + field_16: + 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. + allOf: + - $ref: '#/components/schemas/SelectOption' + nullable: true + field_17: + 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. The response represents chosen + field, but also the value and color is exposed. + type: array + items: + $ref: '#/components/schemas/SelectOption' + nullable: true + field_18: + 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. + type: string + nullable: true + maxLength: 100 + field_19: + description: >- + This field represents the `formula` field. The number in field_19 is + in a normal request or response the id of the field. + type: string + nullable: true + field_20: + description: >- + This field represents the `count` field. The number in field_20 is + in a normal request or response the id of the field. + type: string + nullable: true + field_21: + description: >- + This field represents the `rollup` field. The number in field_21 is + in a normal request or response the id of the field. + type: string + nullable: true + field_22: + description: >- + This field represents the `lookup` field. The number in field_22 is + in a normal request or response the id of the field. + type: string + nullable: true + field_23: + 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 list of objects representing the chosen + collaborators through the object's `id` property. The id is Baserow + user id. The response objects also contains the collaborator name + directly along with its id. + type: array + items: + $ref: '#/components/schemas/Collaborator' + field_24: + description: >- + This field represents the `uuid` field. The number in field_24 is in + a normal request or response the id of the field. Contains a unique + and persistent UUID for every row. + type: string + format: uuid + field_25: + description: >- + This field represents the `autonumber` field. The number in field_25 + is in a normal request or response the id of the field. Contains a + unique and persistent incremental integer number for every row. + type: integer + field_26: + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. Allows + setting a write only password value. Providing a string will set the + password, `null` will unset it, `true` will be ignored. The response + will respond with `true` is a password is set, but will never expose + the password itself. + type: boolean + required: + - id + x-konfig-properties: + field_10: + 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_12: + 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. + ExampleRowResponseSerializerWithUserFieldNames: + type: object + properties: + id: + description: The unique identifier of the row in the table. + type: integer + order: + description: Indicates the position of the row, lowest first and highest last. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + field_1: + description: >- + This field represents the `text` field. The number in field_1 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_2: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_3: + description: >- + This field represents the `url` field. The number in field_3 is in a + normal request or response the id of the field. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name of the field. + type: string + nullable: true + field_4: + description: >- + This field represents the `email` field. The number in field_4 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + maxLength: 254 + field_5: + description: >- + This field represents the `number` field. The number in field_5 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + format: decimal + pattern: ^-?\d{0,50}(?:\.\d{0,0})?$ + nullable: true + field_6: + description: >- + This field represents the `rating` field. The number in field_6 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: integer + maximum: 5 + minimum: 0 + default: 0 + field_7: + description: >- + This field represents the `boolean` field. The number in field_7 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: boolean + default: false + field_8: + description: >- + This field represents the `date` field. The number in field_8 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + format: date + nullable: true + field_9: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + type: string + format: date-time + field_10: + $ref: '#/components/schemas/Collaborator' + field_11: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + format: date-time + field_12: + $ref: '#/components/schemas/Collaborator' + field_13: + description: >- + This field represents the `duration` field. The number in field_13 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + type: number + format: float + nullable: true + field_14: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. The response contains a + list of objects containing the `id` and the primary field's `value` + as a string for display purposes. + type: array + items: + $ref: '#/components/schemas/LinkRowValue' + field_15: + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + type: array + items: + $ref: '#/components/schemas/FileFieldResponse' + field_16: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. + allOf: + - $ref: '#/components/schemas/SelectOption' + nullable: true + field_17: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. The response represents chosen field, but also the value and + color is exposed. + type: array + items: + $ref: '#/components/schemas/SelectOption' + nullable: true + field_18: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + type: string + nullable: true + maxLength: 100 + field_19: + description: >- + This field represents the `formula` field. The number in field_19 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_20: + description: >- + This field represents the `count` field. The number in field_20 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_21: + description: >- + This field represents the `rollup` field. The number in field_21 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_22: + description: >- + This field represents the `lookup` field. The number in field_22 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_23: + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + type: array + items: + $ref: '#/components/schemas/Collaborator' + field_24: + description: >- + This field represents the `uuid` field. The number in field_24 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Contains a unique and persistent + UUID for every row. + type: string + format: uuid + field_25: + description: >- + This field represents the `autonumber` field. The number in field_25 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Contains a unique and persistent + incremental integer number for every row. + type: integer + field_26: + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + type: boolean + required: + - id + x-konfig-properties: + field_10: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + field_12: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + Export: + oneOf: + - $ref: '#/components/schemas/CsvExporterOptions' + - $ref: '#/components/schemas/BaseExporterOptions' + - $ref: '#/components/schemas/BaseExporterOptions' + discriminator: + propertyName: exporter_type + mapping: + csv: '#/components/schemas/CsvExporterOptions' + json: '#/components/schemas/BaseExporterOptions' + xml: '#/components/schemas/BaseExporterOptions' + ExportCharsetEnum: + description: |- + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + enum: + - utf-8 + - iso-8859-6 + - windows-1256 + - iso-8859-4 + - windows-1257 + - iso-8859-14 + - iso-8859-2 + - windows-1250 + - gbk + - gb18030 + - big5 + - koi8-r + - koi8-u + - iso-8859-5 + - windows-1251 + - x-mac-cyrillic + - iso-8859-7 + - windows-1253 + - iso-8859-8 + - windows-1255 + - euc-jp + - iso-2022-jp + - shift-jis + - euc-kr + - macintosh + - iso-8859-10 + - iso-8859-16 + - windows-874 + - windows-1254 + - windows-1258 + - iso-8859-1 + - windows-1252 + - iso-8859-3 + type: string + ExportJob: + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + type: object + properties: + id: + type: integer + readOnly: true + table: + type: integer + nullable: true + view: + type: integer + nullable: true + exporter_type: + type: string + state: + $ref: '#/components/schemas/StateEnum' + status: + description: 'DEPRECATED: Use state instead' + type: string + readOnly: true + exported_file_name: + type: string + nullable: true + created_at: + type: string + format: date-time + readOnly: true + progress_percentage: + type: number + format: double + url: + type: string + format: uri + readOnly: true + required: + - created_at + - exporter_type + - id + - state + - status + - url + ExporterTypeEnum: + description: |- + * `csv` - csv + * `json` - json + * `xml` - xml + enum: + - csv + - json + - xml + type: string + FacebookAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the related field. + type: string + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + description: App ID, or consumer key + type: string + maxLength: 191 + secret: + description: API secret, client secret, or consumer secret + type: string + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + Field: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + FieldCreateField: + oneOf: + - $ref: '#/components/schemas/TextFieldCreateField' + - $ref: '#/components/schemas/LongTextFieldCreateField' + - $ref: '#/components/schemas/URLFieldCreateField' + - $ref: '#/components/schemas/EmailFieldCreateField' + - $ref: '#/components/schemas/NumberFieldCreateField' + - $ref: '#/components/schemas/RatingFieldCreateField' + - $ref: '#/components/schemas/BooleanFieldCreateField' + - $ref: '#/components/schemas/DateFieldCreateField' + - $ref: '#/components/schemas/LastModifiedFieldCreateField' + - $ref: '#/components/schemas/LastModifiedByFieldCreateField' + - $ref: '#/components/schemas/CreatedOnFieldCreateField' + - $ref: '#/components/schemas/CreatedByFieldCreateField' + - $ref: '#/components/schemas/DurationFieldCreateField' + - $ref: '#/components/schemas/LinkRowFieldCreateField' + - $ref: '#/components/schemas/FileFieldCreateField' + - $ref: '#/components/schemas/SingleSelectFieldCreateField' + - $ref: '#/components/schemas/MultipleSelectFieldCreateField' + - $ref: '#/components/schemas/PhoneNumberFieldCreateField' + - $ref: '#/components/schemas/FormulaFieldCreateField' + - $ref: '#/components/schemas/CountFieldCreateField' + - $ref: '#/components/schemas/RollupFieldCreateField' + - $ref: '#/components/schemas/LookupFieldCreateField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldCreateField' + - $ref: '#/components/schemas/UUIDFieldCreateField' + - $ref: '#/components/schemas/AutonumberFieldCreateField' + - $ref: '#/components/schemas/PasswordFieldCreateField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldCreateField' + long_text: '#/components/schemas/LongTextFieldCreateField' + url: '#/components/schemas/URLFieldCreateField' + email: '#/components/schemas/EmailFieldCreateField' + number: '#/components/schemas/NumberFieldCreateField' + rating: '#/components/schemas/RatingFieldCreateField' + boolean: '#/components/schemas/BooleanFieldCreateField' + date: '#/components/schemas/DateFieldCreateField' + last_modified: '#/components/schemas/LastModifiedFieldCreateField' + last_modified_by: '#/components/schemas/LastModifiedByFieldCreateField' + created_on: '#/components/schemas/CreatedOnFieldCreateField' + created_by: '#/components/schemas/CreatedByFieldCreateField' + duration: '#/components/schemas/DurationFieldCreateField' + link_row: '#/components/schemas/LinkRowFieldCreateField' + file: '#/components/schemas/FileFieldCreateField' + single_select: '#/components/schemas/SingleSelectFieldCreateField' + multiple_select: '#/components/schemas/MultipleSelectFieldCreateField' + phone_number: '#/components/schemas/PhoneNumberFieldCreateField' + formula: '#/components/schemas/FormulaFieldCreateField' + count: '#/components/schemas/CountFieldCreateField' + rollup: '#/components/schemas/RollupFieldCreateField' + lookup: '#/components/schemas/LookupFieldCreateField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldCreateField' + uuid: '#/components/schemas/UUIDFieldCreateField' + autonumber: '#/components/schemas/AutonumberFieldCreateField' + password: '#/components/schemas/PasswordFieldCreateField' + FieldField: + oneOf: + - $ref: '#/components/schemas/TextFieldField' + - $ref: '#/components/schemas/LongTextFieldField' + - $ref: '#/components/schemas/URLFieldField' + - $ref: '#/components/schemas/EmailFieldField' + - $ref: '#/components/schemas/NumberFieldField' + - $ref: '#/components/schemas/RatingFieldField' + - $ref: '#/components/schemas/BooleanFieldField' + - $ref: '#/components/schemas/DateFieldField' + - $ref: '#/components/schemas/LastModifiedFieldField' + - $ref: '#/components/schemas/LastModifiedByFieldField' + - $ref: '#/components/schemas/CreatedOnFieldField' + - $ref: '#/components/schemas/CreatedByFieldField' + - $ref: '#/components/schemas/DurationFieldField' + - $ref: '#/components/schemas/LinkRowFieldField' + - $ref: '#/components/schemas/FileFieldField' + - $ref: '#/components/schemas/SingleSelectFieldField' + - $ref: '#/components/schemas/MultipleSelectFieldField' + - $ref: '#/components/schemas/PhoneNumberFieldField' + - $ref: '#/components/schemas/FormulaFieldField' + - $ref: '#/components/schemas/CountFieldField' + - $ref: '#/components/schemas/RollupFieldField' + - $ref: '#/components/schemas/LookupFieldField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldField' + - $ref: '#/components/schemas/UUIDFieldField' + - $ref: '#/components/schemas/AutonumberFieldField' + - $ref: '#/components/schemas/PasswordFieldField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldField' + long_text: '#/components/schemas/LongTextFieldField' + url: '#/components/schemas/URLFieldField' + email: '#/components/schemas/EmailFieldField' + number: '#/components/schemas/NumberFieldField' + rating: '#/components/schemas/RatingFieldField' + boolean: '#/components/schemas/BooleanFieldField' + date: '#/components/schemas/DateFieldField' + last_modified: '#/components/schemas/LastModifiedFieldField' + last_modified_by: '#/components/schemas/LastModifiedByFieldField' + created_on: '#/components/schemas/CreatedOnFieldField' + created_by: '#/components/schemas/CreatedByFieldField' + duration: '#/components/schemas/DurationFieldField' + link_row: '#/components/schemas/LinkRowFieldField' + file: '#/components/schemas/FileFieldField' + single_select: '#/components/schemas/SingleSelectFieldField' + multiple_select: '#/components/schemas/MultipleSelectFieldField' + phone_number: '#/components/schemas/PhoneNumberFieldField' + formula: '#/components/schemas/FormulaFieldField' + count: '#/components/schemas/CountFieldField' + rollup: '#/components/schemas/RollupFieldField' + lookup: '#/components/schemas/LookupFieldField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldField' + uuid: '#/components/schemas/UUIDFieldField' + autonumber: '#/components/schemas/AutonumberFieldField' + password: '#/components/schemas/PasswordFieldField' + FieldFieldSerializerWithRelatedFields: + oneOf: + - $ref: '#/components/schemas/TextFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LongTextFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/URLFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/EmailFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/NumberFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/RatingFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/BooleanFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/DateFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/LastModifiedFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/LastModifiedByFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/CreatedOnFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/CreatedByFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/DurationFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LinkRowFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/FileFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/SingleSelectFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/MultipleSelectFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/PhoneNumberFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/FormulaFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/CountFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/RollupFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LookupFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/MultipleCollaboratorsFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/UUIDFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/AutonumberFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/PasswordFieldFieldSerializerWithRelatedFields' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldFieldSerializerWithRelatedFields' + long_text: '#/components/schemas/LongTextFieldFieldSerializerWithRelatedFields' + url: '#/components/schemas/URLFieldFieldSerializerWithRelatedFields' + email: '#/components/schemas/EmailFieldFieldSerializerWithRelatedFields' + number: '#/components/schemas/NumberFieldFieldSerializerWithRelatedFields' + rating: '#/components/schemas/RatingFieldFieldSerializerWithRelatedFields' + boolean: '#/components/schemas/BooleanFieldFieldSerializerWithRelatedFields' + date: '#/components/schemas/DateFieldFieldSerializerWithRelatedFields' + last_modified: >- + #/components/schemas/LastModifiedFieldFieldSerializerWithRelatedFields + last_modified_by: >- + #/components/schemas/LastModifiedByFieldFieldSerializerWithRelatedFields + created_on: '#/components/schemas/CreatedOnFieldFieldSerializerWithRelatedFields' + created_by: '#/components/schemas/CreatedByFieldFieldSerializerWithRelatedFields' + duration: '#/components/schemas/DurationFieldFieldSerializerWithRelatedFields' + link_row: '#/components/schemas/LinkRowFieldFieldSerializerWithRelatedFields' + file: '#/components/schemas/FileFieldFieldSerializerWithRelatedFields' + single_select: >- + #/components/schemas/SingleSelectFieldFieldSerializerWithRelatedFields + multiple_select: >- + #/components/schemas/MultipleSelectFieldFieldSerializerWithRelatedFields + phone_number: >- + #/components/schemas/PhoneNumberFieldFieldSerializerWithRelatedFields + formula: '#/components/schemas/FormulaFieldFieldSerializerWithRelatedFields' + count: '#/components/schemas/CountFieldFieldSerializerWithRelatedFields' + rollup: '#/components/schemas/RollupFieldFieldSerializerWithRelatedFields' + lookup: '#/components/schemas/LookupFieldFieldSerializerWithRelatedFields' + multiple_collaborators: >- + #/components/schemas/MultipleCollaboratorsFieldFieldSerializerWithRelatedFields + uuid: '#/components/schemas/UUIDFieldFieldSerializerWithRelatedFields' + autonumber: '#/components/schemas/AutonumberFieldFieldSerializerWithRelatedFields' + password: '#/components/schemas/PasswordFieldFieldSerializerWithRelatedFields' + FieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + FileFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + FileFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + FileFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + FileFieldRequest: + type: object + properties: + visible_name: + description: A visually editable name for the field. + type: string + name: + description: Accepts the name of the already uploaded user file. + type: string + required: + - name + 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 + FileFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + FileImportJobCreateJob: + type: object + properties: + type: + $ref: '#/components/schemas/TypeC5eEnum' + required: + - type + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + FileImportJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + database_id: + description: Database id where the table will be created. + type: integer + name: + description: The name of the new table. + type: string + maxLength: 255 + table_id: + description: Table id where the data will be imported. + type: integer + first_row_header: + type: boolean + default: false + report: + $ref: '#/components/schemas/Report' + required: + - database_id + - id + - progress_percentage + - report + - state + - type + x-konfig-properties: + report: + description: Import error report. + FilterActionTypeEnum: + description: >- + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + enum: + - create_group + - delete_group + - update_group + - order_groups + - create_application + - update_application + - delete_application + - order_applications + - duplicate_application + - install_template + - create_group_invitation + - delete_group_invitation + - accept_group_invitation + - reject_group_invitation + - update_group_invitation_permissions + - leave_group + - create_snapshot + - delete_snapshot + - restore_snapshot + - empty_trash + - restore_from_trash + - create_user + - update_user + - schedule_user_deletion + - cancel_user_deletion + - sign_in_user + - change_user_password + - send_reset_user_password + - reset_user_password + - create_db_token + - update_db_token_name + - update_db_token_permissions + - rotate_db_token_key + - delete_db_token_key + - create_webhook + - delete_webhook + - update_webhook + - export_table + - import_database_from_airtable + - create_table + - delete_table + - order_tables + - update_table + - duplicate_table + - create_row + - create_rows + - import_rows + - delete_row + - delete_rows + - move_row + - update_row + - update_rows + - create_view + - duplicate_view + - delete_view + - order_views + - update_view + - create_view_filter + - update_view_filter + - delete_view_filter + - create_view_sort + - update_view_sort + - delete_view_sort + - create_view_group + - update_view_group + - delete_view_group + - rotate_view_slug + - update_view_field_options + - create_decoration + - update_decoration + - delete_decoration + - create_view_filter_group + - update_view_filter_group + - delete_view_filter_group + - create_field + - delete_field + - update_field + - duplicate_field + - create_row_comment + - delete_row_comment + - update_row_comment + - create_team + - update_team + - delete_team + - create_team_subject + - delete_team_subject + - batch_assign_role + type: string + FormContainerElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + submit_button_label: + type: string + default: '' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + FormContainerElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + submit_button_label: + type: string + default: '' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + FormContainerElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + submit_button_label: + type: string + default: '' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + FormContainerElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + submit_button_label: + type: string + default: '' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + FormViewCreateView: + type: object + properties: + title: + description: The title that is displayed at the beginning of the form. + type: string + description: + description: The description that is displayed at the beginning of the form. + type: string + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + $ref: '#/components/schemas/OwnershipTypeEnum' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + mode: + $ref: '#/components/schemas/ModeC5eEnum' + cover_image: + description: The cover image that must be displayed at the top of the form. + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + logo_image: + description: The logo image that must be displayed at the top of the form. + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + submit_text: + description: The text displayed on the submit button. + type: string + submit_action: + $ref: '#/components/schemas/SubmitActionEnum' + submit_action_message: + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + type: string + submit_action_redirect_url: + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + type: string + format: uri + maxLength: 200 + receive_notification_on_submit: + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + type: boolean + readOnly: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - name + - receive_notification_on_submit + - slug + - type + x-konfig-properties: + ownership_type: + default: collaborative + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + mode: + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + submit_action: + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + FormViewFieldOptions: + type: object + properties: + description: + description: If provided, then this value be will be shown under the field name. + type: string + name: + description: >- + By default, the name of the related field will be shown to the + visitor. Optionally another name can be used by setting this name. + type: string + maxLength: 255 + enabled: + description: Indicates whether the field is included in the form. + type: boolean + required: + description: Indicates whether the field is required for the visitor to fill out. + type: boolean + show_when_matching_conditions: + description: Indicates whether this field is visible when the conditions are met. + type: boolean + condition_type: + $ref: '#/components/schemas/ConditionTypeEnum' + order: + description: The order that the field has in the form. Lower value is first. + type: integer + maximum: 32767 + minimum: -32768 + conditions: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsCondition' + condition_groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + field_component: + description: >- + Indicates which field input component is used in the form. The value + is only used in the frontend, and can differ per field. + type: string + maxLength: 32 + x-konfig-properties: + condition_type: + description: >- + Indicates whether all (AND) or any (OR) of the conditions should + match before shown. + + + * `AND` - And + + * `OR` - Or + FormViewFieldOptionsCondition: + type: object + properties: + id: + type: integer + field: + type: integer + type: + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + type: string + maxLength: 48 + value: + description: The filter value that must be compared to the field's value. + type: string + maxLength: 255 + group: + type: integer + nullable: true + required: + - field + - id + - type + FormViewFieldOptionsConditionGroup: + type: object + properties: + id: + type: integer + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + required: + - id + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + FormViewSubmitted: + type: object + properties: + submit_action: + $ref: '#/components/schemas/SubmitActionEnum' + submit_action_message: + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + type: string + submit_action_redirect_url: + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + type: string + format: uri + maxLength: 200 + row_id: + type: integer + required: + - row_id + x-konfig-properties: + submit_action: + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + FormViewView: + type: object + properties: + title: + description: The title that is displayed at the beginning of the form. + type: string + description: + description: The description that is displayed at the beginning of the form. + type: string + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_has_password: + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + type: boolean + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + mode: + $ref: '#/components/schemas/ModeC5eEnum' + cover_image: + description: The cover image that must be displayed at the top of the form. + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + logo_image: + description: The logo image that must be displayed at the top of the form. + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + submit_text: + description: The text displayed on the submit button. + type: string + submit_action: + $ref: '#/components/schemas/SubmitActionEnum' + submit_action_message: + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + type: string + submit_action_redirect_url: + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + type: string + format: uri + maxLength: 200 + receive_notification_on_submit: + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + type: boolean + readOnly: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - receive_notification_on_submit + - slug + - table + - table_id + - type + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + mode: + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + submit_action: + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + FormatEnum: + description: |- + * `plain` - Plain + * `markdown` - Markdown + enum: + - plain + - markdown + type: string + FormulaFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - name + - nullable + - type + FormulaFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - id + - name + - nullable + - order + - read_only + - table_id + - type + FormulaFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + FormulaFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - nullable + FormulaTypeEnum: + description: |- + * `invalid` - invalid + * `text` - text + * `char` - char + * `button` - button + * `link` - link + * `date_interval` - date_interval + * `duration` - duration + * `date` - date + * `boolean` - boolean + * `number` - number + * `array` - array + * `single_select` - single_select + * `multiple_select` - multiple_select + * `single_file` - single_file + enum: + - invalid + - text + - char + - button + - link + - date_interval + - duration + - date + - boolean + - number + - array + - single_select + - multiple_select + - single_file + type: string + FullHealthCheck: + type: object + properties: + passing: + description: >- + False if any of the critical service health checks are failing, true + otherwise. + type: boolean + readOnly: true + checks: + description: >- + An object keyed by the name of the health check and the value being + the result. + type: object + additionalProperties: + type: string + readOnly: true + required: + - checks + - passing + GalleryViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + $ref: '#/components/schemas/OwnershipTypeEnum' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + card_cover_image_field: + description: >- + References a file field of which the first image must be shown as + card cover image. + type: integer + nullable: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - name + - slug + - type + x-konfig-properties: + ownership_type: + default: collaborative + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + GalleryViewFieldOptions: + type: object + properties: + hidden: + description: Whether or not the field should be hidden in the card. + type: boolean + order: + description: The order that the field has in the form. Lower value is first. + type: integer + maximum: 32767 + minimum: -32768 + GalleryViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_has_password: + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + type: boolean + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + card_cover_image_field: + description: >- + References a file field of which the first image must be shown as + card cover image. + type: integer + nullable: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + GeneratedConditional_colorCreateViewDecoration: + type: object + properties: + type: + $ref: '#/components/schemas/TypeFc4Enum' + value_provider_type: + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + default: '' + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + order: + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + type: integer + maximum: 32767 + minimum: -32768 + required: + - type + x-konfig-properties: + type: + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_conf: + description: The configuration of the value provider + GeneratedConditional_colorUpdateViewDecoration: + type: object + properties: + type: + $ref: '#/components/schemas/TypeFc4Enum' + value_provider_type: + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + order: + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + type: integer + maximum: 32767 + minimum: -32768 + x-konfig-properties: + type: + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_conf: + description: The configuration of the value provider + GeneratedConditional_colorViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: integer + type: + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + type: string + maxLength: 255 + value_provider_type: + description: The value provider type that gives the value to the decorator. + type: string + maxLength: 255 + value_provider_conf: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + order: + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + type: integer + maximum: 32767 + minimum: -32768 + required: + - id + x-konfig-properties: + value_provider_conf: + description: The configuration of the value provider + GeneratedSingle_select_colorCreateViewDecoration: + type: object + properties: + type: + $ref: '#/components/schemas/TypeFc4Enum' + value_provider_type: + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + default: '' + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + $ref: '#/components/schemas/SelectColorValueProviderConf' + order: + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + type: integer + maximum: 32767 + minimum: -32768 + required: + - type + x-konfig-properties: + type: + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_conf: + description: The configuration of the value provider + GeneratedSingle_select_colorUpdateViewDecoration: + type: object + properties: + type: + $ref: '#/components/schemas/TypeFc4Enum' + value_provider_type: + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + $ref: '#/components/schemas/SelectColorValueProviderConf' + order: + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + type: integer + maximum: 32767 + minimum: -32768 + x-konfig-properties: + type: + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_conf: + description: The configuration of the value provider + GeneratedSingle_select_colorViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: integer + type: + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + type: string + maxLength: 255 + value_provider_type: + description: The value provider type that gives the value to the decorator. + type: string + maxLength: 255 + value_provider_conf: + $ref: '#/components/schemas/SelectColorValueProviderConf' + order: + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + type: integer + maximum: 32767 + minimum: -32768 + required: + - id + x-konfig-properties: + value_provider_conf: + description: The configuration of the value provider + GitHubAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the related field. + type: string + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + description: App ID, or consumer key + type: string + maxLength: 191 + secret: + description: API secret, client secret, or consumer secret + type: string + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + GitLabAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the related field. + type: string + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + base_url: + description: Base URL of the authorization server + type: string + format: uri + maxLength: 200 + client_id: + description: App ID, or consumer key + type: string + maxLength: 191 + secret: + description: API secret, client secret, or consumer secret + type: string + maxLength: 191 + required: + - base_url + - client_id + - id + - name + - secret + - type + GoogleAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the related field. + type: string + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + description: App ID, or consumer key + type: string + maxLength: 191 + secret: + description: API secret, client secret, or consumer secret + type: string + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + GridViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + $ref: '#/components/schemas/OwnershipTypeEnum' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - name + - slug + - type + x-konfig-properties: + ownership_type: + default: collaborative + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + GridViewFieldOptions: + type: object + properties: + width: + description: The width of the table field in the related view. + type: integer + maximum: 2147483647 + minimum: 0 + hidden: + description: Whether or not the field should be hidden in the current view. + type: boolean + order: + description: >- + The position that the field has within the view, lowest first. If + there is another field with the same order value then the field with + the lowest id must be shown first. + type: integer + maximum: 32767 + minimum: -32768 + aggregation_type: + description: >- + Indicates how the field value is aggregated. This value is different + from the `aggregation_raw_type`. The `aggregation_raw_type` is the + value extracted from the database, while the `aggregation_type` can + implies further calculations. For example: if you want to compute an + average, `sum` is going to be the `aggregation_raw_type`, the value + extracted from database, and `sum / row_count` will be the + aggregation result displayed to the user. This aggregation_type + should be used by the client to compute the final value. + type: string + maxLength: 48 + aggregation_raw_type: + description: >- + Indicates how to compute the raw aggregation value from database. + This type must be registered in the backend prior to use it. + + + * `empty_count` - empty_count + + * `not_empty_count` - not_empty_count + + * `unique_count` - unique_count + + * `min` - min + + * `max` - max + + * `sum` - sum + + * `average` - average + + * `median` - median + + * `decile` - decile + + * `variance` - variance + + * `std_dev` - std_dev + oneOf: + - $ref: '#/components/schemas/AggregationRawTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + GridViewFilter: + type: object + properties: + field_ids: + description: >- + Only the fields related to the provided ids are added to the + response. If None are provided all fields will be returned. + type: array + items: + type: integer + row_ids: + description: Only rows related to the provided ids are added to the response. + type: array + items: + type: integer + required: + - row_ids + GridViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_has_password: + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + type: boolean + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + HeadingElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be an formula. + type: string + default: '' + level: + description: The level of the heading from 1 to 6. + type: integer + maximum: 6 + minimum: 1 + default: 1 + font_color: + description: Heading font color. + type: string + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + HeadingElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be an formula. + type: string + default: '' + level: + description: The level of the heading from 1 to 6. + type: integer + maximum: 6 + minimum: 1 + default: 1 + font_color: + description: Heading font color. + type: string + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + HeadingElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be an formula. + type: string + default: '' + level: + description: The level of the heading from 1 to 6. + type: integer + maximum: 6 + minimum: 1 + default: 1 + font_color: + description: Heading font color. + type: string + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + HeadingElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be an formula. + type: string + default: '' + level: + description: The level of the heading from 1 to 6. + type: integer + maximum: 6 + minimum: 1 + default: 1 + font_color: + description: Heading font color. + type: string + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + IFrameElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + source_type: + $ref: '#/components/schemas/SourceTypeEnum' + url: + description: A link to the page to embed + type: string + default: '' + embed: + description: Inline HTML to embed + type: string + default: '' + height: + description: Height in pixels of the iframe + type: integer + maximum: 2000 + minimum: 1 + default: 300 + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + default: url + IFrameElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + source_type: + $ref: '#/components/schemas/SourceTypeEnum' + url: + description: A link to the page to embed + type: string + default: '' + embed: + description: Inline HTML to embed + type: string + default: '' + height: + description: Height in pixels of the iframe + type: integer + maximum: 2000 + minimum: 1 + default: 300 + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + default: url + IFrameElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + source_type: + $ref: '#/components/schemas/SourceTypeEnum' + url: + description: A link to the page to embed + type: string + default: '' + embed: + description: Inline HTML to embed + type: string + default: '' + height: + description: Height in pixels of the iframe + type: integer + maximum: 2000 + minimum: 1 + default: 300 + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + default: url + IFrameElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + source_type: + $ref: '#/components/schemas/SourceTypeEnum' + url: + description: A link to the page to embed + type: string + default: '' + embed: + description: Inline HTML to embed + type: string + default: '' + height: + description: Height in pixels of the iframe + type: integer + maximum: 2000 + minimum: 1 + default: 300 + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + default: url + IdEnum: + description: >- + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + enum: + - create_group + - delete_group + - update_group + - order_groups + - create_application + - update_application + - delete_application + - order_applications + - duplicate_application + - install_template + - create_group_invitation + - delete_group_invitation + - accept_group_invitation + - reject_group_invitation + - update_group_invitation_permissions + - leave_group + - create_snapshot + - delete_snapshot + - restore_snapshot + - empty_trash + - restore_from_trash + - create_user + - update_user + - schedule_user_deletion + - cancel_user_deletion + - sign_in_user + - change_user_password + - send_reset_user_password + - reset_user_password + - create_db_token + - update_db_token_name + - update_db_token_permissions + - rotate_db_token_key + - delete_db_token_key + - create_webhook + - delete_webhook + - update_webhook + - export_table + - import_database_from_airtable + - create_table + - delete_table + - order_tables + - update_table + - duplicate_table + - create_row + - create_rows + - import_rows + - delete_row + - delete_rows + - move_row + - update_row + - update_rows + - create_view + - duplicate_view + - delete_view + - order_views + - update_view + - create_view_filter + - update_view_filter + - delete_view_filter + - create_view_sort + - update_view_sort + - delete_view_sort + - create_view_group + - update_view_group + - delete_view_group + - rotate_view_slug + - update_view_field_options + - create_decoration + - update_decoration + - delete_decoration + - create_view_filter_group + - update_view_filter_group + - delete_view_filter_group + - create_field + - delete_field + - update_field + - duplicate_field + - create_row_comment + - delete_row_comment + - update_row_comment + - create_team + - update_team + - delete_team + - create_team_subject + - delete_team_subject + - batch_assign_role + type: string + ImageElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + description: The image file + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + image_url: + description: A link to the image file + type: string + maxLength: 1000 + alt_text: + description: Text that is displayed when the image can't load + type: string + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + $ref: '#/components/schemas/StyleImageConstraintEnum' + style_max_width: + description: The max-width for this image element. + type: integer + nullable: true + default: 100 + style_max_height: + description: The max-height for this image element. + type: integer + maximum: 3000 + minimum: 5 + nullable: true + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + style_image_constraint: + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + ImageElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + $ref: '#/components/schemas/UserFile' + image_url: + description: A link to the image file + type: string + default: '' + alt_text: + description: Text that is displayed when the image can't load + type: string + default: '' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + $ref: '#/components/schemas/StyleImageConstraintEnum' + style_max_width: + description: The max-width for this image element. + type: integer + maximum: 100 + minimum: 0 + nullable: true + style_max_height: + description: The max-height for this image element. + type: integer + maximum: 3000 + minimum: 5 + nullable: true + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + style_image_constraint: + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + ImageElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + $ref: '#/components/schemas/UserFile' + image_url: + description: A link to the image file + type: string + default: '' + alt_text: + description: Text that is displayed when the image can't load + type: string + default: '' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + $ref: '#/components/schemas/StyleImageConstraintEnum' + style_max_width: + description: The max-width for this image element. + type: integer + maximum: 100 + minimum: 0 + nullable: true + style_max_height: + description: The max-height for this image element. + type: integer + maximum: 3000 + minimum: 5 + nullable: true + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + style_image_constraint: + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + ImageElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + description: The image file + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + image_url: + description: A link to the image file + type: string + maxLength: 1000 + alt_text: + description: Text that is displayed when the image can't load + type: string + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + $ref: '#/components/schemas/StyleImageConstraintEnum' + style_max_width: + description: The max-width for this image element. + type: integer + nullable: true + default: 100 + style_max_height: + description: The max-height for this image element. + type: integer + maximum: 3000 + minimum: 5 + nullable: true + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + style_image_constraint: + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + ImageSourceTypeEnum: + description: |- + * `upload` - Upload + * `url` - Url + enum: + - upload + - url + type: string + InputTextElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this input + type: string + default: '' + default_value: + description: This text input's default value. + type: string + default: '' + required: + description: Whether this text input is a required field. + type: boolean + default: false + placeholder: + description: The placeholder text which should be applied to the element. + type: string + default: '' + is_multiline: + description: Whether this text input is multiline. + type: boolean + default: false + rows: + description: Number of rows displayed by the rendered input element + type: integer + maximum: 100 + minimum: 1 + default: 3 + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + InputTextElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this input + type: string + default: '' + default_value: + description: This text input's default value. + type: string + default: '' + required: + description: Whether this text input is a required field. + type: boolean + default: false + placeholder: + description: The placeholder text which should be applied to the element. + type: string + default: '' + is_multiline: + description: Whether this text input is multiline. + type: boolean + default: false + rows: + description: Number of rows displayed by the rendered input element + type: integer + maximum: 100 + minimum: 1 + default: 3 + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + InputTextElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this input + type: string + default: '' + default_value: + description: This text input's default value. + type: string + default: '' + required: + description: Whether this text input is a required field. + type: boolean + default: false + placeholder: + description: The placeholder text which should be applied to the element. + type: string + default: '' + is_multiline: + description: Whether this text input is multiline. + type: boolean + default: false + rows: + description: Number of rows displayed by the rendered input element + type: integer + maximum: 100 + minimum: 1 + default: 3 + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + InputTextElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + label: + description: The text label for this input + type: string + default: '' + default_value: + description: This text input's default value. + type: string + default: '' + required: + description: Whether this text input is a required field. + type: boolean + default: false + placeholder: + description: The placeholder text which should be applied to the element. + type: string + default: '' + is_multiline: + description: Whether this text input is multiline. + type: boolean + default: false + rows: + description: Number of rows displayed by the rendered input element + type: integer + maximum: 100 + minimum: 1 + default: 3 + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + InstallTemplateJobCreateJob: + type: object + properties: + type: + $ref: '#/components/schemas/TypeC5eEnum' + group_id: + description: The ID of the group where the template will be installed. + type: integer + workspace_id: + description: The ID of the workspace where the template will be installed. + type: integer + template_id: + description: The template ID that will be installed. + type: integer + required: + - template_id + - type + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + InstallTemplateJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + workspace: + $ref: '#/components/schemas/Workspace' + template: + $ref: '#/components/schemas/Template' + installed_applications: + type: object + additionalProperties: {} + readOnly: true + group: + $ref: '#/components/schemas/Workspace' + required: + - group + - id + - installed_applications + - progress_percentage + - state + - template + - type + - workspace + x-konfig-properties: + workspace: + readOnly: true + template: + readOnly: true + group: + readOnly: true + InstanceId: + type: object + properties: + instance_id: + type: string + readOnly: true + pattern: ^[-a-zA-Z0-9_]+$ + required: + - instance_id + IntegrationCreateIntegration: + oneOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationCreateIntegration' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowIntegrationCreateIntegration' + IntegrationIntegration: + oneOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationIntegration' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowIntegrationIntegration' + Integration_Service: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRow' + - $ref: '#/components/schemas/LocalBaserowListRows' + - $ref: '#/components/schemas/LocalBaserowUpsertRow' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRow' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRows' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRow' + Integration_ServiceCreateDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowCreateDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsCreateDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowCreateDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowCreateDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsCreateDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowCreateDataSource' + Integration_ServiceDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowDataSource' + Integration_ServicePublicDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowPublicDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsPublicDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowPublicDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowPublicDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsPublicDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowPublicDataSource' + Integration_ServiceService: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowService' + - $ref: '#/components/schemas/LocalBaserowListRowsService' + - $ref: '#/components/schemas/LocalBaserowUpsertRowService' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowService' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsService' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowService' + Job: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + required: + - id + - progress_percentage + - state + - type + Job_TypeCreateJob: + oneOf: + - $ref: '#/components/schemas/DuplicateApplicationJobCreateJob' + - $ref: '#/components/schemas/InstallTemplateJobCreateJob' + - $ref: '#/components/schemas/CreateSnapshotJobCreateJob' + - $ref: '#/components/schemas/RestoreSnapshotJobCreateJob' + - $ref: '#/components/schemas/AirtableImportJobCreateJob' + - $ref: '#/components/schemas/FileImportJobCreateJob' + - $ref: '#/components/schemas/DuplicateTableJobCreateJob' + - $ref: '#/components/schemas/DuplicateFieldJobCreateJob' + - $ref: '#/components/schemas/DuplicatePageJobCreateJob' + - $ref: '#/components/schemas/PublishDomainJobCreateJob' + - $ref: '#/components/schemas/AuditLogExportJobCreateJob' + discriminator: + propertyName: type + mapping: + duplicate_application: '#/components/schemas/DuplicateApplicationJobCreateJob' + install_template: '#/components/schemas/InstallTemplateJobCreateJob' + create_snapshot: '#/components/schemas/CreateSnapshotJobCreateJob' + restore_snapshot: '#/components/schemas/RestoreSnapshotJobCreateJob' + airtable: '#/components/schemas/AirtableImportJobCreateJob' + file_import: '#/components/schemas/FileImportJobCreateJob' + duplicate_table: '#/components/schemas/DuplicateTableJobCreateJob' + duplicate_field: '#/components/schemas/DuplicateFieldJobCreateJob' + duplicate_page: '#/components/schemas/DuplicatePageJobCreateJob' + publish_domain: '#/components/schemas/PublishDomainJobCreateJob' + audit_log_export: '#/components/schemas/AuditLogExportJobCreateJob' + Job_TypeJob: + oneOf: + - $ref: '#/components/schemas/DuplicateApplicationJobJob' + - $ref: '#/components/schemas/InstallTemplateJobJob' + - $ref: '#/components/schemas/CreateSnapshotJobJob' + - $ref: '#/components/schemas/RestoreSnapshotJobJob' + - $ref: '#/components/schemas/AirtableImportJobJob' + - $ref: '#/components/schemas/FileImportJobJob' + - $ref: '#/components/schemas/DuplicateTableJobJob' + - $ref: '#/components/schemas/DuplicateFieldJobJob' + - $ref: '#/components/schemas/DuplicatePageJobJob' + - $ref: '#/components/schemas/PublishDomainJobJob' + - $ref: '#/components/schemas/AuditLogExportJobJob' + discriminator: + propertyName: type + mapping: + duplicate_application: '#/components/schemas/DuplicateApplicationJobJob' + install_template: '#/components/schemas/InstallTemplateJobJob' + create_snapshot: '#/components/schemas/CreateSnapshotJobJob' + restore_snapshot: '#/components/schemas/RestoreSnapshotJobJob' + airtable: '#/components/schemas/AirtableImportJobJob' + file_import: '#/components/schemas/FileImportJobJob' + duplicate_table: '#/components/schemas/DuplicateTableJobJob' + duplicate_field: '#/components/schemas/DuplicateFieldJobJob' + duplicate_page: '#/components/schemas/DuplicatePageJobJob' + publish_domain: '#/components/schemas/PublishDomainJobJob' + audit_log_export: '#/components/schemas/AuditLogExportJobJob' + KanbanViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + $ref: '#/components/schemas/OwnershipTypeEnum' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + single_select_field: + type: integer + nullable: true + card_cover_image_field: + description: >- + References a file field of which the first image must be shown as + card cover image. + type: integer + nullable: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - name + - slug + - type + x-konfig-properties: + ownership_type: + default: collaborative + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + KanbanViewExampleResponse: + type: object + properties: + rows: + description: >- + Every select option related to the view's single select field can + have its own entry like this. + type: object + additionalProperties: + $ref: '#/components/schemas/KanbanViewExampleResponseStack' + field_options: + type: array + items: + $ref: '#/components/schemas/KanbanViewFieldOptions' + row_metadata: + 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. + type: object + additionalProperties: + $ref: '#/components/schemas/RowMetadata' + required: + - field_options + - rows + KanbanViewExampleResponseStack: + type: object + properties: + count: + description: The total count of rows that are included in this group. + type: integer + results: + description: >- + All the rows that belong in this group related with the provided + `limit` and `offset`. + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - results + KanbanViewFieldOptions: + type: object + properties: + hidden: + description: Whether or not the field should be hidden in the card. + type: boolean + order: + description: The order that the field has in the view. Lower value is first. + type: integer + maximum: 32767 + minimum: -32768 + KanbanViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_has_password: + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + type: boolean + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + single_select_field: + type: integer + nullable: true + card_cover_image_field: + description: >- + References a file field of which the first image must be shown as + card cover image. + type: integer + nullable: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LastModifiedByFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + LastModifiedByFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + LastModifiedByFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + LastModifiedByFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + LastModifiedFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_force_timezone_offset: + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + type: integer + nullable: true + required: + - type + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + LastModifiedFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + LastModifiedFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + LastModifiedFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + $ref: '#/components/schemas/DateFormatEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + date_time_format: + $ref: '#/components/schemas/DateTimeFormatEnum' + date_show_tzinfo: + description: Indicates if the timezone should be shown. + type: boolean + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_force_timezone_offset: + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + type: integer + nullable: true + x-konfig-properties: + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + License: + type: object + properties: + id: + type: integer + readOnly: true + license_id: + description: Unique identifier of the license. + type: string + is_active: + description: Indicates if the backend deems the license valid. + type: boolean + last_check: + type: string + format: date-time + nullable: true + valid_from: + description: From which timestamp the license becomes active. + type: string + format: date-time + valid_through: + description: Until which timestamp the license is active. + type: string + format: date-time + free_users_count: + description: The amount of free users that are currently using the license. + type: integer + readOnly: true + seats_taken: + description: The amount of users that are currently using the license. + type: integer + readOnly: true + seats: + description: The maximum amount of users that can use the license. + type: integer + product_code: + description: The product code that indicates what the license unlocks. + type: string + issued_on: + description: >- + The date when the license was issued. It could be that a new license + is issued with the same `license_id` because it was updated. In that + case, the one that has been issued last should be used. + type: string + format: date-time + issued_to_email: + description: Indicates to which email address the license has been issued. + type: string + format: email + issued_to_name: + description: Indicates to whom the license has been issued. + type: string + required: + - free_users_count + - id + - is_active + - issued_on + - issued_to_email + - issued_to_name + - license_id + - product_code + - seats + - seats_taken + - valid_from + - valid_through + LicenseUser: + type: object + properties: + id: + type: integer + readOnly: true + first_name: + type: string + maxLength: 150 + email: + title: Email address + type: string + format: email + maxLength: 254 + required: + - id + LicenseUserLookup: + type: object + properties: + id: + type: integer + readOnly: true + value: + description: The name and the email address of the user. + type: string + readOnly: true + required: + - id + - value + LicenseWithUsers: + type: object + properties: + id: + type: integer + readOnly: true + license_id: + description: Unique identifier of the license. + type: string + is_active: + description: Indicates if the backend deems the license valid. + type: boolean + last_check: + type: string + format: date-time + nullable: true + valid_from: + description: From which timestamp the license becomes active. + type: string + format: date-time + valid_through: + description: Until which timestamp the license is active. + type: string + format: date-time + free_users_count: + description: The amount of free users that are currently using the license. + type: integer + readOnly: true + seats_taken: + description: The amount of users that are currently using the license. + type: integer + readOnly: true + seats: + description: The maximum amount of users that can use the license. + type: integer + product_code: + description: The product code that indicates what the license unlocks. + type: string + issued_on: + description: >- + The date when the license was issued. It could be that a new license + is issued with the same `license_id` because it was updated. In that + case, the one that has been issued last should be used. + type: string + format: date-time + issued_to_email: + description: Indicates to which email address the license has been issued. + type: string + format: email + issued_to_name: + description: Indicates to whom the license has been issued. + type: string + users: + type: array + items: + $ref: '#/components/schemas/LicenseUser' + readOnly: true + required: + - free_users_count + - id + - is_active + - issued_on + - issued_to_email + - issued_to_name + - license_id + - product_code + - seats + - seats_taken + - users + - valid_from + - valid_through + LinkElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be an formula. + type: string + default: '' + navigation_type: + $ref: '#/components/schemas/NavigationTypeEnum' + navigate_to_page_id: + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + type: integer + nullable: true + navigate_to_url: + description: If no page is selected, this indicate the destination of the link. + type: string + default: '' + page_parameters: + description: The parameters for each parameters of the selected page if any. + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + variant: + $ref: '#/components/schemas/VariantEnum' + target: + $ref: '#/components/schemas/TargetEnum' + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + navigation_type: + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + variant: + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + LinkElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be an formula. + type: string + default: '' + navigation_type: + $ref: '#/components/schemas/NavigationTypeEnum' + navigate_to_page_id: + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + type: integer + nullable: true + navigate_to_url: + description: If no page is selected, this indicate the destination of the link. + type: string + default: '' + page_parameters: + description: The parameters for each parameters of the selected page if any. + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + variant: + $ref: '#/components/schemas/VariantEnum' + target: + $ref: '#/components/schemas/TargetEnum' + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + navigation_type: + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + variant: + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + LinkElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be an formula. + type: string + default: '' + navigation_type: + $ref: '#/components/schemas/NavigationTypeEnum' + navigate_to_page_id: + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + type: integer + nullable: true + navigate_to_url: + description: If no page is selected, this indicate the destination of the link. + type: string + default: '' + page_parameters: + description: The parameters for each parameters of the selected page if any. + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + variant: + $ref: '#/components/schemas/VariantEnum' + target: + $ref: '#/components/schemas/TargetEnum' + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + navigation_type: + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + variant: + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + LinkElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be an formula. + type: string + default: '' + navigation_type: + $ref: '#/components/schemas/NavigationTypeEnum' + navigate_to_page_id: + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + type: integer + nullable: true + navigate_to_url: + description: If no page is selected, this indicate the destination of the link. + type: string + default: '' + page_parameters: + description: The parameters for each parameters of the selected page if any. + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + variant: + $ref: '#/components/schemas/VariantEnum' + target: + $ref: '#/components/schemas/TargetEnum' + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + navigation_type: + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + variant: + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + LinkRowFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + link_row_table_id: + description: The id of the linked table. + type: integer + nullable: true + link_row_table: + description: (Deprecated) The id of the linked table. + type: integer + nullable: true + has_related_field: + type: boolean + required: + - name + - type + LinkRowFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + link_row_table_id: + description: The id of the linked table. + type: integer + nullable: true + link_row_related_field_id: + description: The id of the related field. + type: integer + nullable: true + readOnly: true + link_row_table: + description: (Deprecated) The id of the linked table. + type: integer + nullable: true + link_row_related_field: + description: (Deprecated) The id of the related field. + type: integer + readOnly: true + required: + - id + - link_row_related_field + - link_row_related_field_id + - name + - order + - read_only + - table_id + - type + LinkRowFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + link_row_table_id: + description: The id of the linked table. + type: integer + nullable: true + link_row_related_field_id: + description: The id of the related field. + type: integer + nullable: true + readOnly: true + link_row_table: + description: (Deprecated) The id of the linked table. + type: integer + nullable: true + link_row_related_field: + description: (Deprecated) The id of the related field. + type: integer + readOnly: true + required: + - id + - link_row_related_field + - link_row_related_field_id + - name + - order + - read_only + - related_fields + - table_id + - type + LinkRowFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + link_row_table_id: + description: The id of the linked table. + type: integer + nullable: true + link_row_table: + description: (Deprecated) The id of the linked table. + type: integer + nullable: true + has_related_field: + type: boolean + LinkRowValue: + type: object + properties: + id: + description: The unique identifier of the row in the related table. + type: integer + readOnly: true + value: + description: >- + The primary field's value as a string of the row in the related + table. + type: string + required: + - id + ListWorkspaceUsersWithMemberData: + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + type: object + properties: + id: + type: integer + readOnly: true + name: + description: User defined name. + type: string + readOnly: true + email: + description: User email. + type: string + readOnly: true + group: + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + type: integer + workspace: + description: The workspace that the user has access to. + type: integer + permissions: + description: The permissions that the user has within the workspace. + type: string + maxLength: 32 + created_on: + type: string + format: date-time + readOnly: true + user_id: + description: The user that has access to the workspace. + type: integer + readOnly: true + to_be_deleted: + description: True if user account is pending deletion. + type: boolean + teams: + description: >- + Enterprise only: a list of team IDs and names, which this workspace + user belongs to in this workspace. + type: array + items: + $ref: '#/components/schemas/WorkspaceUserEnterpriseTeam' + role_uid: + description: >- + Enterprise or advanced only: the uid of the role that is assigned to + this workspace user in this workspace. + type: string + nullable: true + highest_role_uid: + description: >- + Enterprise or advanced only: the highest role uid assigned to this + user in this workspace on anything, including roles from teams. + type: string + nullable: true + required: + - created_on + - email + - group + - id + - name + - to_be_deleted + - user_id + - workspace + LocalBaserowContextData: + type: object + properties: + databases: + type: array + items: + $ref: '#/components/schemas/DatabaseApplication' + required: + - databases + LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction: + description: Basic builder workflow action serializer + type: object + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + description: The type of the workflow action + type: string + readOnly: true + event: + $ref: '#/components/schemas/EventEnum' + service: + $ref: '#/components/schemas/Integration_ServiceService' + required: + - element_id + - event + - id + - order + - service + - type + x-konfig-properties: + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + description: The service which this workflow action is associated with. + LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + description: The id of the element the workflow action is associated with + type: integer + nullable: true + type: + $ref: '#/components/schemas/Type60cEnum' + event: + $ref: '#/components/schemas/EventEnum' + service: + $ref: '#/components/schemas/Integration_Service' + required: + - event + - id + - type + x-konfig-properties: + type: + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + description: The service which this workflow action is associated with. + LocalBaserowCreateRowWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + $ref: '#/components/schemas/Type60cEnum' + service: + $ref: '#/components/schemas/Integration_Service' + x-konfig-properties: + type: + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + service: + description: The service which this workflow action is associated with. + LocalBaserowField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + type: + description: The type of the related field. + type: string + readOnly: true + required: + - id + - name + - table_id + - type + LocalBaserowGetRow: + type: object + properties: + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + LocalBaserowGetRowCreateDataSource: + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + type: object + properties: + type: + $ref: '#/components/schemas/TypeC03Enum' + name: + description: Human name for this data source. + type: string + nullable: true + page_id: + description: Page this data source is linked to. + type: integer + nullable: true + before_id: + description: >- + If provided, creates the data_source before the data_source with the + given id. + type: integer + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + search_query: + description: The query to apply to the service to narrow the results down. + type: string + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - row_id + - table_id + - view_id + x-konfig-properties: + type: + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LocalBaserowGetRowDataSource: + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + type: object + properties: + id: + description: Data source id. + type: integer + readOnly: true + integration_id: + description: The integration used to establish the connection with the service. + type: integer + nullable: true + readOnly: true + type: + description: The type of the data source. + type: string + readOnly: true + schema: + description: The schema of the service. + type: object + additionalProperties: {} + readOnly: true + name: + description: Human name for this data source. + type: string + readOnly: true + page_id: + description: Page this data source is linked to. + type: integer + readOnly: true + order: + description: Lowest first. + type: number + format: float + readOnly: true + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + search_query: + description: The query to apply to the service to narrow the results down. + type: string + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - name + - order + - page_id + - row_id + - schema + - table_id + - type + - view_id + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LocalBaserowGetRowPublicDataSource: + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + type: object + properties: + id: + description: Data source id. + type: integer + readOnly: true + type: + description: The type of the data source. + type: string + readOnly: true + name: + description: Human name for this data source. + type: string + readOnly: true + page_id: + description: Page this data source is linked to. + type: integer + readOnly: true + order: + description: Lowest first. + type: number + format: float + readOnly: true + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + search_query: + description: The query to apply to the service to narrow the results down. + type: string + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - name + - order + - page_id + - row_id + - table_id + - type + - view_id + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LocalBaserowGetRowService: + description: Basic service serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + integration_id: + description: The integration used to establish the connection with the service. + type: integer + nullable: true + readOnly: true + type: + description: The type of the service. + type: string + readOnly: true + schema: + description: The schema of the service. + type: object + additionalProperties: {} + readOnly: true + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + search_query: + description: The query to apply to the service to narrow the results down. + type: string + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - row_id + - schema + - table_id + - type + - view_id + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LocalBaserowGetRowUpdateDataSource: + type: object + properties: + integration_id: + description: The related integration id. + type: integer + nullable: true + name: + type: string + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + search_query: + description: The query to apply to the service to narrow the results down. + type: string + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - row_id + - table_id + - view_id + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LocalBaserowIntegrationCreateIntegration: + description: >- + This serializer allow to set the type of an integration and the + integration id + + before which we want to insert the new integration. + type: object + properties: + before_id: + description: >- + If provided, creates the integration before the integration with the + given id. + type: integer + type: + $ref: '#/components/schemas/Type5f7Enum' + name: + type: string + maxLength: 255 + context_data: + $ref: '#/components/schemas/LocalBaserowContextData' + authorized_user: + $ref: '#/components/schemas/SubjectUser' + required: + - authorized_user + - context_data + - name + - type + x-konfig-properties: + type: + description: |- + The type of the integration. + + * `local_baserow` - local_baserow + context_data: + readOnly: true + authorized_user: + readOnly: true + LocalBaserowIntegrationIntegration: + description: Basic integration serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + application_id: + type: integer + readOnly: true + type: + description: The type of the integration. + type: string + readOnly: true + name: + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + context_data: + $ref: '#/components/schemas/LocalBaserowContextData' + authorized_user: + $ref: '#/components/schemas/SubjectUser' + required: + - application_id + - authorized_user + - context_data + - id + - name + - order + - type + x-konfig-properties: + context_data: + readOnly: true + authorized_user: + readOnly: true + LocalBaserowIntegrationUpdateIntegration: + type: object + properties: + name: + type: string + maxLength: 255 + context_data: + $ref: '#/components/schemas/LocalBaserowContextData' + authorized_user: + $ref: '#/components/schemas/SubjectUser' + required: + - authorized_user + - context_data + x-konfig-properties: + context_data: + readOnly: true + authorized_user: + readOnly: true + LocalBaserowListRows: + type: object + properties: + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + LocalBaserowListRowsCreateDataSource: + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + type: object + properties: + type: + $ref: '#/components/schemas/TypeC03Enum' + name: + description: Human name for this data source. + type: string + nullable: true + page_id: + description: Page this data source is linked to. + type: integer + nullable: true + before_id: + description: >- + If provided, creates the data_source before the data_source with the + given id. + type: integer + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + search_query: + description: The query to apply to the service to narrow the results down. + type: string + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - table_id + - view_id + x-konfig-properties: + type: + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LocalBaserowListRowsDataSource: + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + type: object + properties: + id: + description: Data source id. + type: integer + readOnly: true + integration_id: + description: The integration used to establish the connection with the service. + type: integer + nullable: true + readOnly: true + type: + description: The type of the data source. + type: string + readOnly: true + schema: + description: The schema of the service. + type: object + additionalProperties: {} + readOnly: true + name: + description: Human name for this data source. + type: string + readOnly: true + page_id: + description: Page this data source is linked to. + type: integer + readOnly: true + order: + description: Lowest first. + type: number + format: float + readOnly: true + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + search_query: + description: The query to apply to the service to narrow the results down. + type: string + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - name + - order + - page_id + - schema + - table_id + - type + - view_id + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LocalBaserowListRowsPublicDataSource: + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + type: object + properties: + id: + description: Data source id. + type: integer + readOnly: true + type: + description: The type of the data source. + type: string + readOnly: true + name: + description: Human name for this data source. + type: string + readOnly: true + page_id: + description: Page this data source is linked to. + type: integer + readOnly: true + order: + description: Lowest first. + type: number + format: float + readOnly: true + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + search_query: + description: The query to apply to the service to narrow the results down. + type: string + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - name + - order + - page_id + - table_id + - type + - view_id + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LocalBaserowListRowsService: + description: Basic service serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + integration_id: + description: The integration used to establish the connection with the service. + type: integer + nullable: true + readOnly: true + type: + description: The type of the service. + type: string + readOnly: true + schema: + description: The schema of the service. + type: object + additionalProperties: {} + readOnly: true + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + search_query: + description: The query to apply to the service to narrow the results down. + type: string + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - schema + - table_id + - type + - view_id + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LocalBaserowListRowsUpdateDataSource: + type: object + properties: + integration_id: + description: The related integration id. + type: integer + nullable: true + name: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + search_query: + description: The query to apply to the service to narrow the results down. + type: string + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - table_id + - view_id + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + LocalBaserowPasswordAppAuthProviderAppAuthProvider: + description: Basic app_auth_provider serializer mostly for returned values. + type: object + properties: + type: + description: The type of the app_auth_provider. + type: string + readOnly: true + id: + type: integer + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + password_field_id: + description: The id of the field to use as password for the user account. + type: integer + nullable: true + required: + - id + - type + LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider: + description: >- + This serializer allow to set the type of an app_auth_provider and the + + app_auth_provider id before which we want to insert the new + app_auth_provider. + type: object + properties: + type: + $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProviderTypeEnum + user_source_id: + type: integer + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + password_field_id: + description: The id of the field to use as password for the user account. + type: integer + nullable: true + required: + - type + - user_source_id + x-konfig-properties: + type: + description: |- + The type of the app_auth_provider. + + * `local_baserow_password` - local_baserow_password + LocalBaserowPasswordAppAuthProviderBaseAppAuthProviderTypeEnum: + description: '* `local_baserow_password` - local_baserow_password' + enum: + - local_baserow_password + type: string + LocalBaserowTableServiceFieldMapping: + type: object + properties: + field_id: + description: The primary key of the associated database table field. + type: integer + value: + type: string + required: + - field_id + - value + LocalBaserowTableServiceFilter: + type: object + properties: + id: + type: integer + readOnly: true + order: + type: integer + readOnly: true + field: + description: >- + The database Field, in the LocalBaserowTableService, which we would + like to filter upon. + type: integer + type: + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + type: string + maxLength: 48 + value: + description: A formula for the filter's value. + type: string + value_is_formula: + description: Indicates whether the value is a formula or not. + type: boolean + default: false + required: + - field + - id + - order + - type + - value + LocalBaserowTableServiceSort: + type: object + properties: + id: + type: integer + readOnly: true + field: + description: >- + The database Field, in the LocalBaserowTableService service, which + we would like to sort upon. + type: integer + order: + type: integer + readOnly: true + order_by: + $ref: '#/components/schemas/OrderByEnum' + required: + - field + - id + - order + x-konfig-properties: + order_by: + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction: + description: Basic builder workflow action serializer + type: object + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + description: The type of the workflow action + type: string + readOnly: true + event: + $ref: '#/components/schemas/EventEnum' + service: + $ref: '#/components/schemas/Integration_ServiceService' + required: + - element_id + - event + - id + - order + - service + - type + x-konfig-properties: + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + description: The service which this workflow action is associated with. + LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + description: The id of the element the workflow action is associated with + type: integer + nullable: true + type: + $ref: '#/components/schemas/Type60cEnum' + event: + $ref: '#/components/schemas/EventEnum' + service: + $ref: '#/components/schemas/Integration_Service' + required: + - event + - id + - type + x-konfig-properties: + type: + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + description: The service which this workflow action is associated with. + LocalBaserowUpdateRowWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + $ref: '#/components/schemas/Type60cEnum' + service: + $ref: '#/components/schemas/Integration_Service' + x-konfig-properties: + type: + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + service: + description: The service which this workflow action is associated with. + LocalBaserowUpsertRow: + type: object + properties: + table_id: + description: The id of the Baserow table we want the data for. + type: integer + nullable: true + integration_id: + description: The id of the Baserow integration we want the data for. + type: integer + nullable: true + row_id: + description: A formula for defining the intended row. + type: string + field_mappings: + description: The field mapping associated with this service. + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + LocalBaserowUpsertRowCreateDataSource: + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + type: object + properties: + type: + $ref: '#/components/schemas/TypeC03Enum' + name: + description: Human name for this data source. + type: string + nullable: true + page_id: + description: Page this data source is linked to. + type: integer + nullable: true + before_id: + description: >- + If provided, creates the data_source before the data_source with the + given id. + type: integer + table_id: + description: The id of the Baserow table we want the data for. + type: integer + nullable: true + row_id: + description: A formula for defining the intended row. + type: string + integration_id: + description: The id of the Baserow integration we want the data for. + type: integer + nullable: true + field_mappings: + description: The field mapping associated with this service. + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + x-konfig-properties: + type: + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + LocalBaserowUpsertRowDataSource: + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + type: object + properties: + id: + description: Data source id. + type: integer + readOnly: true + integration_id: + description: The id of the Baserow integration we want the data for. + type: integer + nullable: true + type: + description: The type of the data source. + type: string + readOnly: true + schema: + description: The schema of the service. + type: object + additionalProperties: {} + readOnly: true + name: + description: Human name for this data source. + type: string + readOnly: true + page_id: + description: Page this data source is linked to. + type: integer + readOnly: true + order: + description: Lowest first. + type: number + format: float + readOnly: true + table_id: + description: The id of the Baserow table we want the data for. + type: integer + nullable: true + row_id: + description: A formula for defining the intended row. + type: string + field_mappings: + description: The field mapping associated with this service. + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + required: + - id + - name + - order + - page_id + - schema + - type + LocalBaserowUpsertRowPublicDataSource: + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + type: object + properties: + id: + description: Data source id. + type: integer + readOnly: true + type: + description: The type of the data source. + type: string + readOnly: true + name: + description: Human name for this data source. + type: string + readOnly: true + page_id: + description: Page this data source is linked to. + type: integer + readOnly: true + order: + description: Lowest first. + type: number + format: float + readOnly: true + table_id: + description: The id of the Baserow table we want the data for. + type: integer + nullable: true + row_id: + description: A formula for defining the intended row. + type: string + integration_id: + description: The id of the Baserow integration we want the data for. + type: integer + nullable: true + field_mappings: + description: The field mapping associated with this service. + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + required: + - id + - name + - order + - page_id + - type + LocalBaserowUpsertRowService: + description: Basic service serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + integration_id: + description: The id of the Baserow integration we want the data for. + type: integer + nullable: true + type: + description: The type of the service. + type: string + readOnly: true + schema: + description: The schema of the service. + type: object + additionalProperties: {} + readOnly: true + table_id: + description: The id of the Baserow table we want the data for. + type: integer + nullable: true + row_id: + description: A formula for defining the intended row. + type: string + field_mappings: + description: The field mapping associated with this service. + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + required: + - id + - schema + - type + LocalBaserowUpsertRowUpdateDataSource: + type: object + properties: + integration_id: + description: The id of the Baserow integration we want the data for. + type: integer + nullable: true + name: + type: string + table_id: + description: The id of the Baserow table we want the data for. + type: integer + nullable: true + row_id: + description: A formula for defining the intended row. + type: string + field_mappings: + description: The field mapping associated with this service. + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + LocalBaserowUserSourceBasePublicUserSource: + description: Basic user source serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the user_source. + type: string + readOnly: true + name: + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + auth_providers: + description: Auth providers related to this user source. + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderAppAuthProvider' + table_id: + description: The id of the Baserow table we want the data for. + type: integer + nullable: true + email_field_id: + description: The id of the field to use as email for the user account. + type: integer + nullable: true + name_field_id: + description: The id of the field that contains the user name. + type: integer + nullable: true + required: + - id + - name + - order + - type + LocalBaserowUserSourceCreateUserSource: + description: >- + This serializer allow to set the type of an user_source and the + user_source id + + before which we want to insert the new user_source. + type: object + properties: + before_id: + description: >- + If provided, creates the user_source before the user_source with the + given id. + type: integer + type: + $ref: '#/components/schemas/Type5f7Enum' + name: + type: string + maxLength: 255 + integration_id: + description: The related integration id. + type: integer + auth_providers: + description: Auth providers related to this user source. + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderBaseAppAuthProvider' + table_id: + description: The id of the Baserow table we want the data for. + type: integer + nullable: true + email_field_id: + description: The id of the field to use as email for the user account. + type: integer + nullable: true + name_field_id: + description: The id of the field that contains the user name. + type: integer + nullable: true + required: + - integration_id + - name + - type + x-konfig-properties: + type: + description: |- + The type of the user_source. + + * `local_baserow` - local_baserow + LocalBaserowUserSourceUpdateUserSource: + description: A serializer to update a user source. + type: object + properties: + name: + type: string + maxLength: 255 + integration_id: + description: The related integration id. + type: integer + auth_providers: + description: Auth providers related to this user source. + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderBaseAppAuthProvider' + table_id: + description: The id of the Baserow table we want the data for. + type: integer + nullable: true + email_field_id: + description: The id of the field to use as email for the user account. + type: integer + nullable: true + name_field_id: + description: The id of the field that contains the user name. + type: integer + nullable: true + LocalBaserowUserSourceUserSource: + description: Basic user_source serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + application_id: + type: integer + readOnly: true + integration_id: + description: The Integration used to establish the connection with the service. + type: integer + nullable: true + readOnly: true + type: + description: The type of the user_source. + type: string + readOnly: true + name: + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + auth_providers: + description: Auth providers related to this user source. + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderAppAuthProvider' + table_id: + description: The id of the Baserow table we want the data for. + type: integer + nullable: true + email_field_id: + description: The id of the field to use as email for the user account. + type: integer + nullable: true + name_field_id: + description: The id of the field that contains the user name. + type: integer + nullable: true + required: + - application_id + - id + - integration_id + - name + - order + - type + LocalBaserowView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + required: + - id + - name + - table_id + LogoutWorkflowActionBuilderWorkflowAction: + description: Basic builder workflow action serializer + type: object + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + description: The type of the workflow action + type: string + readOnly: true + event: + $ref: '#/components/schemas/EventEnum' + required: + - element_id + - event + - id + - order + - type + x-konfig-properties: + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + LogoutWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + description: The id of the element the workflow action is associated with + type: integer + nullable: true + type: + $ref: '#/components/schemas/Type60cEnum' + event: + $ref: '#/components/schemas/EventEnum' + required: + - event + - id + - type + x-konfig-properties: + type: + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + LogoutWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + $ref: '#/components/schemas/Type60cEnum' + x-konfig-properties: + type: + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + LongTextFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + long_text_enable_rich_text: + description: Enable rich text formatting for the field. + type: boolean + nullable: true + required: + - name + - type + LongTextFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + long_text_enable_rich_text: + description: Enable rich text formatting for the field. + type: boolean + nullable: true + required: + - id + - name + - order + - read_only + - table_id + - type + LongTextFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + long_text_enable_rich_text: + description: Enable rich text formatting for the field. + type: boolean + nullable: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + LongTextFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + long_text_enable_rich_text: + description: Enable rich text formatting for the field. + type: boolean + nullable: true + LookupFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + type: integer + nullable: true + through_field_name: + description: The name of the link row field to lookup values for. + type: string + nullable: true + target_field_id: + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + type: integer + nullable: true + target_field_name: + description: >- + The name of the field in the table linked to by the through_field to + lookup. + type: string + nullable: true + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + LookupFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + type: integer + nullable: true + through_field_name: + description: The name of the link row field to lookup values for. + type: string + nullable: true + target_field_id: + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + type: integer + nullable: true + target_field_name: + description: >- + The name of the field in the table linked to by the through_field to + lookup. + type: string + nullable: true + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + LookupFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + type: integer + nullable: true + through_field_name: + description: The name of the link row field to lookup values for. + type: string + nullable: true + target_field_id: + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + type: integer + nullable: true + target_field_name: + description: >- + The name of the field in the table linked to by the through_field to + lookup. + type: string + nullable: true + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + LookupFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + type: integer + nullable: true + through_field_name: + description: The name of the link row field to lookup values for. + type: string + nullable: true + target_field_id: + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + type: integer + nullable: true + target_field_name: + description: >- + The name of the field in the table linked to by the through_field to + lookup. + type: string + nullable: true + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + ModeC5eEnum: + description: |- + * `form` - form + * `survey` - survey + enum: + - form + - survey + type: string + ModeFf8Enum: + description: |- + * `all` - all + * `mentions` - mentions + enum: + - all + - mentions + type: string + MultipleCollaboratorsFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + notify_user_when_added: + type: boolean + required: + - name + - type + MultipleCollaboratorsFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + notify_user_when_added: + type: boolean + required: + - id + - name + - order + - read_only + - table_id + - type + MultipleCollaboratorsFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + notify_user_when_added: + type: boolean + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + MultipleCollaboratorsFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + notify_user_when_added: + type: boolean + MultipleSelectFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - name + - type + MultipleSelectFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - table_id + - type + MultipleSelectFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + MultipleSelectFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + NavigationTypeEnum: + description: |- + * `page` - Page + * `custom` - Custom + enum: + - page + - custom + type: string + NotificationRecipient: + description: >- + Serialize notification data along with the recipient information about + the + + read status for the given user. + type: object + properties: + id: + description: The id of the notification. + type: integer + type: + description: The type of notification + type: string + sender: + $ref: '#/components/schemas/Sender' + workspace: + description: The workspace that the notification is in (if any). + type: string + readOnly: true + created_on: + description: The date and time that the notification was created. + type: string + format: date-time + read: + description: 'If True, then the notification has been read by the user. ' + type: boolean + data: + description: The data associated with the notification. + type: object + additionalProperties: {} + required: + - created_on + - data + - id + - sender + - type + - workspace + x-konfig-properties: + sender: + description: The user that sent the notification. + NotificationWorkflowActionBuilderWorkflowAction: + description: Basic builder workflow action serializer + type: object + properties: + title: + description: The title of the notification. Must be an formula. + type: string + default: '' + description: + description: The description of the notification. Must be an formula. + type: string + default: '' + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + description: The type of the workflow action + type: string + readOnly: true + event: + $ref: '#/components/schemas/EventEnum' + required: + - element_id + - event + - id + - order + - type + x-konfig-properties: + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + NotificationWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + title: + description: The title of the notification. Must be an formula. + type: string + default: '' + description: + description: The description of the notification. Must be an formula. + type: string + default: '' + id: + type: integer + readOnly: true + element_id: + description: The id of the element the workflow action is associated with + type: integer + nullable: true + type: + $ref: '#/components/schemas/Type60cEnum' + event: + $ref: '#/components/schemas/EventEnum' + required: + - event + - id + - type + x-konfig-properties: + type: + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + NotificationWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + title: + description: The title of the notification. Must be an formula. + type: string + default: '' + description: + description: The description of the notification. Must be an formula. + type: string + default: '' + type: + $ref: '#/components/schemas/Type60cEnum' + x-konfig-properties: + type: + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + NullEnum: + enum: + - null + type: object + NumberDecimalPlacesEnum: + description: |- + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + type: integer + NumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + number_decimal_places: + $ref: '#/components/schemas/NumberDecimalPlacesEnum' + number_negative: + description: Indicates if negative values are allowed. + type: boolean + required: + - name + - type + x-konfig-properties: + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + NumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + number_decimal_places: + $ref: '#/components/schemas/NumberDecimalPlacesEnum' + number_negative: + description: Indicates if negative values are allowed. + type: boolean + required: + - id + - name + - order + - read_only + - table_id + - type + x-konfig-properties: + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + NumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + number_decimal_places: + $ref: '#/components/schemas/NumberDecimalPlacesEnum' + number_negative: + description: Indicates if negative values are allowed. + type: boolean + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + x-konfig-properties: + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + NumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + number_decimal_places: + $ref: '#/components/schemas/NumberDecimalPlacesEnum' + number_negative: + description: Indicates if negative values are allowed. + type: boolean + x-konfig-properties: + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + OpenApiRoleAssignment: + description: Serializer for RoleAssignment used for the Open API spec + type: object + properties: + id: + type: integer + readOnly: true + role: + description: >- + The uid of the role assigned to the user or team in the given + workspace. + type: string + subject: + $ref: '#/components/schemas/OpenApiSubjectField' + subject_id: + description: The subject ID. + type: integer + maximum: 2147483647 + minimum: -2147483648 + scope_id: + description: The unique scope ID. + type: integer + maximum: 2147483647 + minimum: -2147483648 + subject_type: + $ref: '#/components/schemas/SubjectTypeB9aEnum' + scope_type: + $ref: '#/components/schemas/ScopeTypeEnum' + required: + - id + - role + - scope_id + - scope_type + - subject + - subject_id + - subject_type + x-konfig-properties: + subject: + description: >- + The structure of the subject field depends on the subject + typereturned and will have additional fields accordingly + subject_type: + description: |- + The subject type. + + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + scope_type: + description: >- + The type of the scope object. The scope object limit the role + assignment to this scope and all its descendants. + + + * `core` - core + + * `application` - application + + * `workspace` - workspace + + * `workspace_invitation` - workspace_invitation + + * `snapshot` - snapshot + + * `workspace_user` - workspace_user + + * `integration` - integration + + * `user_source` - user_source + + * `database` - database + + * `database_table` - database_table + + * `database_field` - database_field + + * `database_view` - database_view + + * `database_view_decoration` - database_view_decoration + + * `database_view_sort` - database_view_sort + + * `database_view_group` - database_view_group + + * `database_view_filter` - database_view_filter + + * `database_view_filter_group` - database_view_filter_group + + * `token` - token + + * `builder` - builder + + * `builder_page` - builder_page + + * `builder_element` - builder_element + + * `builder_domain` - builder_domain + + * `builder_data_source` - builder_data_source + + * `builder_workflow_action` - builder_workflow_action + + * `team` - team + + * `team_subject` - team_subject + + * `license` - license + OpenApiSubjectField: + type: object + properties: + id: + type: integer + required: + - id + OpenIdConnectAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the related field. + type: string + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + base_url: + description: Base URL of the authorization server + type: string + format: uri + maxLength: 200 + client_id: + description: App ID, or consumer key + type: string + maxLength: 191 + secret: + description: API secret, client secret, or consumer secret + type: string + maxLength: 191 + required: + - base_url + - client_id + - id + - name + - secret + - type + OpenPageWorkflowActionBuilderWorkflowAction: + description: Basic builder workflow action serializer + type: object + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + description: The type of the workflow action + type: string + readOnly: true + event: + $ref: '#/components/schemas/EventEnum' + url: + description: The url to open. Must be an formula. + type: string + default: '' + required: + - element_id + - event + - id + - order + - type + x-konfig-properties: + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + OpenPageWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + description: The id of the element the workflow action is associated with + type: integer + nullable: true + type: + $ref: '#/components/schemas/Type60cEnum' + event: + $ref: '#/components/schemas/EventEnum' + url: + description: The url to open. Must be an formula. + type: string + default: '' + required: + - event + - id + - type + x-konfig-properties: + type: + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + OpenPageWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + $ref: '#/components/schemas/Type60cEnum' + url: + description: The url to open. Must be an formula. + type: string + default: '' + x-konfig-properties: + type: + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + OrderApplications: + type: object + properties: + application_ids: + description: Application ids in the desired order. + type: array + items: + type: integer + required: + - application_ids + OrderByEnum: + description: |- + * `ASC` - Ascending + * `DESC` - Descending + enum: + - ASC + - DESC + type: string + OrderDomains: + type: object + properties: + domain_ids: + description: The ids of the domains in the order they are supposed to be set in + type: array + items: + type: integer + required: + - domain_ids + OrderEnum: + description: |- + * `ASC` - Ascending + * `DESC` - Descending + enum: + - ASC + - DESC + type: string + OrderPages: + type: object + properties: + page_ids: + description: The ids of the pages in the order they are supposed to be set in + type: array + items: + type: integer + required: + - page_ids + OrderTables: + type: object + properties: + table_ids: + description: Table ids in the desired order. + type: array + items: + type: integer + required: + - table_ids + OrderViews: + type: object + properties: + view_ids: + description: View ids in the desired order. + type: array + items: + type: integer + minItems: 1 + required: + - view_ids + OrderWorkflowActions: + type: object + properties: + workflow_action_ids: + description: >- + The ids of the workflow actions in the order they are supposed to be + set in + type: array + items: + type: integer + element_id: + description: The element the workflow actions belong to + type: integer + required: + - workflow_action_ids + OrderWorkspaces: + type: object + properties: + workspaces: + description: Workspace ids in the desired order. + type: array + items: + type: integer + required: + - workspaces + OwnershipTypeEnum: + description: |- + * `collaborative` - collaborative + * `personal` - personal + enum: + - collaborative + - personal + type: string + Page: + description: |- + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicPageSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + builder_id: + type: integer + readOnly: true + required: + - builder_id + - id + - name + - order + - path + PageParameterValue: + type: object + properties: + name: + type: string + value: + type: string + required: + - name + - value + PaginationSerializerAuditLog: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/AuditLog' + required: + - count + - next + - previous + - results + PaginationSerializerAuditLogUser: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/AuditLogUser' + required: + - count + - next + - previous + - results + PaginationSerializerAuditLogWorkspace: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/AuditLogWorkspace' + required: + - count + - next + - previous + - results + PaginationSerializerExampleRowResponseSerializerWithUserFieldNames: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + required: + - count + - next + - previous + - results + PaginationSerializerLicenseUserLookup: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/LicenseUserLookup' + required: + - count + - next + - previous + - results + PaginationSerializerLinkRowValue: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/LinkRowValue' + required: + - count + - next + - previous + - results + PaginationSerializerNotificationRecipient: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/NotificationRecipient' + required: + - count + - next + - previous + - results + PaginationSerializerRowComment: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/RowComment' + required: + - count + - next + - previous + - results + PaginationSerializerRowHistory: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/RowHistory' + required: + - count + - next + - previous + - results + PaginationSerializerTrashContents: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/TrashContents' + required: + - count + - next + - previous + - results + PaginationSerializerUserAdminResponse: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/UserAdminResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + description: >- + An object containing the field id as key and the properties related + to view as value. + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + row_metadata: + 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. + type: object + additionalProperties: + $ref: '#/components/schemas/RowMetadata' + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWithGridViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + description: >- + An object containing the field id as key and the properties related + to view as value. + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + row_metadata: + 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. + type: object + additionalProperties: + $ref: '#/components/schemas/RowMetadata' + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWorkspacesAdminResponse: + type: object + properties: + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/WorkspacesAdminResponse' + required: + - count + - next + - previous + - results + PasswordAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the related field. + type: string + readOnly: true + domain: + description: The email domain (if any) registered with this password provider. + type: string + enabled: + description: Whether the provider is enabled or not. + type: boolean + required: + - id + - type + PasswordFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + PasswordFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + PasswordFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + PasswordFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + PatchedAccount: + description: This serializer must be kept in sync with `UserSerializer`. + type: object + properties: + first_name: + type: string + maxLength: 150 + minLength: 2 + language: + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + type: string + maxLength: 10 + minLength: 2 + email_notification_frequency: + $ref: '#/components/schemas/EmailNotificationFrequencyEnum' + x-konfig-properties: + email_notification_frequency: + description: >- + The maximum frequency at which the user wants to receive email + notifications. + + + * `instant` - instant + + * `daily` - daily + + * `weekly` - weekly + + * `never` - never + PatchedApplicationBaseApplicationUpdatePolymorphic: + oneOf: + - $ref: '#/components/schemas/DatabaseBaseApplicationUpdatePolymorphic' + - $ref: '#/components/schemas/BuilderBaseApplicationUpdatePolymorphic' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseBaseApplicationUpdatePolymorphic' + builder: '#/components/schemas/BuilderBaseApplicationUpdatePolymorphic' + PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions: + anyOf: + - $ref: >- + #/components/schemas/NotificationWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/OpenPageWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LogoutWorkflowActionUpdateBuilderWorkflowActions + PatchedCombinedThemeConfigBlocks: + type: object + properties: + primary_color: + type: string + maxLength: 9 + secondary_color: + type: string + maxLength: 9 + border_color: + type: string + maxLength: 9 + heading_1_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_1_color: + type: string + maxLength: 9 + heading_2_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_2_color: + type: string + maxLength: 9 + heading_3_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_3_color: + type: string + maxLength: 9 + PatchedDecorator_Value_Provider_TypeUpdateViewDecoration: + oneOf: + - $ref: >- + #/components/schemas/GeneratedSingle_select_colorUpdateViewDecoration + - $ref: '#/components/schemas/GeneratedConditional_colorUpdateViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: >- + #/components/schemas/GeneratedSingle_select_colorUpdateViewDecoration + conditional_color: '#/components/schemas/GeneratedConditional_colorUpdateViewDecoration' + PatchedElement_TypeUpdateElement: + anyOf: + - $ref: '#/components/schemas/HeadingElementUpdateElement' + - $ref: '#/components/schemas/TextElementUpdateElement' + - $ref: '#/components/schemas/LinkElementUpdateElement' + - $ref: '#/components/schemas/ImageElementUpdateElement' + - $ref: '#/components/schemas/InputTextElementUpdateElement' + - $ref: '#/components/schemas/ColumnElementUpdateElement' + - $ref: '#/components/schemas/ButtonElementUpdateElement' + - $ref: '#/components/schemas/TableElementUpdateElement' + - $ref: '#/components/schemas/FormContainerElementUpdateElement' + - $ref: '#/components/schemas/DropdownElementUpdateElement' + - $ref: '#/components/schemas/CheckboxElementUpdateElement' + - $ref: '#/components/schemas/IFrameElementUpdateElement' + - $ref: '#/components/schemas/AuthFormElementUpdateElement' + PatchedExampleBatchUpdateRowsRequest: + type: object + properties: + items: + type: array + items: + $ref: >- + #/components/schemas/ExampleBatchUpdateRowRequestSerializerWithUserFieldNames + maxItems: 200 + minItems: 1 + PatchedExampleUpdateRowRequestSerializerWithUserFieldNames: + type: object + properties: + field_1: + description: >- + This field represents the `text` field. The number in field_1 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_2: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + field_3: + description: >- + This field represents the `url` field. The number in field_3 is in a + normal request or response the id of the field. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name of the field. + type: string + nullable: true + field_4: + description: >- + This field represents the `email` field. The number in field_4 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + nullable: true + maxLength: 254 + field_5: + description: >- + This field represents the `number` field. The number in field_5 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + format: decimal + pattern: ^-?\d{0,50}(?:\.\d{0,0})?$ + nullable: true + field_6: + description: >- + This field represents the `rating` field. The number in field_6 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: integer + maximum: 5 + minimum: 0 + default: 0 + field_7: + description: >- + This field represents the `boolean` field. The number in field_7 is + in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: boolean + default: false + field_8: + description: >- + This field represents the `date` field. The number in field_8 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. + type: string + format: date + nullable: true + field_13: + description: >- + This field represents the `duration` field. The number in field_13 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + type: number + format: float + nullable: true + field_14: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. The response contains a + list of objects containing the `id` and the primary field's `value` + as a string for display purposes. + type: array + items: + type: integer + nullable: true + field_15: + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + type: array + items: + $ref: '#/components/schemas/FileFieldRequest' + nullable: true + field_16: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. + type: integer + nullable: true + field_17: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. The response represents chosen field, but also the value and + color is exposed. + type: array + items: + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + type: integer + nullable: true + field_18: + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + type: string + nullable: true + maxLength: 100 + field_23: + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + type: array + items: + $ref: '#/components/schemas/Collaborator' + field_26: + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + type: string + nullable: true + PatchedFieldUpdateField: + oneOf: + - $ref: '#/components/schemas/TextFieldUpdateField' + - $ref: '#/components/schemas/LongTextFieldUpdateField' + - $ref: '#/components/schemas/URLFieldUpdateField' + - $ref: '#/components/schemas/EmailFieldUpdateField' + - $ref: '#/components/schemas/NumberFieldUpdateField' + - $ref: '#/components/schemas/RatingFieldUpdateField' + - $ref: '#/components/schemas/BooleanFieldUpdateField' + - $ref: '#/components/schemas/DateFieldUpdateField' + - $ref: '#/components/schemas/LastModifiedFieldUpdateField' + - $ref: '#/components/schemas/LastModifiedByFieldUpdateField' + - $ref: '#/components/schemas/CreatedOnFieldUpdateField' + - $ref: '#/components/schemas/CreatedByFieldUpdateField' + - $ref: '#/components/schemas/DurationFieldUpdateField' + - $ref: '#/components/schemas/LinkRowFieldUpdateField' + - $ref: '#/components/schemas/FileFieldUpdateField' + - $ref: '#/components/schemas/SingleSelectFieldUpdateField' + - $ref: '#/components/schemas/MultipleSelectFieldUpdateField' + - $ref: '#/components/schemas/PhoneNumberFieldUpdateField' + - $ref: '#/components/schemas/FormulaFieldUpdateField' + - $ref: '#/components/schemas/CountFieldUpdateField' + - $ref: '#/components/schemas/RollupFieldUpdateField' + - $ref: '#/components/schemas/LookupFieldUpdateField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldUpdateField' + - $ref: '#/components/schemas/UUIDFieldUpdateField' + - $ref: '#/components/schemas/AutonumberFieldUpdateField' + - $ref: '#/components/schemas/PasswordFieldUpdateField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldUpdateField' + long_text: '#/components/schemas/LongTextFieldUpdateField' + url: '#/components/schemas/URLFieldUpdateField' + email: '#/components/schemas/EmailFieldUpdateField' + number: '#/components/schemas/NumberFieldUpdateField' + rating: '#/components/schemas/RatingFieldUpdateField' + boolean: '#/components/schemas/BooleanFieldUpdateField' + date: '#/components/schemas/DateFieldUpdateField' + last_modified: '#/components/schemas/LastModifiedFieldUpdateField' + last_modified_by: '#/components/schemas/LastModifiedByFieldUpdateField' + created_on: '#/components/schemas/CreatedOnFieldUpdateField' + created_by: '#/components/schemas/CreatedByFieldUpdateField' + duration: '#/components/schemas/DurationFieldUpdateField' + link_row: '#/components/schemas/LinkRowFieldUpdateField' + file: '#/components/schemas/FileFieldUpdateField' + single_select: '#/components/schemas/SingleSelectFieldUpdateField' + multiple_select: '#/components/schemas/MultipleSelectFieldUpdateField' + phone_number: '#/components/schemas/PhoneNumberFieldUpdateField' + formula: '#/components/schemas/FormulaFieldUpdateField' + count: '#/components/schemas/CountFieldUpdateField' + rollup: '#/components/schemas/RollupFieldUpdateField' + lookup: '#/components/schemas/LookupFieldUpdateField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldUpdateField' + uuid: '#/components/schemas/UUIDFieldUpdateField' + autonumber: '#/components/schemas/AutonumberFieldUpdateField' + password: '#/components/schemas/PasswordFieldUpdateField' + PatchedIntegrationUpdateIntegration: + anyOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationUpdateIntegration' + PatchedIntegration_ServiceUpdateDataSource: + anyOf: + - $ref: '#/components/schemas/LocalBaserowGetRowUpdateDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsUpdateDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowUpdateDataSource' + PatchedMoveDataSource: + type: object + properties: + before_id: + description: >- + If provided, the data_source is moved before the data_source with + this Id. Otherwise the data_source is placed last for this page. + type: integer + nullable: true + PatchedMoveElement: + type: object + properties: + before_id: + description: >- + If provided, the element is moved before the element with this Id. + Otherwise the element is placed at the end of the page. + type: integer + nullable: true + parent_element_id: + description: >- + If provided, the element is moved as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + PatchedMoveIntegration: + type: object + properties: + before_id: + description: >- + If provided, the integration is moved before the integration with + this Id. Otherwise the integration is placed at the end of the page. + type: integer + nullable: true + PatchedMoveUserSource: + description: Serializer used when moving a user source. + type: object + properties: + before_id: + description: >- + If provided, the user_source is moved before the user_source with + this Id. Otherwise the user_source is placed at the end of the page. + type: integer + nullable: true + PatchedSettings: + type: object + properties: + allow_new_signups: + description: >- + Indicates whether new users can create a new account when signing + up. + type: boolean + allow_signups_via_workspace_invitations: + description: >- + Indicates whether invited users can create an account when signing + up, even if allow_new_signups is disabled. + type: boolean + allow_signups_via_group_invitations: + description: >- + DEPRECATED: Please use the functionally identical + `allow_signups_via_workspace_invitations` instead as this attribute + is being removed in the future. + type: boolean + allow_reset_password: + description: Indicates whether users can request a password reset link. + type: boolean + allow_global_workspace_creation: + description: Indicates whether all users can create workspaces, or just staff. + type: boolean + allow_global_group_creation: + description: >- + DEPRECATED: Please use the functionally identical + `allow_global_workspace_creation` instead as this attribute is being + removed in the future. + type: boolean + account_deletion_grace_delay: + description: >- + Number of days after the last login for an account pending deletion + to be deleted + type: integer + maximum: 32767 + minimum: 0 + show_admin_signup_page: + description: >- + Indicates that there are no admin users in the database yet, so in + the frontend the signup form will be shown instead of the login + page. + type: boolean + track_workspace_usage: + description: >- + Runs a job once per day which calculates per workspace row counts + and file storage usage, displayed on the admin workspace page. + type: boolean + show_baserow_help_request: + description: >- + Indicates whether the `We need your help!` message will be shown on + the dashboard + type: boolean + co_branding_logo: + description: Co-branding logo that's placed next to the Baserow logo (176x29). + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + PatchedTableUpdate: + type: object + properties: + name: + type: string + maxLength: 255 + PatchedTableWebhookUpdateRequest: + type: object + properties: + url: + description: The URL that must be called when the webhook is triggered. + type: string + maxLength: 2000 + include_all_events: + description: Indicates whether this webhook should listen to all events. + type: boolean + events: + description: A list containing the events that will trigger this webhook. + type: array + items: + $ref: '#/components/schemas/EventTypesEnum' + request_method: + $ref: '#/components/schemas/RequestMethodEnum' + headers: + description: >- + The additional headers as an object where the key is the name and + the value the value. + type: object + additionalProperties: {} + name: + description: An internal name of the webhook. + type: string + maxLength: 255 + active: + description: >- + Indicates whether the web hook is active. When a webhook has failed + multiple times, it will automatically be deactivated. + type: boolean + use_user_field_names: + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + type: boolean + x-konfig-properties: + request_method: + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + PatchedTokenUpdate: + type: object + properties: + name: + description: The human readable name of the database token for the user. + type: string + maxLength: 100 + permissions: + description: >- + Indicates per operation which permissions the database token has + within the whole workspace. If the value of for example `create` is + `true`, then the token can create rows in all tables related to the + workspace. If a list is provided with for example `[["table", 1]]` + then the token only has create permissions for the table with id 1. + Same goes for if a database references is provided. `[['database', + 1]]` means create permissions for all tables in the database with id + 1. + + + Example: + + ```json + + { + "create": true// Allows creating rows in all tables. + // Allows reading rows from database 1 and table 10. + "read": [["database", 1], ["table", 10]], + "update": false // Denies updating rows in all tables. + "delete": [] // Denies deleting rows in all tables. + } + ``` + type: object + properties: + create: + anyOf: + - description: >- + Indicating if the database token has permissions to all + tables. + type: boolean + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - description: >- + First element should indicate the reference type + `database` or `table`. + type: string + example: database + - description: >- + Second element should indicate the ID of the + reference. + type: number + example: 1 + read: + anyOf: + - description: >- + Indicating if the database token has permissions to all + tables. + type: boolean + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - description: >- + First element should indicate the reference type + `database` or `table`. + type: string + example: database + - description: >- + Second element should indicate the ID of the + reference. + type: number + example: 1 + update: + anyOf: + - description: >- + Indicating if the database token has permissions to all + tables. + type: boolean + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - description: >- + First element should indicate the reference type + `database` or `table`. + type: string + example: database + - description: >- + Second element should indicate the ID of the + reference. + type: number + example: 1 + delete: + anyOf: + - description: >- + Indicating if the database token has permissions to all + tables. + type: boolean + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - description: >- + First element should indicate the reference type + `database` or `table`. + type: string + example: database + - description: >- + Second element should indicate the ID of the + reference. + type: number + example: 1 + rotate_key: + description: Indicates if a new key must be generated. + type: boolean + default: false + PatchedTrashEntryRequest: + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + type: object + properties: + trash_item_id: + type: integer + minimum: 0 + parent_trash_item_id: + type: integer + minimum: 0 + nullable: true + trash_item_type: + $ref: '#/components/schemas/TrashItemTypeEnum' + PatchedUndoRedoRequest: + type: object + properties: + scopes: + $ref: '#/components/schemas/ActionScopes' + x-konfig-properties: + scopes: + description: >- + A JSON object with keys and values representing the various action + scopes to include when undoing or redoing. Every action in Baserow + will be associated with a action scope, when undoing/redoing only + actions which match any of the provided scope key:value pairs will + included when this endpoint picks the next action to undo/redo. If + no scopes are provided then all actions performed in the client + session will be included when undoing/redoing. + PatchedUpdateDomain: + type: object + properties: + type: + $ref: '#/components/schemas/Type0a6Enum' + domain_name: + type: string + x-konfig-properties: + type: + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + PatchedUpdatePage: + type: object + properties: + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + PatchedUpdatePremiumViewAttributes: + type: object + properties: + show_logo: + type: boolean + PatchedUpdateViewFilter: + type: object + properties: + field: + description: The field of which the value must be compared to the filter value. + type: integer + type: + $ref: '#/components/schemas/Type880Enum' + value: + description: The filter value that must be compared to the field's value. + type: string + maxLength: 255 + x-konfig-properties: + type: + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + PatchedUpdateViewFilterGroup: + type: object + properties: + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + PatchedUpdateViewGroupBy: + type: object + properties: + field: + description: The field that must be grouped by. + type: integer + order: + $ref: '#/components/schemas/OrderEnum' + width: + description: The pixel width of the group by in the related view. + type: integer + maximum: 2147483647 + minimum: 0 + x-konfig-properties: + order: + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + PatchedUpdateViewSort: + type: object + properties: + field: + description: The field that must be sorted on. + type: integer + order: + $ref: '#/components/schemas/OrderEnum' + x-konfig-properties: + order: + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + PatchedUpdateWorkspaceInvitation: + type: object + properties: + permissions: + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + type: string + maxLength: 32 + PatchedUpdateWorkspaceUser: + type: object + properties: + permissions: + description: The permissions that the user has within the workspace. + type: string + maxLength: 32 + PatchedUserAdminUpdate: + description: >- + Serializes a request body for updating a given user. Do not use for + returning user + + data as the password will be returned also. + type: object + properties: + username: + type: string + format: email + name: + type: string + maxLength: 150 + is_active: + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + type: boolean + is_staff: + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + type: boolean + password: + type: string + PatchedUser_SourceUpdateUserSource: + anyOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceUpdateUserSource' + PatchedViewFieldOptions: + anyOf: + - $ref: '#/components/schemas/grid_view_field_options' + - $ref: '#/components/schemas/gallery_view_field_options' + - $ref: '#/components/schemas/form_view_field_options' + - $ref: '#/components/schemas/kanban_view_field_options' + - $ref: '#/components/schemas/calendar_view_field_options' + PatchedViewUpdateView: + anyOf: + - $ref: '#/components/schemas/grid_view_update' + - $ref: '#/components/schemas/gallery_view_update' + - $ref: '#/components/schemas/form_view_update' + - $ref: '#/components/schemas/kanban_view_update' + - $ref: '#/components/schemas/calendar_view_update' + PatchedWorkspace: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + PathParam: + type: object + properties: + name: + description: The name of the parameter. + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/PathParamTypeEnum' + required: + - name + - type + x-konfig-properties: + type: + description: |- + The type of the parameter. + + * `text` - text + * `numeric` - numeric + PathParamTypeEnum: + description: |- + * `text` - text + * `numeric` - numeric + enum: + - text + - numeric + type: string + PermissionObject: + type: object + properties: + name: + description: The permission manager name. + type: string + permissions: + description: The content of the permission object for this permission manager. + type: object + additionalProperties: {} + required: + - name + - permissions + PhoneNumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + PhoneNumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + PhoneNumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + PhoneNumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + PublicBuilder: + description: >- + A public version of the builder serializer with less data to prevent + data leaks. + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + pages: + description: >- + This field is specific to the `builder` application and contains an + array of pages that are in the builder. + type: array + items: + $ref: '#/components/schemas/PublicPage' + readOnly: true + type: + description: The type of the object. + type: string + readOnly: true + theme: + $ref: '#/components/schemas/CombinedThemeConfigBlocks' + user_sources: + description: The user sources related with this builder. + type: array + items: + $ref: '#/components/schemas/User_SourceBasePublicUserSource' + readOnly: true + required: + - id + - name + - pages + - theme + - type + - user_sources + x-konfig-properties: + theme: + description: >- + This field is specific to the `builder` application and contains the + theme settings. + readOnly: true + PublicField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + PublicFormView: + type: object + properties: + title: + description: The title that is displayed at the beginning of the form. + type: string + description: + description: The description that is displayed at the beginning of the form. + type: string + mode: + $ref: '#/components/schemas/ModeC5eEnum' + cover_image: + description: The user file cover image that is displayed at the top of the form. + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + logo_image: + description: The user file logo image that is displayed at the top of the form. + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + submit_text: + description: The text displayed on the submit button. + type: string + fields: + type: array + items: + $ref: '#/components/schemas/PublicFormViewFieldOptions' + show_logo: + type: boolean + required: + - fields + x-konfig-properties: + mode: + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + PublicFormViewField: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the related field. + type: string + readOnly: true + required: + - id + - type + PublicFormViewFieldOptions: + type: object + properties: + description: + description: If provided, then this value be will be shown under the field name. + type: string + name: + description: If provided, then this value will be visible above the field input. + type: string + readOnly: true + required: + description: Indicates whether the field is required for the visitor to fill out. + type: boolean + order: + description: The order that the field has in the form. Lower value is first. + type: integer + maximum: 32767 + minimum: -32768 + field: + $ref: '#/components/schemas/PublicFormViewField' + show_when_matching_conditions: + description: Indicates whether this field is visible when the conditions are met. + type: boolean + condition_type: + $ref: '#/components/schemas/ConditionTypeEnum' + conditions: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsCondition' + condition_groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + field_component: + description: >- + Indicates which field input component is used in the form. The value + is only used in the frontend, and can differ per field. + type: string + maxLength: 32 + required: + - field + - name + x-konfig-properties: + field: + description: >- + The properties of the related field. These can be used to construct + the correct input. Additional properties could be added depending on + the field type. + readOnly: true + condition_type: + description: >- + Indicates whether all (AND) or any (OR) of the conditions should + match before shown. + + + * `AND` - And + + * `OR` - Or + PublicNone: + description: Basic builder workflow action serializer + type: object + properties: + title: + description: The title of the notification. Must be an formula. + type: string + default: '' + description: + description: The description of the notification. Must be an formula. + type: string + default: '' + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + description: The type of the workflow action + type: string + readOnly: true + event: + $ref: '#/components/schemas/EventEnum' + required: + - element_id + - event + - id + - order + - type + x-konfig-properties: + event: + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + PublicPage: + description: >- + A public version of the page serializer with less data to prevent data + leaks. + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + required: + - id + - name + - path + PublicPaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + description: >- + An object containing the field id as key and the properties related + to view as value. + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PublicPaginationSerializerWithGridViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + description: >- + An object containing the field id as key and the properties related + to view as value. + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + count: + description: The total amount of results. + type: integer + next: + description: URL to the next page. + type: string + format: uri + nullable: true + previous: + description: URL to the previous page. + type: string + format: uri + nullable: true + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PublicView: + type: object + properties: + id: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + table: + $ref: '#/components/schemas/PublicViewTable' + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + sortings: + type: array + items: + $ref: '#/components/schemas/PublicViewSort' + readOnly: true + group_bys: + type: array + items: + $ref: '#/components/schemas/PublicViewGroupBy' + readOnly: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug where the view can be accessed publicly on. + type: string + readOnly: true + pattern: ^[-a-zA-Z0-9_]+$ + show_logo: + type: boolean + required: + - group_bys + - id + - name + - order + - slug + - sortings + - table + - type + PublicViewAuthRequest: + type: object + properties: + password: + type: string + required: + - password + PublicViewAuthResponse: + type: object + properties: + access_token: + type: string + required: + - access_token + PublicViewGroupBy: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + field: + description: The field that must be grouped by. + type: integer + order: + $ref: '#/components/schemas/OrderEnum' + width: + description: The pixel width of the group by in the related view. + type: integer + maximum: 2147483647 + minimum: 0 + required: + - field + - id + - view + x-konfig-properties: + order: + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + PublicViewInfo: + type: object + properties: + fields: + type: array + items: + $ref: '#/components/schemas/PublicField' + readOnly: true + view: + $ref: '#/components/schemas/PublicView' + required: + - fields + - view + x-konfig-properties: + view: + readOnly: true + PublicViewSort: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + field: + description: The field that must be sorted on. + type: integer + order: + $ref: '#/components/schemas/OrderEnum' + required: + - field + - id + - view + x-konfig-properties: + order: + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + PublicViewTable: + type: object + properties: + id: + type: integer + readOnly: true + database_id: + type: integer + readOnly: true + required: + - database_id + - id + PublishDomainJobCreateJob: + type: object + properties: + type: + $ref: '#/components/schemas/TypeC5eEnum' + required: + - type + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + PublishDomainJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + required: + - id + - progress_percentage + - state + - type + RatingFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + max_value: + description: Maximum value the rating can take. + type: integer + maximum: 10 + minimum: 1 + color: + description: Color of the symbols. + type: string + maxLength: 50 + style: + $ref: '#/components/schemas/StyleEnum' + required: + - name + - type + x-konfig-properties: + style: + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + RatingFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + max_value: + description: Maximum value the rating can take. + type: integer + maximum: 10 + minimum: 1 + color: + description: Color of the symbols. + type: string + maxLength: 50 + style: + $ref: '#/components/schemas/StyleEnum' + required: + - id + - name + - order + - read_only + - table_id + - type + x-konfig-properties: + style: + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + RatingFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + max_value: + description: Maximum value the rating can take. + type: integer + maximum: 10 + minimum: 1 + color: + description: Color of the symbols. + type: string + maxLength: 50 + style: + $ref: '#/components/schemas/StyleEnum' + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + x-konfig-properties: + style: + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + RatingFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + max_value: + description: Maximum value the rating can take. + type: integer + maximum: 10 + minimum: 1 + color: + description: Color of the symbols. + type: string + maxLength: 50 + style: + $ref: '#/components/schemas/StyleEnum' + x-konfig-properties: + style: + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + Register: + type: object + properties: + name: + type: string + maxLength: 150 + minLength: 2 + email: + description: The email address is also going to be the username. + type: string + format: email + password: + type: string + language: + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + type: string + default: en + maxLength: 10 + minLength: 2 + authenticate: + description: >- + Indicates whether an authentication JWT should be generated and be + included in the response. + type: boolean + default: false + group_invitation_token: + description: >- + DEPRECATED: Please use `workspace_invitation_token` which this + attribute is being renamed to in 2024. + type: string + workspace_invitation_token: + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after signing up. + type: string + template_id: + description: >- + The id of the template that must be installed after creating the + account. This only works if the `workspace_invitation_token` param + is not provided. + type: integer + required: + - email + - name + - password + RegisterLicense: + type: object + properties: + license: + description: The license that you want to register. + type: string + required: + - license + RelatedFields: + type: object + properties: + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - related_fields + Report: + type: object + properties: + failing_rows: + description: >- + An object containing field in error by rows. The keys are the row + indexes from original file and values are objects of errors by + fields. + type: object + additionalProperties: + description: >- + An object containing error messages by fields. The key is the + field name and the value is an array of error messages for this + field. These messages are localized for the user who has created + the job when the translation is available. + type: object + additionalProperties: + description: Error messages for this field. + type: array + items: + type: string + required: + - failing_rows + RequestMethodEnum: + description: |- + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + enum: + - POST + - GET + - PUT + - PATCH + - DELETE + type: string + ResetPasswordBodyValidation: + type: object + properties: + token: + type: string + password: + type: string + required: + - password + - token + RestoreSnapshotJobCreateJob: + type: object + properties: + type: + $ref: '#/components/schemas/TypeC5eEnum' + required: + - type + x-konfig-properties: + type: + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + RestoreSnapshotJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + required: + - id + - progress_percentage + - state + - type + RollupFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: The id of the link row field to rollup values for. + type: integer + nullable: true + target_field_id: + description: >- + The id of the field in the table linked to by the through_field to + rollup. + type: integer + nullable: true + rollup_function: + description: The rollup formula function that must be applied. + type: string + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + RollupFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: The id of the link row field to rollup values for. + type: integer + nullable: true + target_field_id: + description: >- + The id of the field in the table linked to by the through_field to + rollup. + type: integer + nullable: true + rollup_function: + description: The rollup formula function that must be applied. + type: string + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + RollupFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: The id of the link row field to rollup values for. + type: integer + nullable: true + target_field_id: + description: >- + The id of the field in the table linked to by the through_field to + rollup. + type: integer + nullable: true + rollup_function: + description: The rollup formula function that must be applied. + type: string + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + RollupFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + through_field_id: + description: The id of the link row field to rollup values for. + type: integer + nullable: true + target_field_id: + description: >- + The id of the field in the table linked to by the through_field to + rollup. + type: integer + nullable: true + rollup_function: + description: The rollup formula function that must be applied. + type: string + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + RowComment: + type: object + properties: + id: + type: integer + readOnly: true + user_id: + description: The user who made the comment. + type: integer + nullable: true + readOnly: true + first_name: + type: string + maxLength: 32 + table_id: + description: 'The table the row this comment is for is found in. ' + type: integer + readOnly: true + row_id: + description: The id of the row the comment is for. + type: integer + maximum: 2147483647 + minimum: 0 + message: + type: string + readOnly: true + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + edited: + type: string + readOnly: true + trashed: + type: boolean + required: + - created_on + - edited + - id + - message + - row_id + - table_id + - updated_on + - user_id + RowCommentCreate: + type: object + properties: + message: + description: The rich text comment content. + type: object + additionalProperties: {} + required: + - message + RowCommentsNotificationMode: + type: object + properties: + mode: + $ref: '#/components/schemas/ModeFf8Enum' + required: + - mode + x-konfig-properties: + mode: + description: >- + The mode to use to receive notifications for new comments on a table + row. + + + * `all` - all + + * `mentions` - mentions + RowCommentsNotificationModeEnum: + description: |- + * `all` - all + * `mentions` - mentions + enum: + - all + - mentions + type: string + RowHistory: + type: object + properties: + id: + type: integer + readOnly: true + action_type: + description: The type of the action that was performed. + type: string + user: + $ref: '#/components/schemas/RowHistoryUser' + timestamp: + description: The timestamp of the action that was performed. + type: string + format: date-time + before: + description: >- + The mapping between field_ids and values for the row before the + action was performed. + type: object + additionalProperties: {} + after: + description: >- + The mapping between field_ids and values for the row after the + action was performed. + type: object + additionalProperties: {} + fields_metadata: + description: The metadata of the fields that were changed. + type: object + additionalProperties: {} + required: + - action_type + - after + - before + - fields_metadata + - id + - timestamp + - user + x-konfig-properties: + user: + description: The user that performed the action. + RowHistoryUser: + type: object + properties: + id: + description: The id of the user. + type: integer + name: + description: The first name of the user. + type: string + required: + - id + - name + RowIdentifierTypeEnum: + description: |- + * `id` - Id + * `count` - Count + enum: + - id + - count + type: string + RowMetadata: + type: object + properties: + row_comment_count: + description: How many row comments exist for this row. + type: integer + minimum: 0 + row_comments_notification_mode: + $ref: '#/components/schemas/RowCommentsNotificationModeEnum' + SAMLResponse: + type: object + properties: + SAMLResponse: + description: The encoded SAML response from the IdP. + type: string + RelayState: + description: The frontend URL where redirect the authenticated user. + type: string + required: + - RelayState + - SAMLResponse + SamlAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the related field. + type: string + readOnly: true + domain: + description: The email domain registered with this provider. + type: string + enabled: + description: Whether the provider is enabled or not. + type: boolean + metadata: + description: The SAML metadata XML provided by the IdP. + type: string + is_verified: + description: Whether or not a user sign in correctly with this SAML provider. + type: boolean + readOnly: true + required: + - domain + - id + - is_verified + - metadata + - type + ScopeTypeEnum: + description: |- + * `core` - core + * `application` - application + * `workspace` - workspace + * `workspace_invitation` - workspace_invitation + * `snapshot` - snapshot + * `workspace_user` - workspace_user + * `integration` - integration + * `user_source` - user_source + * `database` - database + * `database_table` - database_table + * `database_field` - database_field + * `database_view` - database_view + * `database_view_decoration` - database_view_decoration + * `database_view_sort` - database_view_sort + * `database_view_group` - database_view_group + * `database_view_filter` - database_view_filter + * `database_view_filter_group` - database_view_filter_group + * `token` - token + * `builder` - builder + * `builder_page` - builder_page + * `builder_element` - builder_element + * `builder_domain` - builder_domain + * `builder_data_source` - builder_data_source + * `builder_workflow_action` - builder_workflow_action + * `team` - team + * `team_subject` - team_subject + * `license` - license + enum: + - core + - application + - workspace + - workspace_invitation + - snapshot + - workspace_user + - integration + - user_source + - database + - database_table + - database_field + - database_view + - database_view_decoration + - database_view_sort + - database_view_group + - database_view_filter + - database_view_filter_group + - token + - builder + - builder_page + - builder_element + - builder_domain + - builder_data_source + - builder_workflow_action + - team + - team_subject + - license + type: string + SelectColorValueProviderConf: + type: object + properties: + field_id: + description: >- + An id of a select field of the table. The value provider return the + color of the selected option for each row. + type: integer + nullable: true + required: + - field_id + SelectOption: + type: object + properties: + id: + type: integer + value: + type: string + maxLength: 255 + color: + type: string + maxLength: 255 + required: + - color + - value + SendResetPasswordEmailBodyValidation: + type: object + properties: + email: + description: The email address of the user that has requested a password reset. + type: string + format: email + base_url: + description: >- + The base URL where the user can reset his password. The reset token + is going to be appended to the base_url (base_url '/token'). + type: string + format: uri + required: + - base_url + - email + Sender: + type: object + properties: + id: + type: integer + readOnly: true + username: + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + type: string + pattern: ^[\w.@+-]+$ + maxLength: 150 + first_name: + type: string + maxLength: 150 + required: + - id + - username + Settings: + type: object + properties: + allow_new_signups: + description: >- + Indicates whether new users can create a new account when signing + up. + type: boolean + allow_signups_via_workspace_invitations: + description: >- + Indicates whether invited users can create an account when signing + up, even if allow_new_signups is disabled. + type: boolean + allow_signups_via_group_invitations: + description: >- + DEPRECATED: Please use the functionally identical + `allow_signups_via_workspace_invitations` instead as this attribute + is being removed in the future. + type: boolean + allow_reset_password: + description: Indicates whether users can request a password reset link. + type: boolean + allow_global_workspace_creation: + description: Indicates whether all users can create workspaces, or just staff. + type: boolean + allow_global_group_creation: + description: >- + DEPRECATED: Please use the functionally identical + `allow_global_workspace_creation` instead as this attribute is being + removed in the future. + type: boolean + account_deletion_grace_delay: + description: >- + Number of days after the last login for an account pending deletion + to be deleted + type: integer + maximum: 32767 + minimum: 0 + show_admin_signup_page: + description: >- + Indicates that there are no admin users in the database yet, so in + the frontend the signup form will be shown instead of the login + page. + type: boolean + track_workspace_usage: + description: >- + Runs a job once per day which calculates per workspace row counts + and file storage usage, displayed on the admin workspace page. + type: boolean + show_baserow_help_request: + description: >- + Indicates whether the `We need your help!` message will be shown on + the dashboard + type: boolean + co_branding_logo: + description: Co-branding logo that's placed next to the Baserow logo (176x29). + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + SingleAuditLogExportJobRequest: + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + type: object + properties: + url: + type: string + format: uri + readOnly: true + export_charset: + $ref: '#/components/schemas/ExportCharsetEnum' + csv_column_separator: + $ref: '#/components/schemas/CsvColumnSeparatorEnum' + csv_first_row_header: + description: Whether or not to generate a header row at the top of the csv file. + type: boolean + default: true + filter_user_id: + description: 'Optional: The user to filter the audit log by.' + type: integer + minimum: 0 + filter_workspace_id: + description: 'Optional: The workspace to filter the audit log by.' + type: integer + minimum: 0 + filter_action_type: + $ref: '#/components/schemas/FilterActionTypeEnum' + filter_from_timestamp: + description: 'Optional: The start date to filter the audit log by.' + type: string + format: date-time + filter_to_timestamp: + description: 'Optional: The end date to filter the audit log by.' + type: string + format: date-time + exclude_columns: + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + type: string + required: + - url + x-konfig-properties: + export_charset: + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + default: utf-8 + csv_column_separator: + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + default: ',' + filter_action_type: + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + SingleAuditLogExportJobResponse: + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + type: object + properties: + url: + description: The URL to download the exported file. + type: string + format: uri + readOnly: true + export_charset: + $ref: '#/components/schemas/ExportCharsetEnum' + csv_column_separator: + $ref: '#/components/schemas/CsvColumnSeparatorEnum' + csv_first_row_header: + description: Whether or not to generate a header row at the top of the csv file. + type: boolean + default: true + filter_user_id: + description: 'Optional: The user to filter the audit log by.' + type: integer + minimum: 0 + filter_workspace_id: + description: 'Optional: The workspace to filter the audit log by.' + type: integer + minimum: 0 + filter_action_type: + $ref: '#/components/schemas/FilterActionTypeEnum' + filter_from_timestamp: + description: 'Optional: The start date to filter the audit log by.' + type: string + format: date-time + filter_to_timestamp: + description: 'Optional: The end date to filter the audit log by.' + type: string + format: date-time + exclude_columns: + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + type: string + created_on: + description: The date and time when the export job was created. + type: string + format: date-time + readOnly: true + exported_file_name: + description: The name of the file that was created by the export job. + type: string + readOnly: true + required: + - created_on + - exported_file_name + - url + x-konfig-properties: + export_charset: + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + default: utf-8 + csv_column_separator: + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + default: ',' + filter_action_type: + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + SingleDuplicateApplicationJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + original_application: + $ref: '#/components/schemas/ApplicationApplication' + duplicated_application: + $ref: '#/components/schemas/ApplicationApplication' + required: + - duplicated_application + - id + - original_application + - progress_percentage + - state + - type + x-konfig-properties: + original_application: + readOnly: true + duplicated_application: + readOnly: true + SingleDuplicateFieldJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + original_field: + $ref: '#/components/schemas/Field' + duplicated_field: + $ref: '#/components/schemas/FieldSerializerWithRelatedFields' + required: + - duplicated_field + - id + - original_field + - progress_percentage + - state + - type + x-konfig-properties: + original_field: + readOnly: true + duplicated_field: + readOnly: true + SingleDuplicatePageJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + original_page: + $ref: '#/components/schemas/Page' + duplicated_page: + $ref: '#/components/schemas/Page' + required: + - duplicated_page + - id + - original_page + - progress_percentage + - state + - type + x-konfig-properties: + original_page: + readOnly: true + duplicated_page: + readOnly: true + SingleDuplicateTableJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + original_table: + $ref: '#/components/schemas/Table' + duplicated_table: + $ref: '#/components/schemas/Table' + required: + - duplicated_table + - id + - original_table + - progress_percentage + - state + - type + x-konfig-properties: + original_table: + readOnly: true + duplicated_table: + readOnly: true + SingleFileImportJobSerializerClass: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + database_id: + description: Database id where the table will be created. + type: integer + name: + description: The name of the new table. + type: string + maxLength: 255 + table_id: + description: Table id where the data will be imported. + type: integer + first_row_header: + type: boolean + default: false + report: + $ref: '#/components/schemas/Report' + required: + - database_id + - id + - progress_percentage + - report + - state + - type + x-konfig-properties: + report: + description: Import error report. + SingleInstallTemplateJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the job. + type: string + readOnly: true + progress_percentage: + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + type: integer + state: + description: Indicates the state of the import job. + type: string + human_readable_error: + description: A human readable error message indicating what went wrong. + type: string + workspace: + $ref: '#/components/schemas/Workspace' + template: + $ref: '#/components/schemas/Template' + installed_applications: + type: object + additionalProperties: {} + readOnly: true + group: + $ref: '#/components/schemas/Workspace' + required: + - group + - id + - installed_applications + - progress_percentage + - state + - template + - type + - workspace + x-konfig-properties: + workspace: + readOnly: true + template: + readOnly: true + group: + readOnly: true + SingleSelectFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - name + - type + SingleSelectFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - table_id + - type + SingleSelectFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + SingleSelectFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + Snapshot: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + snapshot_from_application: + type: integer + readOnly: true + created_by: + $ref: '#/components/schemas/User' + created_at: + type: string + format: date-time + readOnly: true + required: + - created_at + - created_by + - id + - name + - snapshot_from_application + x-konfig-properties: + created_by: + readOnly: true + SourceTypeEnum: + description: |- + * `url` - Url + * `embed` - Embed + enum: + - url + - embed + type: string + StateEnum: + description: |- + * `pending` - pending + * `exporting` - exporting + * `cancelled` - cancelled + * `finished` - finished + * `failed` - failed + * `expired` - expired + enum: + - pending + - exporting + - cancelled + - finished + - failed + - expired + type: string + StyleBackgroundEnum: + description: |- + * `none` - None + * `color` - Color + enum: + - none + - color + type: string + StyleEnum: + description: |- + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + enum: + - star + - heart + - thumbs-up + - flag + - smile + type: string + StyleImageConstraintEnum: + description: |- + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + enum: + - cover + - contain + - full-width + type: string + StyleWidthEnum: + description: |- + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + enum: + - full + - normal + - medium + - small + type: string + SubDomainCreateDomain: + type: object + properties: + type: + $ref: '#/components/schemas/Type0a6Enum' + domain_name: + type: string + maxLength: 255 + required: + - domain_name + - type + x-konfig-properties: + type: + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + SubDomainDomain: + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the domain. + type: string + readOnly: true + domain_name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + builder_id: + type: integer + readOnly: true + last_published: + description: Last publication date of this domain + type: string + format: date-time + nullable: true + required: + - builder_id + - domain_name + - id + - order + - type + SubjectType3ffEnum: + description: '* `auth.User` - auth.User' + enum: + - auth.User + type: string + SubjectTypeB9aEnum: + description: |- + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + enum: + - auth.User + - anonymous + - user_source.user + - core.Token + - baserow_enterprise.Team + type: string + SubjectUser: + type: object + properties: + id: + type: integer + readOnly: true + username: + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + type: string + readOnly: true + first_name: + type: string + readOnly: true + email: + title: Email address + type: string + format: email + readOnly: true + required: + - email + - first_name + - id + - username + SubmitActionEnum: + description: |- + * `MESSAGE` - Message + * `REDIRECT` - Redirect + enum: + - MESSAGE + - REDIRECT + type: string + Table: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + database_id: + type: integer + readOnly: true + required: + - database_id + - id + - name + - order + TableCreate: + type: object + properties: + name: + type: string + maxLength: 255 + data: + description: >- + A list of rows that needs to be created as initial table data. Each + row is a list of values that are going to be added in the new table + in the same order as provided. + + + Ex: + + ```json + + [ + ["row1_field1_value", "row1_field2_value"], + ["row2_field1_value", "row2_field2_value"], + ] + + ``` + + for creating a two rows table with two fields. + + + If not provided, some example data is going to be created. + type: array + items: {} + minItems: 1 + first_row_header: + description: >- + Indicates if the first provided row is the header. If true the field + names are going to be the values of the first row. Otherwise they + will be called "Field N" + type: boolean + default: false + required: + - name + TableElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + data_source_id: + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + type: integer + nullable: true + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + description: The amount item loaded with each page. + type: integer + default: 20 + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + TableElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + data_source_id: + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + type: integer + nullable: true + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + description: The amount item loaded with each page. + type: integer + default: 20 + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + TableElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + data_source_id: + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + type: integer + nullable: true + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + description: The amount item loaded with each page. + type: integer + default: 20 + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + TableElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + data_source_id: + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + type: integer + nullable: true + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + description: The amount item loaded with each page. + type: integer + default: 20 + button_color: + description: Button color. + type: string + default: primary + maxLength: 20 + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + TableImport: + type: object + properties: + data: + description: >- + A list of rows you want to add to the specified table. Each row is a + list of values, one for each **writable** field. The field values + must be ordered according to the field order in the table. All + values must be compatible with the corresponding field type. + + + Ex: + + ```json + + [ + ["row1_field1_value", "row1_field2_value"], + ["row2_field1_value", "row2_field2_value"], + ] + + ``` + + for adding two rows to a table with two writable fields. + type: array + items: {} + minItems: 1 + required: + - data + TableSerializerWithFields: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + database_id: + type: integer + readOnly: true + fields: + description: Fields of this table + type: array + items: + $ref: '#/components/schemas/LocalBaserowField' + required: + - database_id + - fields + - id + - name + - order + TableWebhook: + type: object + properties: + id: + type: integer + readOnly: true + events: + description: A list containing the events that will trigger this webhook. + type: object + additionalProperties: {} + readOnly: true + headers: + description: >- + The additional headers as an object where the key is the name and + the value the value. + type: object + additionalProperties: {} + readOnly: true + calls: + description: All the calls that this webhook made. + type: array + items: + $ref: '#/components/schemas/TableWebhookCall' + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + use_user_field_names: + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + type: boolean + url: + description: The URL that must be called when the webhook is triggered. + type: string + maxLength: 2000 + request_method: + $ref: '#/components/schemas/RequestMethodEnum' + name: + description: An internal name of the webhook. + type: string + maxLength: 255 + include_all_events: + description: Indicates whether this webhook should listen to all events. + type: boolean + failed_triggers: + description: The amount of failed webhook calls. + type: integer + maximum: 2147483647 + minimum: -2147483648 + active: + description: >- + Indicates whether the web hook is active. When a webhook has failed + multiple times, it will automatically be deactivated. + type: boolean + required: + - calls + - created_on + - events + - headers + - id + - name + - updated_on + - url + x-konfig-properties: + request_method: + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + TableWebhookCall: + type: object + properties: + id: + type: integer + readOnly: true + event_id: + description: Event ID where the call originated from. + type: string + format: uuid + readOnly: true + event_type: + type: string + maxLength: 50 + called_time: + type: string + format: date-time + nullable: true + called_url: + type: string + maxLength: 2000 + request: + description: A text copy of the request headers and body. + type: string + nullable: true + response: + description: A text copy of the response headers and body. + type: string + nullable: true + response_status: + description: The HTTP response status code. + type: integer + maximum: 2147483647 + minimum: -2147483648 + nullable: true + error: + description: An internal error reflecting what went wrong. + type: string + nullable: true + required: + - called_url + - event_id + - event_type + - id + TableWebhookCreateRequest: + type: object + properties: + url: + description: The URL that must be called when the webhook is triggered. + type: string + maxLength: 2000 + include_all_events: + description: Indicates whether this webhook should listen to all events. + type: boolean + events: + description: A list containing the events that will trigger this webhook. + type: array + items: + $ref: '#/components/schemas/Events3eaEnum' + request_method: + $ref: '#/components/schemas/RequestMethodEnum' + headers: + description: >- + The additional headers as an object where the key is the name and + the value the value. + type: object + additionalProperties: {} + name: + description: An internal name of the webhook. + type: string + maxLength: 255 + use_user_field_names: + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + type: boolean + required: + - name + - url + x-konfig-properties: + request_method: + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + TableWebhookTestCallRequest: + type: object + properties: + url: + description: The URL that must be called when the webhook is triggered. + type: string + maxLength: 2000 + event_type: + $ref: '#/components/schemas/EventTypeEnum' + request_method: + $ref: '#/components/schemas/RequestMethodEnum' + headers: + description: >- + The additional headers as an object where the key is the name and + the value the value. + type: object + additionalProperties: {} + use_user_field_names: + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + type: boolean + required: + - event_type + - url + x-konfig-properties: + event_type: + description: |- + The event type that must be used for the test call. + + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + request_method: + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + TableWebhookTestCallResponse: + type: object + properties: + request: + description: A text copy of the request headers and body. + type: string + readOnly: true + response: + description: A text copy of the response headers and body. + type: string + readOnly: true + status_code: + description: The HTTP response status code. + type: integer + readOnly: true + is_unreachable: + description: Indicates whether the provided URL could be reached. + type: boolean + readOnly: true + required: + - is_unreachable + - request + - response + - status_code + TargetEnum: + description: |- + * `self` - Self + * `blank` - Blank + enum: + - self + - blank + type: string + Team: + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + type: object + properties: + name: + description: A human friendly name for this team. + type: string + maxLength: 160 + default_role: + description: >- + The uid of the role you want to assign to the team in the given + workspace. You can omit this property if you want to remove the + role. + type: string + nullable: true + subjects: + description: >- + An array of subject ID/type objects to be used during team create + and update. + type: array + items: + $ref: '#/components/schemas/TeamSubject' + default: [] + required: + - name + TeamResponse: + type: object + properties: + id: + type: integer + readOnly: true + name: + description: A human friendly name for this team. + type: string + maxLength: 160 + group: + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + type: integer + workspace: + description: The workspace that this team belongs to. + type: integer + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + default_role: + description: The uid of the role this team has in its workspace. + type: string + subject_count: + description: >- + The amount of subjects (e.g. users) that are currently assigned to + this team. + type: integer + subject_sample: + description: >- + A sample, by default 10, of the most recent subjects to join this + team. + type: array + items: + $ref: '#/components/schemas/TeamSampleSubject' + required: + - created_on + - group + - id + - name + - subject_count + - updated_on + - workspace + TeamSampleSubject: + type: object + properties: + subject_id: + description: The subject's unique identifier. + type: integer + subject_type: + $ref: '#/components/schemas/SubjectType3ffEnum' + subject_label: + description: The subject's label. Defaults to a user's first name. + type: string + team_subject_id: + description: The team subject unique identifier. + type: integer + required: + - subject_id + - subject_label + - subject_type + - team_subject_id + x-konfig-properties: + subject_type: + description: |- + The type of subject who belongs to the team. + + * `auth.User` - auth.User + TeamSubject: + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + type: object + properties: + id: + type: integer + readOnly: true + subject_id: + description: The subject's unique identifier. + type: integer + subject_user_email: + description: The user subject's email address. + type: string + format: email + subject_type: + $ref: '#/components/schemas/SubjectType3ffEnum' + required: + - id + - subject_type + x-konfig-properties: + subject_type: + description: |- + The type of subject that is being invited. + + * `auth.User` - auth.User + TeamSubjectResponse: + type: object + properties: + id: + type: integer + readOnly: true + subject_id: + description: The unique subject ID. + type: integer + maximum: 2147483647 + minimum: -2147483648 + subject_type: + description: |- + Returns the TeamSubject's `subject_type` natural key. + + :param obj: The TeamSubject record. + :return: The subject's content type natural key. + type: string + readOnly: true + team: + description: The team this subject belongs to. + type: integer + required: + - id + - subject_id + - subject_type + - team + Template: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 64 + icon: + description: The icon class name that can be used for displaying purposes. + type: string + maxLength: 32 + keywords: + description: Keywords related to the template that can be used for search. + type: string + group_id: + type: string + readOnly: true + workspace_id: + description: >- + The group containing the applications related to the template. The + read endpoints related to that group are publicly accessible for + preview purposes. + type: integer + nullable: true + readOnly: true + is_default: + description: >- + Indicates if the template must be selected by default. The + web-frontend automatically selects the first `is_default` template + that it can find. + type: string + readOnly: true + required: + - group_id + - icon + - id + - is_default + - name + - workspace_id + TemplateCategories: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 32 + templates: + type: array + items: + $ref: '#/components/schemas/Template' + readOnly: true + required: + - id + - name + - templates + TextElementCreateElement: + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + type: object + properties: + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + before_id: + description: >- + If provided, creates the element before the element with the given + id. + type: integer + type: + $ref: '#/components/schemas/Type2a6Enum' + parent_element_id: + description: >- + If provided, creates the element as a child of the element with the + given id. + type: integer + nullable: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be a formula. + type: string + default: '' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + $ref: '#/components/schemas/FormatEnum' + required: + - order + - type + x-konfig-properties: + type: + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + format: + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + default: plain + TextElementElement: + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + type: object + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be a formula. + type: string + default: '' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + $ref: '#/components/schemas/FormatEnum' + required: + - id + - order + - page_id + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + format: + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + default: plain + TextElementPublicElement: + description: Basic element serializer mostly for returned values. + type: object + properties: + id: + type: integer + readOnly: true + type: + description: The type of the element. + type: string + readOnly: true + order: + description: Lowest first. + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + parent_element_id: + description: The parent element, if inside a container. + type: integer + nullable: true + readOnly: true + place_in_container: + description: The place in the container. + type: string + nullable: true + maxLength: 255 + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be a formula. + type: string + default: '' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + $ref: '#/components/schemas/FormatEnum' + required: + - id + - order + - parent_element_id + - type + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + format: + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + default: plain + TextElementUpdateElement: + type: object + properties: + style_border_top_color: + description: Top border color. + type: string + maxLength: 20 + style_border_top_size: + description: Pixel height of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_top: + description: Padding size of the top border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_bottom_color: + description: Bottom border color + type: string + maxLength: 20 + style_border_bottom_size: + description: Pixel height of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_bottom: + description: Padding size of the bottom border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_left_color: + description: Left border color + type: string + maxLength: 20 + style_border_left_size: + description: Pixel height of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_left: + description: Padding size of the left border. + type: integer + maximum: 2147483647 + minimum: 0 + style_border_right_color: + description: Right border color + type: string + maxLength: 20 + style_border_right_size: + description: Pixel height of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_padding_right: + description: Padding size of the right border. + type: integer + maximum: 2147483647 + minimum: 0 + style_background: + $ref: '#/components/schemas/StyleBackgroundEnum' + style_background_color: + description: The background color if `style_background` is color. + type: string + maxLength: 20 + style_width: + $ref: '#/components/schemas/StyleWidthEnum' + value: + description: The value of the element. Must be a formula. + type: string + default: '' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + $ref: '#/components/schemas/FormatEnum' + x-konfig-properties: + style_background: + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_width: + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + format: + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + default: plain + TextFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + text_default: + description: >- + If set, this value is going to be added every time a new row + created. + type: string + maxLength: 255 + required: + - name + - type + TextFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + text_default: + description: >- + If set, this value is going to be added every time a new row + created. + type: string + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + TextFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + text_default: + description: >- + If set, this value is going to be added every time a new row + created. + type: string + maxLength: 255 + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + TextFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + text_default: + description: >- + If set, this value is going to be added every time a new row + created. + type: string + maxLength: 255 + Token: + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + type: object + properties: + id: + type: integer + readOnly: true + name: + description: The human readable name of the database token for the user. + type: string + maxLength: 100 + group: + type: string + readOnly: true + workspace: + description: Only the tables of the workspace can be accessed. + type: integer + key: + description: >- + The unique token key that can be used to authorize for the table row + endpoints. + type: string + maxLength: 32 + permissions: + description: >- + Indicates per operation which permissions the database token has + within the whole workspace. If the value of for example `create` is + `true`, then the token can create rows in all tables related to the + workspace. If a list is provided with for example `[["table", 1]]` + then the token only has create permissions for the table with id 1. + Same goes for if a database references is provided. `[['database', + 1]]` means create permissions for all tables in the database with id + 1. + + + Example: + + ```json + + { + "create": true// Allows creating rows in all tables. + // Allows reading rows from database 1 and table 10. + "read": [["database", 1], ["table", 10]], + "update": false // Denies updating rows in all tables. + "delete": [] // Denies deleting rows in all tables. + } + ``` + type: object + properties: + create: + anyOf: + - description: >- + Indicating if the database token has permissions to all + tables. + type: boolean + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - description: >- + First element should indicate the reference type + `database` or `table`. + type: string + example: database + - description: >- + Second element should indicate the ID of the + reference. + type: number + example: 1 + read: + anyOf: + - description: >- + Indicating if the database token has permissions to all + tables. + type: boolean + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - description: >- + First element should indicate the reference type + `database` or `table`. + type: string + example: database + - description: >- + Second element should indicate the ID of the + reference. + type: number + example: 1 + update: + anyOf: + - description: >- + Indicating if the database token has permissions to all + tables. + type: boolean + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - description: >- + First element should indicate the reference type + `database` or `table`. + type: string + example: database + - description: >- + Second element should indicate the ID of the + reference. + type: number + example: 1 + delete: + anyOf: + - description: >- + Indicating if the database token has permissions to all + tables. + type: boolean + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - description: >- + First element should indicate the reference type + `database` or `table`. + type: string + example: database + - description: >- + Second element should indicate the ID of the + reference. + type: number + example: 1 + required: + - group + - id + - key + - name + - permissions + - workspace + TokenBlacklist: + type: object + properties: + refresh: + type: string + required: + - refresh + TokenCreate: + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + type: object + properties: + name: + description: The human readable name of the database token for the user. + type: string + maxLength: 100 + group: + type: string + readOnly: true + workspace: + description: Only the tables of the workspace can be accessed. + type: integer + required: + - group + - name + - workspace + TokenObtainPair: + type: object + properties: + username: + type: string + writeOnly: true + password: + type: string + writeOnly: true + access: + type: string + readOnly: true + refresh: + type: string + readOnly: true + required: + - access + - password + - refresh + - username + TokenObtainPairWithUser: + type: object + properties: + email: + type: string + format: email + username: + description: Deprecated. Use `email` instead. + type: string + format: email + deprecated: true + password: + type: string + writeOnly: true + required: + - password + TokenRefreshWithUser: + type: object + properties: + access: + type: string + readOnly: true + refresh_token: + type: string + token: + description: Deprecated. Use `refresh_token` instead. + type: string + deprecated: true + required: + - access + TokenVerifyWithUser: + type: object + properties: + token: + description: Deprecated. Use `refresh_token` instead. + type: string + deprecated: true + refresh_token: + type: string + required: + - refresh_token + TrashContents: + type: object + properties: + id: + type: integer + readOnly: true + user_who_trashed: + type: string + readOnly: true + trash_item_type: + description: |- + If an API consumer hasn't yet adopted the "workspace" + `trash_item_type`, give them the option to return "group" + by testing the `respond_with_workspace_rename` querystring. + type: string + readOnly: true + trash_item_id: + type: integer + maximum: 2147483647 + minimum: 0 + parent_trash_item_id: + type: integer + maximum: 2147483647 + minimum: 0 + nullable: true + trashed_at: + type: string + format: date-time + readOnly: true + application: + type: integer + nullable: true + group: + type: integer + workspace: + type: integer + name: + type: string + names: + type: array + items: + type: string + nullable: true + parent_name: + type: string + nullable: true + required: + - group + - id + - name + - trash_item_id + - trash_item_type + - trashed_at + - user_who_trashed + - workspace + TrashItemTypeEnum: + description: |- + * `workspace` - workspace + * `application` - application + * `group` - group + * `table` - table + * `field` - field + * `row` - row + * `rows` - rows + * `view` - view + * `builder_domain` - builder_domain + * `row_comment` - row_comment + * `team` - team + enum: + - workspace + - application + - group + - table + - field + - row + - rows + - view + - builder_domain + - row_comment + - team + type: string + TrashStructure: + type: object + properties: + groups: + description: >- + An array of group trash structure records. Deprecated, please use + `workspaces`. + type: array + items: + $ref: '#/components/schemas/TrashStructureGroup' + workspaces: + description: An array of workspace trash structure records + type: array + items: + $ref: '#/components/schemas/TrashStructureGroup' + required: + - groups + - workspaces + TrashStructureApplication: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + trashed: + type: boolean + required: + - id + - name + TrashStructureGroup: + type: object + properties: + id: + type: integer + minimum: 0 + trashed: + type: boolean + name: + type: string + applications: + type: array + items: + $ref: '#/components/schemas/TrashStructureApplication' + required: + - applications + - id + - name + - trashed + Type0a6Enum: + description: |- + * `custom` - custom + * `sub_domain` - sub_domain + enum: + - custom + - sub_domain + type: string + Type2a6Enum: + description: |- + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + enum: + - heading + - text + - link + - image + - input_text + - column + - button + - table + - form_container + - dropdown + - checkbox + - iframe + - auth_form + type: string + Type5f7Enum: + description: '* `local_baserow` - local_baserow' + enum: + - local_baserow + type: string + Type60cEnum: + description: |- + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + enum: + - notification + - open_page + - create_row + - update_row + - logout + type: string + Type880Enum: + description: |- + * `equal` - equal + * `not_equal` - not_equal + * `filename_contains` - filename_contains + * `files_lower_than` - files_lower_than + * `has_file_type` - has_file_type + * `contains` - contains + * `contains_not` - contains_not + * `contains_word` - contains_word + * `doesnt_contain_word` - doesnt_contain_word + * `length_is_lower_than` - length_is_lower_than + * `higher_than` - higher_than + * `lower_than` - lower_than + * `is_even_and_whole` - is_even_and_whole + * `date_equal` - date_equal + * `date_before` - date_before + * `date_before_or_equal` - date_before_or_equal + * `date_after_days_ago` - date_after_days_ago + * `date_after` - date_after + * `date_after_or_equal` - date_after_or_equal + * `date_not_equal` - date_not_equal + * `date_equals_today` - date_equals_today + * `date_before_today` - date_before_today + * `date_after_today` - date_after_today + * `date_within_days` - date_within_days + * `date_within_weeks` - date_within_weeks + * `date_within_months` - date_within_months + * `date_equals_days_ago` - date_equals_days_ago + * `date_equals_months_ago` - date_equals_months_ago + * `date_equals_years_ago` - date_equals_years_ago + * `date_equals_week` - date_equals_week + * `date_equals_month` - date_equals_month + * `date_equals_day_of_month` - date_equals_day_of_month + * `date_equals_year` - date_equals_year + * `single_select_equal` - single_select_equal + * `single_select_not_equal` - single_select_not_equal + * `link_row_has` - link_row_has + * `link_row_has_not` - link_row_has_not + * `link_row_contains` - link_row_contains + * `link_row_not_contains` - link_row_not_contains + * `boolean` - boolean + * `empty` - empty + * `not_empty` - not_empty + * `multiple_select_has` - multiple_select_has + * `multiple_select_has_not` - multiple_select_has_not + * `multiple_collaborators_has` - multiple_collaborators_has + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + * `user_is` - user_is + * `user_is_not` - user_is_not + enum: + - 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 + - lower_than + - 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 + - single_select_equal + - single_select_not_equal + - 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 + type: string + TypeC03Enum: + description: |- + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + enum: + - local_baserow_get_row + - local_baserow_list_rows + - local_baserow_upsert_row + type: string + TypeC5eEnum: + description: |- + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + enum: + - duplicate_application + - install_template + - create_snapshot + - restore_snapshot + - airtable + - file_import + - duplicate_table + - duplicate_field + - duplicate_page + - publish_domain + - audit_log_export + type: string + TypeD64Enum: + description: |- + * `text` - text + * `long_text` - long_text + * `url` - url + * `email` - email + * `number` - number + * `rating` - rating + * `boolean` - boolean + * `date` - date + * `last_modified` - last_modified + * `last_modified_by` - last_modified_by + * `created_on` - created_on + * `created_by` - created_by + * `duration` - duration + * `link_row` - link_row + * `file` - file + * `single_select` - single_select + * `multiple_select` - multiple_select + * `phone_number` - phone_number + * `formula` - formula + * `count` - count + * `rollup` - rollup + * `lookup` - lookup + * `multiple_collaborators` - multiple_collaborators + * `uuid` - uuid + * `autonumber` - autonumber + * `password` - password + enum: + - text + - long_text + - url + - email + - number + - rating + - boolean + - date + - last_modified + - last_modified_by + - created_on + - created_by + - duration + - link_row + - file + - single_select + - multiple_select + - phone_number + - formula + - count + - rollup + - lookup + - multiple_collaborators + - uuid + - autonumber + - password + type: string + TypeF4fEnum: + description: |- + * `database` - database + * `builder` - builder + enum: + - database + - builder + type: string + TypeFc4Enum: + description: |- + * `left_border_color` - left_border_color + * `background_color` - background_color + enum: + - left_border_color + - background_color + type: string + TypeFormulaRequest: + type: object + properties: + formula: + type: string + name: + type: string + maxLength: 255 + required: + - formula + - name + TypeFormulaResult: + type: object + properties: + date_time_format: + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + nullable: true + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + description: Indicates if the field also includes a time. + type: boolean + nullable: true + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + nullable: true + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + description: Force a timezone for the field overriding user profile settings. + type: string + nullable: true + maxLength: 255 + date_format: + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + nullable: true + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + nullable: true + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + error: + type: string + nullable: true + date_show_tzinfo: + description: Indicates if the time zone should be shown. + type: boolean + nullable: true + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - formula + - nullable + URLFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + URLFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + URLFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + URLFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + UUIDFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + UUIDFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + required: + - id + - name + - order + - read_only + - table_id + - type + UUIDFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + description: Lowest first. + type: integer + maximum: 2147483647 + minimum: 0 + type: + description: The type of the related field. + type: string + readOnly: true + primary: + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + type: boolean + read_only: + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + type: boolean + readOnly: true + related_fields: + description: A list of related fields which also changed. + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + UUIDFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + UndoRedoAction: + type: object + properties: + action_type: + description: >- + If an action was undone/redone/skipped due to an error this field + will contain the type of the action that was undone/redone. + type: string + nullable: true + action_scope: + description: >- + If an action was undone/redone/skipped due to an error this field + will contain the scope of the action that was undone/redone. + type: string + nullable: true + UndoRedoResponse: + type: object + properties: + actions: + type: array + items: + $ref: '#/components/schemas/UndoRedoAction' + result_code: + description: >- + Indicates the result of the undo/redo operation. Will be 'SUCCESS' + on success, 'NOTHING_TO_DO' when there is no action to undo/redo and + 'SKIPPED_DUE_TO_ERROR' when the undo/redo failed due to a conflict + or error and was skipped over. + type: string + required: + - actions + - result_code + UniqueRowValues: + type: object + properties: + values: + type: array + items: + type: string + required: + - values + User: + type: object + properties: + username: + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + type: string + pattern: ^[\w.@+-]+$ + maxLength: 150 + required: + - username + UserAdminCreate: + description: >- + Serializes a request body for creating a new user. Do not use for + returning user + + data as the password will be returned also. + type: object + properties: + username: + type: string + format: email + name: + type: string + maxLength: 150 + is_active: + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + type: boolean + is_staff: + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + type: boolean + password: + type: string + required: + - name + - password + - username + UserAdminGroups: + type: object + properties: + id: + type: integer + name: + type: string + permissions: + description: The permissions that the user has within the workspace. + type: string + maxLength: 32 + required: + - id + - name + UserAdminResponse: + description: >- + Serializes the safe user attributes to expose for a response back to the + user. + type: object + properties: + id: + type: integer + readOnly: true + username: + type: string + format: email + name: + type: string + maxLength: 150 + groups: + type: array + items: + $ref: '#/components/schemas/UserAdminGroups' + workspaces: + type: array + items: + $ref: '#/components/schemas/UserAdminGroups' + last_login: + type: string + format: date-time + nullable: true + date_joined: + type: string + format: date-time + is_active: + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + type: boolean + is_staff: + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + type: boolean + required: + - groups + - id + - name + - username + - workspaces + UserFile: + type: object + properties: + size: + type: integer + maximum: 2147483647 + minimum: 0 + mime_type: + type: string + maxLength: 127 + is_image: + type: boolean + image_width: + type: integer + maximum: 32767 + minimum: 0 + nullable: true + image_height: + type: integer + maximum: 32767 + minimum: 0 + nullable: true + uploaded_at: + type: string + format: date-time + readOnly: true + url: + type: string + format: uri + readOnly: true + thumbnails: + type: object + additionalProperties: {} + readOnly: true + name: + type: string + readOnly: true + original_name: + type: string + maxLength: 255 + required: + - name + - original_name + - size + - thumbnails + - uploaded_at + - url + UserFileUploadViaURLRequest: + type: object + properties: + url: + type: string + format: uri + required: + - url + UserSourceUser: + description: A serializer used to serialize a UserSourceUser object. + type: object + properties: + id: + type: integer + username: + type: string + email: + type: string + format: email + user_source_id: + type: integer + required: + - email + - id + - user_source_id + - username + UserWorkspaceInvitation: + description: >- + This serializer is used for displaying the invitation to the user that + doesn't + + have access to the workspace yet, so not for invitation management + purposes. + type: object + properties: + id: + type: integer + readOnly: true + invited_by: + type: string + readOnly: true + group: + type: string + readOnly: true + workspace: + type: string + readOnly: true + email: + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + type: string + format: email + maxLength: 254 + message: + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + type: string + readOnly: true + created_on: + type: string + format: date-time + readOnly: true + email_exists: + type: boolean + readOnly: true + required: + - created_on + - email + - email_exists + - group + - id + - invited_by + - message + - workspace + User_SourceBasePublicUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceBasePublicUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceBasePublicUserSource' + User_SourceCreateUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceCreateUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceCreateUserSource' + User_SourceUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceUserSource' + UsersPerUserSource: + description: The response of the list user source users endpoint. + type: object + properties: + users_per_user_sources: + description: >- + An object keyed by the id of the user source and the value being the + list of users for this user source. + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/UserSourceUser' + required: + - users_per_user_sources + ValueProviderTypeEnum: + description: |- + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + enum: + - single_select_color + - conditional_color + type: string + VariantEnum: + description: |- + * `link` - Link + * `button` - Button + enum: + - link + - button + type: string + View: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_has_password: + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + type: boolean + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - table + - table_id + - type + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + ViewCreateView: + oneOf: + - $ref: '#/components/schemas/GridViewCreateView' + - $ref: '#/components/schemas/GalleryViewCreateView' + - $ref: '#/components/schemas/FormViewCreateView' + - $ref: '#/components/schemas/KanbanViewCreateView' + - $ref: '#/components/schemas/CalendarViewCreateView' + discriminator: + propertyName: type + mapping: + grid: '#/components/schemas/GridViewCreateView' + gallery: '#/components/schemas/GalleryViewCreateView' + form: '#/components/schemas/FormViewCreateView' + kanban: '#/components/schemas/KanbanViewCreateView' + calendar: '#/components/schemas/CalendarViewCreateView' + ViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: integer + type: + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + type: string + maxLength: 255 + value_provider_type: + description: The value provider type that gives the value to the decorator. + type: string + maxLength: 255 + value_provider_conf: + description: The configuration consumed by the value provider. + type: object + additionalProperties: {} + order: + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + type: integer + maximum: 32767 + minimum: -32768 + required: + - id + ViewFieldOptions: + anyOf: + - $ref: '#/components/schemas/grid_view_field_options' + - $ref: '#/components/schemas/gallery_view_field_options' + - $ref: '#/components/schemas/form_view_field_options' + - $ref: '#/components/schemas/kanban_view_field_options' + - $ref: '#/components/schemas/calendar_view_field_options' + ViewFilter: + type: object + properties: + id: + type: integer + readOnly: true + view: + description: >- + The view to which the filter applies. Each view can have his own + filters. + type: integer + field: + description: The field of which the value must be compared to the filter value. + type: integer + type: + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + type: string + maxLength: 48 + value: + description: The filter value that must be compared to the field's value. + type: string + maxLength: 255 + preload_values: + description: >- + Can contain unique preloaded values per filter. This is for example + used by the `link_row_has` filter to communicate the display name if + a value is provided. + type: object + additionalProperties: {} + readOnly: true + group: + description: >- + The id of the filter group this filter belongs to. If this is null, + the filter is not part of a filter group. + type: integer + nullable: true + required: + - field + - id + - preload_values + - type + - view + ViewFilterGroup: + type: object + properties: + id: + type: integer + readOnly: true + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + view: + description: >- + The view to which the filter group applies to. Each view can have + its own filter groups. + type: integer + required: + - id + - view + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + ViewGroupBy: + type: object + properties: + id: + type: integer + readOnly: true + view: + description: >- + The view to which the group by applies. Each view can have his own + group bys. + type: integer + field: + description: The field that must be grouped by. + type: integer + order: + $ref: '#/components/schemas/OrderEnum' + width: + description: The pixel width of the group by in the related view. + type: integer + maximum: 2147483647 + minimum: 0 + required: + - field + - id + - view + x-konfig-properties: + order: + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + ViewSort: + type: object + properties: + id: + type: integer + readOnly: true + view: + description: >- + The view to which the sort applies. Each view can have his own + sortings. + type: integer + field: + description: The field that must be sorted on. + type: integer + order: + $ref: '#/components/schemas/OrderEnum' + required: + - field + - id + - view + x-konfig-properties: + order: + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + ViewTypesEnum: + description: |- + * `grid` - grid + * `gallery` - gallery + * `form` - form + * `kanban` - kanban + * `calendar` - calendar + enum: + - grid + - gallery + - form + - kanban + - calendar + type: string + ViewView: + oneOf: + - $ref: '#/components/schemas/GridViewView' + - $ref: '#/components/schemas/GalleryViewView' + - $ref: '#/components/schemas/FormViewView' + - $ref: '#/components/schemas/KanbanViewView' + - $ref: '#/components/schemas/CalendarViewView' + discriminator: + propertyName: type + mapping: + grid: '#/components/schemas/GridViewView' + gallery: '#/components/schemas/GalleryViewView' + form: '#/components/schemas/FormViewView' + kanban: '#/components/schemas/KanbanViewView' + calendar: '#/components/schemas/CalendarViewView' + WidthEnum: + description: |- + * `auto` - Auto + * `full` - Full + enum: + - auto + - full + type: string + Workspace: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + required: + - id + - name + WorkspaceAdminUsers: + type: object + properties: + id: + type: integer + email: + type: string + permissions: + description: The permissions that the user has within the workspace. + type: string + maxLength: 32 + required: + - email + - id + WorkspaceInvitation: + type: object + properties: + id: + type: integer + readOnly: true + group: + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + type: integer + workspace: + description: >- + The workspace that the user will get access to once the invitation + is accepted. + type: integer + email: + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + type: string + format: email + maxLength: 254 + permissions: + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + type: string + maxLength: 32 + message: + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + type: string + maxLength: 250 + created_on: + type: string + format: date-time + readOnly: true + required: + - created_on + - email + - group + - id + - workspace + WorkspaceUser: + type: object + properties: + id: + type: integer + readOnly: true + name: + description: User defined name. + type: string + readOnly: true + email: + description: User email. + type: string + readOnly: true + group: + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + type: integer + workspace: + description: The workspace that the user has access to. + type: integer + permissions: + description: The permissions that the user has within the workspace. + type: string + maxLength: 32 + created_on: + type: string + format: date-time + readOnly: true + user_id: + description: The user that has access to the workspace. + type: integer + readOnly: true + to_be_deleted: + description: True if user account is pending deletion. + type: boolean + required: + - created_on + - email + - group + - id + - name + - to_be_deleted + - user_id + - workspace + WorkspaceUserEnterpriseTeam: + description: A serializer for the `WorkspaceUserSerializer.teams` field. + type: object + properties: + id: + description: The unique identifier for this team. + type: integer + readOnly: true + name: + description: The team name that this group user belongs to. + type: string + readOnly: true + required: + - id + - name + WorkspaceUserWorkspace: + description: >- + This serializers includes relevant fields of the Workspace model, but + also + + some WorkspaceUser specific fields related to the workspace user + relation. + + + Additionally, the list of users are included for each workspace. + type: object + properties: + id: + description: Workspace id. + type: integer + readOnly: true + name: + description: Workspace name. + type: string + readOnly: true + users: + description: List of all workspace users. + type: array + items: + $ref: '#/components/schemas/WorkspaceUser' + readOnly: true + order: + description: The requesting user's order within the workspace users. + type: integer + readOnly: true + permissions: + description: The requesting user's permissions for the workspace. + type: string + readOnly: true + unread_notifications_count: + description: The number of unread notifications for the requesting user. + type: integer + readOnly: true + required: + - id + - name + - order + - permissions + - unread_notifications_count + - users + WorkspacesAdminResponse: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + users: + type: array + items: + $ref: '#/components/schemas/WorkspaceAdminUsers' + application_count: + type: integer + row_count: + type: integer + readOnly: true + storage_usage: + type: integer + maximum: 2147483647 + minimum: -2147483648 + nullable: true + seats_taken: + type: integer + free_users: + type: integer + readOnly: true + created_on: + type: string + format: date-time + readOnly: true + required: + - application_count + - created_on + - free_users + - id + - name + - row_count + - seats_taken + - users + calendar_view_field_options: + type: object + properties: + field_options: + description: >- + An object containing the field id as key and the properties related + to view as value. + type: object + additionalProperties: + $ref: '#/components/schemas/CalendarViewFieldOptions' + required: + - field_options + calendar_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_password: + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + type: string + maxLength: 256 + minLength: 8 + ownership_type: + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + type: string + maxLength: 255 + date_field: + type: integer + nullable: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - slug + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + form_view_field_options: + type: object + properties: + field_options: + description: >- + An object containing the field id as key and the properties related + to view as value. + type: object + additionalProperties: + $ref: '#/components/schemas/FormViewFieldOptions' + required: + - field_options + form_view_update: + type: object + properties: + title: + description: The title that is displayed at the beginning of the form. + type: string + description: + description: The description that is displayed at the beginning of the form. + type: string + name: + type: string + maxLength: 255 + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_password: + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + type: string + maxLength: 256 + minLength: 8 + ownership_type: + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + type: string + maxLength: 255 + mode: + $ref: '#/components/schemas/ModeC5eEnum' + cover_image: + description: The cover image that must be displayed at the top of the form. + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + logo_image: + description: The logo image that must be displayed at the top of the form. + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + submit_text: + description: The text displayed on the submit button. + type: string + submit_action: + $ref: '#/components/schemas/SubmitActionEnum' + submit_action_message: + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + type: string + submit_action_redirect_url: + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + type: string + format: uri + maxLength: 200 + receive_notification_on_submit: + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + type: boolean + readOnly: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - receive_notification_on_submit + - slug + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + mode: + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + submit_action: + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + gallery_view_field_options: + type: object + properties: + field_options: + description: >- + An object containing the field id as key and the properties related + to view as value. + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + required: + - field_options + gallery_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_password: + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + type: string + maxLength: 256 + minLength: 8 + ownership_type: + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + type: string + maxLength: 255 + card_cover_image_field: + description: >- + References a file field of which the first image must be shown as + card cover image. + type: integer + nullable: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - slug + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + grid_view_field_options: + type: object + properties: + field_options: + description: >- + An object containing the field id as key and the properties related + to view as value. + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + required: + - field_options + grid_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_password: + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + type: string + maxLength: 256 + minLength: 8 + ownership_type: + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + type: string + maxLength: 255 + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - slug + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + kanban_view_field_options: + type: object + properties: + field_options: + description: >- + An object containing the field id as key and the properties related + to view as value. + type: object + additionalProperties: + $ref: '#/components/schemas/KanbanViewFieldOptions' + required: + - field_options + kanban_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + $ref: '#/components/schemas/ConditionTypeEnum' + filters_disabled: + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + type: boolean + public_view_password: + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + type: string + maxLength: 256 + minLength: 8 + ownership_type: + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + type: string + maxLength: 255 + single_select_field: + type: integer + nullable: true + card_cover_image_field: + description: >- + References a file field of which the first image must be shown as + card cover image. + type: integer + nullable: true + public: + description: Indicates whether the view is publicly accessible to visitors. + type: boolean + slug: + description: The unique slug that can be used to construct a public URL. + type: string + readOnly: true + required: + - slug + x-konfig-properties: + filter_type: + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + public_Builder_Workflow_Action_TypeBuilderWorkflowAction: + oneOf: + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + discriminator: + propertyName: type + mapping: + public_notification: '#/components/schemas/PublicNone' + public_open_page: '#/components/schemas/PublicNone' + public_create_row: '#/components/schemas/PublicNone' + public_update_row: '#/components/schemas/PublicNone' + public_logout: '#/components/schemas/PublicNone' + DatabaseTableViewsSetPremiumAttributesResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_FEATURE_NOT_AVAILABLE + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_CANNOT_UPDATE_PREMIUM_ATTRIBUTES_ON_TEMPLATE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsSetPremiumAttributes404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesForceTokenAuthResponse: + type: object + properties: + access_token: + description: >- + 'access_token' can be used to authorize for other endpoints that + require authorization. This token will be valid for 10 minutes. + type: string + refresh_token: + description: >- + 'refresh_token' can be used to get a new valid 'access_token'. This + token will be valid for 168 hours. + type: string + UserSourcesForceTokenAuth401Response: + type: object + properties: {} + example: {} + UserSourcesAuthenticateUserWithTokenResponse: + type: object + properties: + access_token: + description: >- + 'access_token' can be used to authorize for other endpoints that + require authorization. This token will be valid for 10 minutes. + type: string + refresh_token: + description: >- + 'refresh_token' can be used to get a new valid 'access_token'. This + token will be valid for 168 hours. + type: string + UserSourcesAuthenticateUserWithToken401Response: + type: object + properties: {} + example: {} + EmailTester400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogListEntriesForWorkspaceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogListActionTypesResponse: + type: array + items: + $ref: '#/components/schemas/AuditLogActionType' + AuditLogListActionTypes400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogCreateExportJobResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogCreateExportJob404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogListUsersResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogListDistinctWorkspaceNamesResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuthListProvidersResponse: + type: array + items: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + AuthRegisterAuthProviderResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuthDeleteAuthProviderResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_AUTH_PROVIDER_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuthGetAuthProviderResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_AUTH_PROVIDER_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuthUpdateAuthProviderResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuthUpdateAuthProvider404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_AUTH_PROVIDER_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminGetAllGroupsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminDeleteGroupResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_FEATURE_NOT_AVAILABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminGetUsersDetailResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminCreateNewUserResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_FEATURE_NOT_AVAILABLE + - USER_ADMIN_ALREADY_EXISTS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminDeleteUserPremiumResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - USER_ADMIN_CANNOT_DELETE_SELF + - USER_ADMIN_UNKNOWN_USER + - ERROR_FEATURE_NOT_AVAILABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminUpdateUserAttributesResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - USER_ADMIN_CANNOT_DEACTIVATE_SELF + - USER_ADMIN_UNKNOWN_USER + - USER_ADMIN_ALREADY_EXISTS + - ERROR_FEATURE_NOT_AVAILABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminImpersonateUserResponse: + type: object + properties: + user: + description: An object containing information related to the user. + type: object + properties: + first_name: + description: The first name of related user. + type: string + username: + description: >- + The username of the related user. This is always an email + address. + type: string + format: email + language: + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + type: string + token: + description: Deprecated. Use the `access_token` instead. + type: string + deprecated: true + access_token: + description: >- + 'access_token' can be used to authorize for other endpoints that + require authorization. This token will be valid for 10 minutes. + type: string + AdminGetWorkspaceDetailsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminDeleteWorkspaceAndApplicationsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_FEATURE_NOT_AVAILABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + IntegrationsListApplicationIntegrationsResponse: + type: array + items: + $ref: '#/components/schemas/IntegrationIntegration' + IntegrationsListApplicationIntegrations404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + IntegrationsCreateNewIntegrationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + IntegrationsCreateNewIntegration404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesListAvailableUsersResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesListResponse: + type: array + items: + $ref: '#/components/schemas/User_SourceUserSource' + UserSourcesList404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesCreateNewUserSourceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesCreateNewUserSource404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsListUserApplicationsResponse: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + ApplicationsListUserApplications400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DeleteApplicationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DeleteApplication404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsGetApplicationByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsGetApplicationById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UpdateApplicationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UpdateApplication404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsDuplicateAsyncResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_APPLICATION_NOT_IN_GROUP + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsDuplicateAsync404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsListGroupApplicationsResponse: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + ApplicationsListGroupApplications400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsListGroupApplications404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsCreateGroupApplicationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsCreateGroupApplication404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsChangeOrderOfGroupApplicationsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_APPLICATION_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsChangeOrderOfGroupApplications404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsListUserApplications200Response: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + ApplicationsListUserApplications404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsCreateApplicationInWorkspaceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsCreateApplicationInWorkspace404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsChangeApplicationOrderResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_APPLICATION_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ApplicationsChangeApplicationOrder404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogListEntriesResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogListActionTypes200Response: + type: array + items: + $ref: '#/components/schemas/AuditLogActionType' + AuditLogExportJobResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogExportJob404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogListUsers400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuditLogListDistinctWorkspaceNames400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuthListLoginOptionsResponse: + description: Unspecified response body + type: object + additionalProperties: {} + BuilderDomainsGetAllResponse: + type: array + items: + $ref: '#/components/schemas/Domain_TypeDomain' + BuilderDomainsGetAll400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsGetAll404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsCreateNewDomainResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsCreateNewDomain404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsApplyOrderResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_DOMAIN_NOT_IN_BUILDER + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsApplyOrder404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + - ERROR_DOMAIN_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPagesCreateNewPageResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NAME_NOT_UNIQUE + - ERROR_PAGE_PATH_NOT_UNIQUE + - ERROR_PATH_PARAM_NOT_IN_PATH + - ERROR_PATH_PARAM_NOT_DEFINED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPagesCreateNewPage404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPagesApplyOrderToPagesResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NOT_IN_BUILDER + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPagesApplyOrderToPages404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + - ERROR_PAGE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderThemeUpdatePropertiesResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderThemeUpdateProperties404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesDeleteByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesDeleteById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_DATA_SOURCE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesUpdateExistingDataSourceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesUpdateExistingDataSource404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_DATA_SOURCE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesDispatchServiceResultResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_DATA_SOURCE_DOES_NOT_EXIST + - ERROR_DATA_SOURCE_IMPROPERLY_CONFIGURED + - ERROR_IN_DISPATCH_CONTEXT + - ERROR_DATA_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesMoveDataSourceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_DATA_SOURCE_NOT_IN_SAME_PAGE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesMoveDataSource404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_DATA_SOURCE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsRemoveExistingDomainResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsRemoveExistingDomain404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_DOMAIN_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsUpdateExistingDomainResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsUpdateExistingDomain404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_DOMAIN_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsStartPublishJobResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDomainsStartPublishJob404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPublicSerializedVersionByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_BUILDER_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPublicSerializedVersionResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_BUILDER_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesListPageDataSourcesResponse: + type: array + items: + $ref: '#/components/schemas/Integration_ServicePublicDataSource' + BuilderDataSourcesListPageDataSources404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsGetPageElementsResponse: + type: array + items: + $ref: '#/components/schemas/Element_TypePublicElement' + BuilderElementsGetPageElements404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderWorkflowActionsListPageWorkflowActionsResponse: + type: array + items: + $ref: >- + #/components/schemas/public_Builder_Workflow_Action_TypeBuilderWorkflowAction + BuilderWorkflowActionsListPageWorkflowActions404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsRemoveElementByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsRemoveElementById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_ELEMENT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsUpdateExistingElementResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsUpdateExistingElement404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_ELEMENT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsDuplicateElementChildrenResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsDuplicateElementChildren404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_ELEMENT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsMoveElementResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_ELEMENT_NOT_IN_SAME_PAGE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsMoveElement404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_ELEMENT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesListPageDataSources200Response: + type: array + items: + $ref: '#/components/schemas/Integration_ServiceDataSource' + BuilderDataSourcesCreateNewResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesCreateNew404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderDataSourcesDispatchPageDataSourcesResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_DATA_SOURCE_IMPROPERLY_CONFIGURED + - ERROR_IN_DISPATCH_CONTEXT + - ERROR_DATA_DOES_NOT_EXIST + - ERROR_PAGE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsGetPageElements200Response: + type: array + items: + $ref: '#/components/schemas/Element_TypeElement' + BuilderElementsCreateNewElementResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderElementsCreateNewElement404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderWorkflowActionsListPageWorkflowActions200Response: + type: array + items: + $ref: '#/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction' + BuilderWorkflowActionsCreateNewActionResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderWorkflowActionsCreateNewAction404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderWorkflowActionsApplyNewOrderResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderWorkflowActionsApplyNewOrder404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_DOES_NOT_EXIST + - ERROR_WORKFLOW_ACTION_DOES_NOT_EXIST + - ERROR_WORKFLOW_ACTION_NOT_IN_ELEMENT + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPagesDeletePageResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPagesDeletePage404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPagesUpdateExistingPageResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NAME_NOT_UNIQUE + - ERROR_PAGE_PATH_NOT_UNIQUE + - ERROR_PATH_PARAM_NOT_IN_PATH + - ERROR_PATH_PARAM_NOT_DEFINED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPagesUpdateExistingPage404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_DOES_NOT_EXIST + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPagesStartDuplicationJobResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderPagesStartDuplicationJob404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_PAGE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderWorkflowActionsDeleteWorkflowActionByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderWorkflowActionsDeleteWorkflowActionById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_WORKFLOW_ACTION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderWorkflowActionsUpdateExistingActionResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderWorkflowActionsUpdateExistingAction404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_WORKFLOW_ACTION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + BuilderWorkflowActionsDispatchServiceResultResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_WORKFLOW_ACTION_CANNOT_BE_DISPATCHED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableExportExportJobDetailsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_EXPORT_JOB_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ExportTableResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_TABLE_ONLY_EXPORT_UNSUPPORTED + - ERROR_VIEW_UNSUPPORTED_FOR_EXPORT_TYPE + - ERROR_VIEW_NOT_IN_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ExportTable404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsDeleteFieldResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_CANNOT_DELETE_PRIMARY_FIELD + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsDeleteField404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_FIELD_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsGetFieldPropertiesResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsGetFieldProperties404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_FIELD_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsUpdateFieldResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_CANNOT_CHANGE_FIELD_TYPE + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_FIELD_WITH_SAME_NAME_ALREADY_EXISTS + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_FIELD_SELF_REFERENCE + - ERROR_FIELD_CIRCULAR_REFERENCE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsUpdateField404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_FIELD_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsDuplicateAsyncResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsDuplicateAsync404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_FIELD_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsGetUniqueRowValuesResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsGetUniqueRowValues404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_FIELD_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsGetTableFieldsResponse: + type: array + items: + $ref: '#/components/schemas/FieldField' + DatabaseTableFieldsGetTableFields400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsGetTableFields401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsGetTableFields404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsCreateNewFieldResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_FIELD_COUNT_EXCEEDED + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_FIELD_WITH_SAME_NAME_ALREADY_EXISTS + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_FIELD_SELF_REFERENCE + - ERROR_FIELD_CIRCULAR_REFERENCE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsCreateNewField401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsCreateNewField404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsCalculateFormulaTypeResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_WITH_FORMULA + - ERROR_FIELD_SELF_REFERENCE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFieldsCalculateFormulaType404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetNamesOfRowResponse: + type: object + properties: + '{table_id}*': + description: An object containing the row names of table `table_id`. + type: object + properties: + '{row_id}*': + description: >- + the name of the row with id `row_id` from table with id + `table_id`. + type: string + DatabaseTableRowsGetNamesOfRow400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetNamesOfRow401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetNamesOfRow404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsListTableRowsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsListTableRows401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsListTableRows404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_FIELD_DOES_NOT_EXIST + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsCreateRowResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsCreateRow401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsCreateRow404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsDeleteRowResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsDeleteRow404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetRowByTableIdAndRowIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetRowByTableIdAndRowId401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetRowByTableIdAndRowId404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateRowResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateRow401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateRow404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetAdjacentRowResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetAdjacentRow404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetRowChangeHistoryResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetRowChangeHistory404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsMoveRowToResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsMoveRowTo401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsMoveRowTo404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateBatchRowsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_ROW_IDS_NOT_UNIQUE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateBatchRows401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateBatchRows404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsCreateBatchRowsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_ROW_IDS_NOT_UNIQUE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsCreateBatchRows401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsCreateBatchRows404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsBatchDeleteResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + - ERROR_ROW_IDS_NOT_UNIQUE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsBatchDelete404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesDeleteTableResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesDeleteTable404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesGetTableResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesGetTable404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesUpdateTableResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesUpdateTable404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesDuplicateAsyncJobResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesDuplicateAsyncJob404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesImportAsyncJobResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesImportAsyncJob404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesListByDatabaseIdResponse: + type: array + items: + $ref: '#/components/schemas/Table' + DatabaseTablesListByDatabaseId400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesListByDatabaseId404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesCreateTableResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_INVALID_INITIAL_TABLE_DATA + - ERROR_INITIAL_TABLE_DATA_LIMIT_EXCEEDED + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_INITIAL_TABLE_DATA_HAS_DUPLICATE_NAMES + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesCreateTable404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesCreateTableJobResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesCreateTableJob404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesUpdateTableOrderResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_TABLE_NOT_IN_DATABASE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTablesUpdateTableOrder404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTokensListResponse: + type: array + items: + $ref: '#/components/schemas/Token' + DatabaseTokensCreateNewTokenResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTokensDeleteTokenResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTokensDeleteToken404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TOKEN_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTokensGetTokenResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTokensGetToken404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TOKEN_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTokensUpdateTokenOwnershipResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_DATABASE_DOES_NOT_BELONG_TO_GROUP + - ERROR_TABLE_DOES_NOT_BELONG_TO_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTokensUpdateTokenOwnership404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TOKEN_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTokensVerifyTokenValidityResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TOKEN_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsGetLinkRowFieldValueResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_AUTHORIZATION_TO_PUBLICLY_SHARED_VIEW + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsGetLinkRowFieldValue404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + - ERROR_FIELD_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsGenerateTokenResponse: + type: object + properties: {} + example: {} + DatabaseTableViewsGenerateToken404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsGetPublicInfoResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsGetPublicInfo401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_AUTHORIZATION_TO_PUBLICLY_SHARED_VIEW + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsGetPublicInfo404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsDeleteViewResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsDeleteView404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsGetViewByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsGetViewById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsUpdateViewResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsUpdateView404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewDecorationsListResponse: + type: array + items: + $ref: '#/components/schemas/Decorator_Value_Provider_TypeViewDecoration' + DatabaseTableViewDecorationsList400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewDecorationsList404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewDecorationsCreateNewResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewDecorationsCreateNew404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsDuplicateViewResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsDuplicateView404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsGetFieldOptionsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_VIEW_DOES_NOT_SUPPORT_FIELD_OPTIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsGetFieldOptions404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsUpdateFieldOptionsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_VIEW_DOES_NOT_SUPPORT_FIELD_OPTIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsUpdateFieldOptions404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersCreateNewFilterGroupResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersCreateNewFilterGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersGetListResponse: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + DatabaseTableViewFiltersGetList400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersGetList404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersCreateNewFilterResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_FILTER_NOT_SUPPORTED + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersCreateNewFilter404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + - ERROR_VIEW_FILTER_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewGroupingsListResponse: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + DatabaseTableViewGroupingsList400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewGroupingsList404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewGroupingsCreateNewGroupingResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_VIEW_GROUP_BY_NOT_SUPPORTED + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_GROUP_BY_FIELD_ALREADY_EXISTS + - ERROR_VIEW_GROUP_BY_FIELD_NOT_SUPPORTED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewGroupingsCreateNewGrouping404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsRotateSlugResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_CANNOT_SHARE_VIEW_TYPE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsRotateSlug404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewSortingsListResponse: + type: array + items: + $ref: '#/components/schemas/ViewSort' + DatabaseTableViewSortingsList400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewSortingsList404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewSortingsCreateNewSortResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_VIEW_SORT_NOT_SUPPORTED + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_SORT_FIELD_ALREADY_EXISTS + - ERROR_VIEW_SORT_FIELD_NOT_SUPPORTED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewSortingsCreateNewSort404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableCalendarViewGetPublicRowsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_CALENDAR_VIEW_HAS_NO_DATE_FIELD + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableCalendarViewGetPublicRows401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_AUTHORIZATION_TO_PUBLICLY_SHARED_VIEW + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableCalendarViewGetPublicRows404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableCalendarViewGetGroupedRowsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_CALENDAR_VIEW_HAS_NO_DATE_FIELD + - ERROR_FEATURE_NOT_AVAILABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableCalendarViewGetGroupedRows404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewDecorationsDeleteExistingDecorationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewDecorationsDeleteExistingDecoration404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DECORATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewDecorationsGetViewDecorationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewDecorationsGetViewDecoration404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DECORATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewDecorationsUpdateDecorationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewDecorationsUpdateDecoration404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DECORATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersDeleteFilterGroupResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersDeleteFilterGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_FILTER_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersGetFilterGroupByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersGetFilterGroupById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_FILTER_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersUpdateFilterGroupResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersUpdateFilterGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_FILTER_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersDeleteFilterResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersDeleteFilter404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_FILTER_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersGetViewFilterResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersGetViewFilter404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_FILTER_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersUpdateExistingFilterResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_FILTER_NOT_SUPPORTED + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewFiltersUpdateExistingFilter404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_FILTER_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFormViewGetFormMetadataBySlugResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_PUBLICLY_SHARED_FORM + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFormViewGetFormMetadataBySlug404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_FORM_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFormViewSubmitFormResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_PUBLICLY_SHARED_FORM + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFormViewSubmitForm404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_FORM_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFormViewUploadFileResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + - ERROR_VIEW_HAS_NO_PUBLIC_FILE_FIELD + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFormViewUploadFile401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_AUTHORIZATION_TO_PUBLICLY_SHARED_VIEW + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableFormViewUploadFile404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGalleryViewListPublicRowsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - 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: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGalleryViewListPublicRows401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_AUTHORIZATION_TO_PUBLICLY_SHARED_VIEW + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGalleryViewListPublicRows404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GALLERY_DOES_NOT_EXIST + - ERROR_FIELD_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGalleryViewListRowsByViewIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_FILTER_FIELD_NOT_FOUND + - ERROR_VIEW_FILTER_TYPE_DOES_NOT_EXIST + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + - ERROR_FILTERS_PARAM_VALIDATION_ERROR + - ERROR_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGalleryViewListRowsByViewId404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GALLERY_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewListPublicRowsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewListPublicRows401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_AUTHORIZATION_TO_PUBLICLY_SHARED_VIEW + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewListPublicRows404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GRID_DOES_NOT_EXIST + - ERROR_FIELD_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewGetViewRowsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewGetViewRows404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GRID_DOES_NOT_EXIST + - ERROR_FIELD_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewGetFilteredDataResponse: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + DatabaseTableGridViewGetFilteredData400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewGetFilteredData404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GRID_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewComputeAggregationResponse: + type: object + properties: + value: + anyOf: + - description: The aggregation result for the specified field. + type: number + example: 5 + - description: The aggregation result for the specified field. + type: string + - description: The aggregation result for the specified field. + type: array + items: {} + - description: The aggregation result for the specified field. + type: object + total: + description: >- + The total value count. Only returned if `include=total` is specified + as GET parameter. + type: integer + example: 7 + required: + - value + DatabaseTableGridViewComputeAggregation400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_AGGREGATION_TYPE_DOES_NOT_EXIST + - ERROR_FIELD_NOT_IN_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewComputeAggregation404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_FIELD_DOES_NOT_EXIST + - ERROR_GRID_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewGetFieldAggregationsResponse: + type: object + properties: + field_{id}: + anyOf: + - description: The aggregation result for the field with id {id}. + type: number + example: 5 + - description: The aggregation result for the field with id {id}. + type: string + - description: The aggregation result for the field with id {id}. + type: array + items: {} + - description: The aggregation result for the field with id {id}. + type: object + total: + description: >- + The total value count. Only returned if `include=total` is specified + as GET parameter. + type: integer + example: 7 + DatabaseTableGridViewGetFieldAggregations400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - 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: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableGridViewGetFieldAggregations404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GRID_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewGroupingsDeleteGroupByResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewGroupingsDeleteGroupBy404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_GROUP_BY_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewGroupingsGetViewGroupByResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewGroupingsGetViewGroupBy404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_GROUP_BY_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewGroupingsUpdateGroupByResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_GROUP_BY_FIELD_ALREADY_EXISTS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewGroupingsUpdateGroupBy404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_GROUP_BY_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableKanbanViewGetPublicRowsBySlugResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_KANBAN_VIEW_HAS_NO_SINGLE_SELECT_FIELD + - ERROR_VIEW_FILTER_TYPE_DOES_NOT_EXIST + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + - ERROR_FILTER_FIELD_NOT_FOUND + - ERROR_FILTERS_PARAM_VALIDATION_ERROR + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableKanbanViewGetPublicRowsBySlug401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_AUTHORIZATION_TO_PUBLICLY_SHARED_VIEW + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableKanbanViewGetPublicRowsBySlug404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_KANBAN_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableKanbanViewGetSerializedRowsByViewIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_KANBAN_VIEW_HAS_NO_SINGLE_SELECT_FIELD + - ERROR_INVALID_SELECT_OPTION_PARAMETER + - 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: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableKanbanViewGetSerializedRowsByViewId404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_KANBAN_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewSortingsDeleteByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewSortingsDeleteById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_SORT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewSortingsGetSortByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewSortingsGetSortById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_SORT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewSortingsUpdateByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_SORT_FIELD_ALREADY_EXISTS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewSortingsUpdateById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_VIEW_SORT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsListTableViewsResponse: + type: array + items: + $ref: '#/components/schemas/ViewView' + DatabaseTableViewsListTableViews400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsListTableViews404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsCreateNewViewResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsCreateNewView404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsReorderTableOrderResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_VIEW_NOT_IN_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableViewsReorderTableOrder404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksDeleteWebhookResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksDeleteWebhook404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_WEBHOOK_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksGetExistingWebhookResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksGetExistingWebhook404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_WEBHOOK_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksUpdateViewResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksUpdateView404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_WEBHOOK_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksListResponse: + type: array + items: + $ref: '#/components/schemas/TableWebhook' + DatabaseTableWebhooksList400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksList404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksCreateWebhookResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_TABLE_WEBHOOK_MAX_LIMIT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksCreateWebhook404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksTriggerTestCallResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableWebhooksTriggerTestCall404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ListGroupsResponse: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + DeleteGroupResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DeleteGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UpdateGroupResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UpdateGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + LeaveGroupResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_GROUP_USER_IS_LAST_ADMIN + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + LeaveGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupPermissionsResponse: + type: array + items: + $ref: '#/components/schemas/PermissionObject' + GroupPermissions404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsDeleteInvitationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsDeleteInvitation404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsGetByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsGetById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsUpdateRelatedInvitationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsUpdateRelatedInvitation404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsAcceptGroupInvitationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsAcceptGroupInvitation404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsRejectGroupInvitationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsRejectGroupInvitation404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsListForGroupResponse: + type: array + items: + $ref: '#/components/schemas/WorkspaceInvitation' + GroupInvitationsListForGroup400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsListForGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsCreateNewInvitationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsCreateNewInvitation404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsFindByTokenResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - BAD_TOKEN_SIGNATURE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupInvitationsFindByToken404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupsDeleteGroupUserResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupsDeleteGroupUser404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupsUpdateGroupUserResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupsUpdateGroupUser404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_USER_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupsListGroupUsersResponse: + type: array + items: + $ref: '#/components/schemas/ListWorkspaceUsersWithMemberData' + GroupsListGroupUsers400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GroupsListGroupUsers404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + IntegrationsDeleteByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + IntegrationsDeleteById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_INTEGRATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + IntegrationsUpdateExistingIntegrationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + IntegrationsUpdateExistingIntegration404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_INTEGRATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + IntegrationsMoveIntegrationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_INTEGRATION_NOT_IN_SAME_APPLICATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + IntegrationsMoveIntegration404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_INTEGRATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ListJobResponse: + type: array + items: + $ref: '#/components/schemas/Job_TypeJob' + CreateJobResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + CreateJob404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GetJobResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_JOB_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminLicensesResponse: + type: array + items: + $ref: '#/components/schemas/License' + AdminRegisterLicenseResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_INVALID_LICENSE + - ERROR_UNSUPPORTED_LICENSE + - ERROR_PREMIUM_LICENSE_INSTANCE_ID_MISMATCH + - ERROR_LICENSE_HAS_EXPIRED + - ERROR_LICENSE_ALREADY_EXISTS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminRemoveLicenseResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_LICENSE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminGetLicenseDetailsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_LICENSE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminRemoveUserFromLicenseResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminRemoveUserFromLicense404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_LICENSE_DOES_NOT_EXIST + - ERROR_USER_NOT_FOUND + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminAddUserToLicenseResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_ALREADY_ON_LICENSE + - ERROR_NO_SEATS_LEFT_IN_LICENSE + - ERROR_CANT_MANUALLY_CHANGE_SEATS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminAddUserToLicense404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_LICENSE_DOES_NOT_EXIST + - ERROR_USER_NOT_FOUND + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminCheckLicenseStatusResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_LICENSE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminFillSeatsLicenseResponse: + type: array + items: + $ref: '#/components/schemas/LicenseUser' + AdminFillSeatsLicense400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminFillSeatsLicense404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_LICENSE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminLookupUsersResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_LICENSE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminRemoveAllUsersResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AdminRemoveAllUsers404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_LICENSE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + NotificationsClearWorkspaceNotificationsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + NotificationsClearWorkspaceNotifications404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + NotificationsListForWorkspaceAndUserResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + NotificationsListForWorkspaceAndUser404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + NotificationsMarkAsReadResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + NotificationsMarkAsRead404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - NOTIFICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + NotificationsMarkAllAsReadResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + NotificationsMarkAllAsRead404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RoleAssignmentsListWithinGroupResponse: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + RoleAssignmentsListWithinGroup400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RoleAssignmentsListWithinGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RoleAssignmentsAssignRoleToGroupResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RoleAssignmentsAssignRoleToGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RoleAssignmentsAssignMultipleSubjectsToGroupResponse: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + RoleAssignmentsAssignMultipleSubjectsToGroup400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_DUPLICATE_ROLE_ASSIGNMENTS + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RoleAssignmentsAssignMultipleSubjectsToGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RoleAssignmentsListWithinWorkspaceScopeResponse: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + RoleAssignmentsListWithinWorkspaceScope400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RoleAssignmentsListWithinWorkspaceScope404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AssignRoleResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AssignRole404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RoleAssignmentsAssignRoleToGroup200Response: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + RoleAssignmentsAssignRoleToGroup400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_DUPLICATE_ROLE_ASSIGNMENTS + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetAllCommentsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsGetAllComments404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsCreateCommentResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_INVALID_COMMENT_MENTION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsCreateComment404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateNotificationModeResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateNotificationMode404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsDeleteCommentResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_NOT_COMMENT_AUTHOR + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsDeleteComment401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsDeleteComment404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_COMMENT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateCommentResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_NOT_COMMENT_AUTHOR + - ERROR_INVALID_COMMENT_MENTION + - ERROR_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateComment401Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_NO_PERMISSION_TO_TABLE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DatabaseTableRowsUpdateComment404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TABLE_DOES_NOT_EXIST + - ERROR_ROW_COMMENT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DeleteSnapshotResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_RESTORED + - ERROR_SNAPSHOT_IS_BEING_DELETED + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DeleteSnapshot404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_SNAPSHOT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RestoreSnapshotResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_RESTORED + - ERROR_SNAPSHOT_IS_BEING_DELETED + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + RestoreSnapshot404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_SNAPSHOT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ListSnapshotsResponse: + type: array + items: + $ref: '#/components/schemas/Snapshot' + ListSnapshots400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ListSnapshots404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + CreateSnapshotResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_MAXIMUM_SNAPSHOTS_REACHED + - ERROR_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_CREATED + - ERROR_SNAPSHOT_NAME_NOT_UNIQUE + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + CreateSnapshot404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + AuthGetSamlLoginUrlResponse: + description: Unspecified response body + type: object + additionalProperties: {} + AuthGetSamlLoginUrl400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_SAML_INVALID_LOGIN_REQUEST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DeleteTeamResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DeleteTeam404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TEAM_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GetTeamResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TEAM_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UpdateTeamResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_BAD_REQUEST" + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UpdateTeam404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TeamsListSubjectsResponse: + type: array + items: + $ref: '#/components/schemas/TeamSubjectResponse' + TeamsListSubjects400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TEAM_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + CreateSubjectResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + - ERROR_SUBJECT_BAD_REQUEST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + CreateSubject404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DeleteSubjectResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DeleteSubject404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + GetSubjectResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TeamsGetAllInGroupResponse: + type: array + items: + $ref: '#/components/schemas/TeamResponse' + TeamsGetAllInGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TeamsCreateInGroupResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_SUBJECT_BAD_REQUEST + - ERROR_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TeamsCreateInGroup404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TeamsListInWorkspaceResponse: + type: array + items: + $ref: '#/components/schemas/TeamResponse' + TeamsListInWorkspace404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TeamsCreateNewTeamResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_SUBJECT_BAD_REQUEST + - ERROR_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TeamsCreateNewTeam404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ListTemplatesResponse: + type: array + items: + $ref: '#/components/schemas/TemplateCategories' + TemplatesInstallApplicationsResponse: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + TemplatesInstallApplications400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_TEMPLATE_FILE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TemplatesInstallApplications404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TemplatesStartAsyncJobResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_TEMPLATE_FILE_DOES_NOT_EXIST + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TemplatesStartAsyncJob404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + InstallTemplateResponse: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + InstallTemplate400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_TEMPLATE_FILE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + InstallTemplate404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TemplatesStartAsyncJob400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_TEMPLATE_FILE_DOES_NOT_EXIST + - ERROR_MAX_JOB_COUNT_EXCEEDED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TrashEmptyGroupContentsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TrashGetGroupContentsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TrashRestoreItemResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_TRASH_ITEM_DOES_NOT_EXIST + - ERROR_CANNOT_RESTORE_PARENT_BEFORE_CHILD + - ERROR_PARENT_ID_MUST_NOT_BE_PROVIDED + - ERROR_PARENT_ID_MUST_BE_PROVIDED + - ERROR_CANT_RESTORE_AS_RELATED_TABLE_TRASHED + - ERROR_CANNOT_RESTORE_ITEM_NOT_OWNED_BY_USER + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TrashEmptyWorkspaceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TrashGetWorkspaceTrashContentsResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + CreateUserResponse: + type: object + properties: + user: + description: An object containing information related to the user. + type: object + properties: + first_name: + description: The first name of related user. + type: string + username: + description: >- + The username of the related user. This is always an email + address. + type: string + format: email + language: + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + type: string + token: + description: Deprecated. Use the `access_token` instead. + type: string + deprecated: true + access_token: + description: >- + 'access_token' can be used to authorize for other endpoints that + require authorization. This token will be valid for 10 minutes. + type: string + refresh_token: + description: >- + 'refresh_token' can be used to get a new valid 'access_token'. This + token will be valid for 168 hours. + type: string + CreateUser400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_ALREADY_EXISTS + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + - ERROR_REQUEST_BODY_VALIDATION + - BAD_TOKEN_SIGNATURE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + CreateUser404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UploadFileResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserFilesUploadViaUrlResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + - ERROR_FILE_URL_COULD_NOT_BE_REACHED + - ERROR_INVALID_FILE_URL + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesRefreshAccessTokenResponse: + type: object + properties: + access_token: + description: >- + 'access_token' can be used to authorize for other endpoints that + require authorization. This token will be valid for 10 minutes. + type: string + UserSourcesRefreshAccessToken401Response: + type: object + properties: {} + example: {} + UserSourcesBlacklistTokenResponse: + type: object + properties: {} + example: {} + UserSourcesRemoveByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesRemoveById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_SOURCE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesUpdateExistingUserSourceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesUpdateExistingUserSource404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_SOURCE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesRearrangeUserSourceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_USER_SOURCE_NOT_IN_SAME_APPLICATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSourcesRearrangeUserSource404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_SOURCE_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UpdateAccountResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ChangePasswordResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_INVALID_OLD_PASSWORD + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + ResetPasswordResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - BAD_TOKEN_SIGNATURE + - EXPIRED_TOKEN_SIGNATURE + - ERROR_USER_NOT_FOUND + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserScheduleAccountDeletionResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UserSendResetPasswordEmailResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_HOSTNAME_IS_NOT_ALLOWED + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + TokenAuthResponse: + type: object + properties: + user: + description: An object containing information related to the user. + type: object + properties: + first_name: + description: The first name of related user. + type: string + username: + description: >- + The username of the related user. This is always an email + address. + type: string + format: email + language: + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + type: string + token: + description: Deprecated. Use the `access_token` instead. + type: string + deprecated: true + access_token: + description: >- + 'access_token' can be used to authorize for other endpoints that + require authorization. This token will be valid for 10 minutes. + type: string + refresh_token: + description: >- + 'refresh_token' can be used to get a new valid 'access_token'. This + token will be valid for 168 hours. + type: string + TokenAuth401Response: + type: object + properties: {} + example: {} + TokenBlacklistResponse: + type: object + properties: {} + example: {} + TokenRefreshResponse: + type: object + properties: + user: + description: An object containing information related to the user. + type: object + properties: + first_name: + description: The first name of related user. + type: string + username: + description: >- + The username of the related user. This is always an email + address. + type: string + format: email + language: + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + type: string + token: + description: Deprecated. Use the `access_token` instead. + type: string + deprecated: true + access_token: + description: >- + 'access_token' can be used to authorize for other endpoints that + require authorization. This token will be valid for 10 minutes. + type: string + TokenRefresh401Response: + type: object + properties: {} + example: {} + TokenVerifyResponse: + type: object + properties: + user: + description: An object containing information related to the user. + type: object + properties: + first_name: + description: The first name of related user. + type: string + username: + description: >- + The username of the related user. This is always an email + address. + type: string + format: email + language: + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + type: string + TokenVerify401Response: + type: object + properties: {} + example: {} + ListWorkspacesResponse: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + DeleteWorkspaceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + DeleteWorkspace404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UpdateWorkspaceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + UpdateWorkspace404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + LeaveWorkspaceResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_GROUP_USER_IS_LAST_ADMIN + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + LeaveWorkspace404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspacePermissionsResponse: + type: array + items: + $ref: '#/components/schemas/PermissionObject' + WorkspacePermissions404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsDeleteInvitationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsDeleteInvitation404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsGetByIdResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsGetById404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsUpdateExistingInvitationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsUpdateExistingInvitation404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsAcceptInvitationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsAcceptInvitation404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsRejectInvitationResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsRejectInvitation404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsGetByTokenResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - BAD_TOKEN_SIGNATURE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsGetByToken404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsListResponse: + type: array + items: + $ref: '#/components/schemas/WorkspaceInvitation' + WorkspaceInvitationsList400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsList404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsCreateInviteResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspaceInvitationsCreateInvite404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspacesDeleteUserResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspacesDeleteUser404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspacesUpdateWorkspaceUserResponse: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspacesUpdateWorkspaceUser404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_USER_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspacesListUsersInWorkspaceResponse: + type: array + items: + $ref: '#/components/schemas/ListWorkspaceUsersWithMemberData' + WorkspacesListUsersInWorkspace400Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_USER_NOT_IN_GROUP + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + WorkspacesListUsersInWorkspace404Response: + type: object + properties: + error: + description: Machine readable error indicating what went wrong. + type: string + enum: + - ERROR_GROUP_DOES_NOT_EXIST + detail: + oneOf: + - description: Human readable details about what went wrong. + type: string + format: string + - description: Machine readable object about what went wrong. + type: object + format: object + securitySchemes: + Database token: + type: http + scheme: bearer + bearerFormat: Token your_token + JWT: + type: http + scheme: bearer + bearerFormat: JWT your_token diff --git a/sdks/db/fixed-specs/beam-fixed-spec.yaml b/sdks/db/fixed-specs/beam-fixed-spec.yaml index 78082360cf..fc782befd6 100644 --- a/sdks/db/fixed-specs/beam-fixed-spec.yaml +++ b/sdks/db/fixed-specs/beam-fixed-spec.yaml @@ -17,7 +17,7 @@ info: statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated - credit decisions. + credit decisions. Our completely digital customer onboarding process allows for near-instant diff --git a/sdks/db/fixed-specs/browse-ai-fixed-spec.yaml b/sdks/db/fixed-specs/browse-ai-fixed-spec.yaml new file mode 100644 index 0000000000..b4051060a8 --- /dev/null +++ b/sdks/db/fixed-specs/browse-ai-fixed-spec.yaml @@ -0,0 +1,8161 @@ +openapi: 3.0.3 +info: + title: Browse AI API Documentation + description: >- + If you are still using the deprecated API v1 version, you can see its + documentation [here](https://www.browse.ai/docs/api/v1). + version: v2 +servers: + - url: https://api.browse.ai/v2 +tags: + - description: > + Each robot on Browse AI can optionally have one or more monitors. + Monitoring robots come with one monitor by default. + + + For example, if you set up a monitoring robot to monitor a category page + on an e-commerce site for changes daily, you can set up additional + monitors to monitor other category pages on the same site using the same + robot. + + + Each monitor can have different input parameters and schedule. + name: monitors + x-displayName: Monitors + - description: > + A robot can be trained do almost anything you do manually on the web. For + example: + + - Open a webpage, + - Log in, + - Click on buttons, + - Fill out forms, + - Extract structured data from a webpage into a spreadsheet, + - Take screenshots, + - Monitor specific parts of webpages for visual or content changes. + + Robots are created either by using Prebuilt Robots or using Browse AI + Recorder and its click-and-extract interface. Every robot has a few input + parameters (like the webpage address) that you can adjust every time you + run it. + name: robots + x-displayName: Robots + - description: > + Each robot is trained to perform a certain task. Every time you run that + robot, it will perform that task and the details, including the extracted + data, will be stored under that task. + + + If you set up a monitoring robot to monitor a webpage for changes daily, + it will have to run a task every day or about 30 tasks per month for you. + name: tasks + x-displayName: Tasks + - description: | + After a robot finishes a task, its webhooks will be called. + name: webhooks + x-displayName: Webhooks + - description: > + You can run up to 50,000 tasks at once using a robot with different input + parameters for each task. + name: bulk runs + x-displayName: Bulk Runs + - description: > + There are some endpoints that are only used by our integrations, so we + don't add this tag to our core resources + name: internal + x-displayName: Internal + - description: > + This tag is used for endpoints that are used to check the status of Browse + AI infrastructure + name: system + x-displayName: System +paths: + /status: + get: + tags: + - system + summary: Endpoint for checking the status of Browse AI infrastructure + operationId: System_checkInfrastructureStatus + description: > + This endpoint provides you with real-time information regarding the + operational status of the Browse AI infrastructure. It gives insights + into the condition of the tasks queue, thus allowing you to understand + if the services are running smoothly or are under maintenance. + responses: + '200': + description: A JSON containing Browse AI infrastructure status + content: + application/json: + schema: + $ref: '#/components/schemas/getSystemStatus-200' + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/status"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/status\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/status") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/status", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/status', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/status"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/status", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/status", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/status" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/status") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/status \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/status + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/status")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /teams: + get: + tags: + - internal + summary: Retrieve list of teams under user account + operationId: Internal_getTeamsByAuth0AccessToken + description: > + this endpoint be used on Browse AI integrations to fetch all of the + teams by auth0 access token + parameters: + - $ref: '#/components/parameters/authorization' + responses: + '200': + description: A JSON containing the total number of the user. + content: + application/json: + schema: + $ref: '#/components/schemas/getUserTeams-200' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/teams"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/teams\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/teams") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/teams", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/teams', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/teams"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/teams", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/teams", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/teams" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/teams") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/teams \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/teams + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/teams")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots: + get: + tags: + - robots + summary: Retrieve list of robots under your account + operationId: Robots_listRetrieval + description: > + If you have already created a few robots on [your + dashboard](https://dashboard.browse.ai), you can use this endpoint to + retrieve a list of them. + + You can then use other endpoints to retrieve more information about your + robots or run robots. + parameters: + - $ref: '#/components/parameters/authorization' + responses: + '200': + description: >- + A JSON containing the total number of robots and an array of robots + under this team. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobots-200' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/robots"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/robots", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots/{robotId}: + get: + tags: + - robots + summary: Retrieve single robot by ID + operationId: Robots_getById + description: | + You can use this endpoint to retrieve a single robot by ID. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID You can find a robot's ID by opening it on the + dashboard and copying its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + responses: + '200': + description: >- + A JSON containing the total number of robots and an array of robots + under this team. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobot-200' + '400': + description: A JSON containing an error code and message. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobot-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/robots/{robotId}", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots/{robotId}/cookies: + patch: + tags: + - robots + summary: Update a robot's cookies + operationId: Robots_updateCookies + description: Update a robot's cookies + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RobotsUpdateCookiesRequest' + responses: + '200': + description: A JSON object containing the updated monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/upsertRobotCookies-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/upsertRobotCookies-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.PATCH); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":false,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":16}\")\n\n\treq, _ := http.NewRequest(\"PATCH\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.patch("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "PATCH", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'PATCH', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @NO, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @16 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"PATCH"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "PATCH", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("PATCH", "/v2/robots/{robotId}/monitors/{monitorId}", + payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": False, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 16 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("PATCH", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Patch.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request PATCH \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method PATCH \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": false, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 16 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "PATCH" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots/{robotId}/tasks: + get: + tags: + - tasks + summary: Get all tasks by a robot + operationId: Tasks_getAllByRobot + description: | + Get all of a robot's tasks + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - description: Page number + in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + - description: Page size + in: query + name: pageSize + schema: + type: integer + minimum: 1 + maximum: 10 + default: 10 + example: 10 + required: false + - description: Task status + in: query + name: status + schema: + type: string + enum: + - failed + - successful + - in-progress + example: successful + required: false + - description: filter the result based on robot bulk run ID + in: query + name: robotBulkRunId + schema: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + required: false + - description: >- + A comma separated list of fields to sort by. Default sorting is + ascending and prefixing field names with a hyphen '-' yields a + descending order. + in: query + name: sort + schema: + type: string + example: '-createdAt,finishedAt' + required: false + - description: by passing false you can exclude the retried tasks + in: query + name: includeRetried + schema: + type: boolean + example: false + required: false + - description: From task creation date and time in the form of a Unix timestamp + in: query + name: fromDate + schema: + type: integer + example: 1678795867879 + required: false + - description: To task creation date and time in the form of a Unix timestamp + in: query + name: toDate + schema: + type: integer + example: 1678795867879 + required: false + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTasks-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTasks-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/tasks?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/tasks?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/tasks?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks?page=1")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + post: + tags: + - tasks + summary: Run a robot + operationId: Tasks_runRobotTask + description: > + Run a robot on-demand with custom input parameters. + + + When you need to run a robot and get its captured data, you can use this + endpoint to run the task, and then use webhooks to receive the captured + data as soon as the task is finished. Alternatively, you can poll the + GET endpoint to retrieve a task's details as soon as it is finished. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + requestBody: + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/NewRobotTaskBodyParams' + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/newRobotTask-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/newRobotTask-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: The request can not be processed + content: + application/json: + schema: + $ref: '#/components/schemas/CreditsLimitReachedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + '503': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/RobotUnderMaintenanceResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks\"\n\n\tpayload := strings.NewReader(\"{\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/tasks") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + } + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + } + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"inputParameters": @{ @"originUrl": + @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" + } }; + + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/tasks", payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks" + + + payload = {"inputParameters": {"originUrl": + "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}} + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/tasks") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/tasks \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/tasks + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = ["inputParameters": ["originUrl": + "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"]] + as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots/{robotId}/tasks/{taskId}: + get: + tags: + - tasks + summary: Retrieve a task + operationId: Tasks_getTaskDetails + description: Retrieve a task's details and captured data. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - description: Unique task ID + in: path + name: taskId + schema: + type: string + required: true + example: f3672790-4561-424b-8a7b-7b7df182b236 + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTask-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTask-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks/{taskId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/tasks/{taskId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots/{robotId}/monitors: + get: + tags: + - monitors + summary: Retrieve a robot's monitors + operationId: Monitors_getList + description: Retrieve a robot's monitors list. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + responses: + '200': + description: A JSON including monitors list. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitors-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitors-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/monitors", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + post: + tags: + - monitors + summary: Create a new monitor on a robot + operationId: Monitors_createNew + description: Create a new monitor on a robot. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNewMonitorRequestBody' + responses: + '200': + description: A JSON object containing the newly created monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorBadRequestResponse' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorForbiddenResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":true,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":15}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @YES, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @15 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/monitors", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": True, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 15 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": true, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 15 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots/{robotId}/monitors/{monitorId}: + get: + tags: + - monitors + summary: Retrieve a robot's monitor + operationId: Monitors_getRobotMonitor + description: Retrieve a robot's monitor. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + responses: + '200': + description: A JSON object containing the monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitor-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/monitors/{monitorId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + patch: + tags: + - monitors + summary: Update a robot's monitor + operationId: Monitors_updateRobotMonitor + description: Update a robot's monitor + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitorUpdateBodyParams' + responses: + '200': + description: A JSON object containing the updated monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/updateMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorBadRequestResponse' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorForbiddenResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.PATCH); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":false,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":16}\")\n\n\treq, _ := http.NewRequest(\"PATCH\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.patch("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "PATCH", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'PATCH', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @NO, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @16 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"PATCH"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "PATCH", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("PATCH", "/v2/robots/{robotId}/monitors/{monitorId}", + payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": False, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 16 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("PATCH", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Patch.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request PATCH \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method PATCH \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": false, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 16 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "PATCH" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + delete: + tags: + - monitors + summary: Delete a robot's monitor + operationId: Monitors_deleteRobotMonitor + description: Delete a robot's monitor. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + responses: + '200': + description: A JSON object containing the deleted monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteMonitor-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.DELETE); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.delete("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "DELETE", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'DELETE', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"DELETE"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "DELETE", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("DELETE", "/v2/robots/{robotId}/monitors/{monitorId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("DELETE", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Delete.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request DELETE \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method DELETE \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "DELETE" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots/{robotId}/bulk-runs: + post: + tags: + - bulk runs + summary: Bulk run tasks + operationId: BulkRuns_executeTasks + description: Bulk run up to 1,000 tasks at a time using a robot. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BulkRunBodyParams' + responses: + '200': + description: A JSON object containing the newly created Bulk run. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-403' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + '503': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/RobotUnderMaintenanceResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs\"\n\n\tpayload := strings.NewReader(\"{\\\"title\\\":\\\"Bulk Run Title\\\",\\\"inputParameters\\\":[{\\\"originUrl\\\":\\\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\\\"},{\\\"originUrl\\\":\\\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\\\"}]}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/bulk-runs") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"title\":\"Bulk Run Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + title: 'Bulk Run Title', + inputParameters: [ + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories' + }, + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers' + } + ] + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + title: 'Bulk Run Title', + inputParameters: [ + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories' + }, + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers' + } + ] + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"title": @"Bulk Run Title", + @"inputParameters": @[ @{ @"originUrl": @"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories" }, @{ @"originUrl": @"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers" } ] }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"title\":\"Bulk Run Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/bulk-runs", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/bulk-runs" + + + payload = { + "title": "Bulk Run Title", + "inputParameters": [{"originUrl": "https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"}, {"originUrl": "https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}] + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/bulk-runs \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"title":"Bulk Run Title","inputParameters":[{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"},{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}]}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"title":"Bulk Run Title","inputParameters":[{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"},{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}]}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/bulk-runs + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "title": "Bulk Run Title", + "inputParameters": [["originUrl": "https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"], ["originUrl": "https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"]] + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + get: + tags: + - bulk runs + summary: Retrieve a robot's bulk runs list + operationId: BulkRuns_getList + description: Retrieve a robot's bulk runs list. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - description: Page number + in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + responses: + '200': + description: A JSON object containing the bulk runs list. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRuns-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRuns-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/bulk-runs?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/bulk-runs" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1")! as + URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots/{robotId}/bulk-runs/{bulkRunId}: + get: + tags: + - bulk runs + summary: Retrieve a robot's bulk run + operationId: BulkRuns_getRobotBulkRun + description: >- + Retrieve a robot's bulk run along with a list of tasks run within the + bulk run. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - description: | + Unique bulk run ID + in: path + name: bulkRunId + schema: + type: string + required: true + example: 5aa4df52-25bb-48da-bf38-ce4f2bd98dd5 + - description: Page number + in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + responses: + '200': + description: >- + A JSON object containing the bulk run information along with a + paginated list of all its tasks. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRun-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRun-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", + "/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots/{robotId}/webhooks: + get: + tags: + - webhooks + summary: Retrieve a robot's webhooks + operationId: Webhooks_getList + description: Retrieve a robot's webhook list. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + responses: + '200': + description: A JSON including monitors list. + content: + application/json: + schema: + $ref: '#/components/schemas/getWebhooks-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getWebhooks-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/webhooks"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/webhooks\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/webhooks") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/webhooks", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/webhooks', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/webhooks"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/webhooks", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/webhooks", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/webhooks" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/webhooks") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/webhooks \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/webhooks + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/webhooks")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + post: + tags: + - webhooks + summary: Create a new webhook on a robot + operationId: Webhooks_createNewOnRobot + description: Create a new webhook on a robot + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNewWebhookBodyParams' + responses: + '200': + description: A JSON object containing the newly created monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewWebhook-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewWebhook-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":true,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":15}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @YES, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @15 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/monitors", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": True, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 15 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": true, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 15 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + /robots/{robotId}/webhooks/{webhookId}: + delete: + tags: + - webhooks + summary: Delete a robot's webhook + operationId: Webhooks_deleteRobotWebhook + description: Delete a robot's webhook. + parameters: + - $ref: '#/components/parameters/authorization' + - description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + - description: | + Unique webhookId ID + in: path + name: webhookId + schema: + type: string + required: true + example: 6d7f1218-43fb-4735-ac71-21e81b1ab23e + responses: + '200': + description: A JSON object containing the deleted monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteWebhook-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteWebhook-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}"); + + var request = new RestRequest(Method.DELETE); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.delete("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "DELETE", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/webhooks/{webhookId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'DELETE', + url: 'https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"DELETE"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "DELETE", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("DELETE", "/v2/robots/{robotId}/webhooks/{webhookId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("DELETE", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Delete.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request DELETE \ + --url https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method DELETE \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "DELETE" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() +components: + parameters: + authorization: + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. + in: header + name: authorization + required: true + schema: + type: string + example: Bearer YOUR_SECRET_API_KEY + schemas: + getSystemStatus-200: + type: object + required: + - tasksQueueStatus + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + tasksQueueStatus: + type: string + enum: + - OK + - UNDER_MAINTENANCE + example: OK + Team: + type: object + required: + - id + - api + - createdAt + properties: + id: + description: Unique team ID + type: string + example: b04eaafa-00c2-41a2-9c6a-7f7d32805a91 + name: + description: Team name + type: string + nullable: true + example: Browse AI team + api: + description: API accessibility + type: boolean + example: true + createdAt: + description: Team creation date and time in the form of a Unix timestamp + type: integer + example: 1678795867879 + getUserTeams-200: + type: object + required: + - statusCode + - messageCode + - teams + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + teams: + type: object + required: + - totalCount + - items + properties: + totalCount: + description: Total number of Team this user has. + type: integer + example: 20 + items: + type: array + items: + $ref: '#/components/schemas/Team' + UnauthorizedResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 401 + messageCode: + type: string + enum: + - unauthorized + - no_api_access + example: unauthorized + CommonParameterPart: + type: object + required: + - name + - label + properties: + type: + description: Parameter type + type: string + name: + description: Parameter name + type: string + example: originUrl + label: + description: Parameter title + type: string + example: Origin URL + TextParameter: + title: Text Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - defaultValue + - encrypted + properties: + encrypted: + description: Whether parameter value and defaultValue are encrypted + type: boolean + example: false + defaultValue: + description: > + Parameter default value that will be used as a fallback if you + do not specify a parameter's value when running a robot. If + `encrypted` is `true`, this will appear as an arbitrary string + like `******`. Parameter default values can be updated on robot + Settings page on your dashboard. + type: string + example: >- + https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines + value: + description: > + Parameter value specified when running robot. If `encrypted` is + `true`, this will appear as an arbitrary string like `******`. + type: + type: string + enum: ["text"] + example: "text" + description: Parameter type + pattern: + type: string + description: Parameter Pattern + type: string + nullable: true + example: null + NumberParameter: + title: Numeric Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - type + - name + - label + - defaultValue + properties: + type: + description: Parameter type + type: string + enum: + - number + example: number + name: + description: Parameter name + type: string + example: limit + label: + description: Parameter title + type: string + example: Limit + defaultValue: + description: >- + Parameter default value that will be used if you do not specify + a parameter's value when running a robot. + type: number + example: 10 + value: + description: Parameter value specified when running robot. + type: number + nullable: true + example: .nan + min: + description: Minimum value this parameter accepts + type: number + nullable: true + example: 0 + max: + description: Maximum value this parameter accepts + type: number + nullable: true + example: 200 + URLParameter: + title: URL Parameter + allOf: + - $ref: '#/components/schemas/TextParameter' + - type: object + required: + - type + - encrypted + properties: + type: + description: Parameter type + type: string + enum: + - url + example: url + encrypted: + description: Whether parameter value and defaultValue are encrypted + type: boolean + example: false + SelectParameterOption: + type: object + required: + - label + - value + properties: + label: + description: The label for the select option + type: string + example: Option 1 + value: + description: The value for the select option + type: string + example: option1 + SelectParameter: + title: Select Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - type + - name + - label + - defaultValue + - options + properties: + type: + description: Parameter type + type: string + enum: + - select + example: select + name: + description: Parameter name + type: string + example: choice + label: + description: Parameter title + type: string + example: Choice + defaultValue: + description: > + Parameter default value that will be used as a fallback if you + do not specify a parameter's value when running a robot. + + It should be an array of string values. Each string value should + be one of the `value` or `label` of the `options` array. For + each string value, if there is a matching `value` in the + `options` array, it will be used as the default value. + Otherwise, it looks for the `label` in the `options` and uses + the `value` of the option with that `label`. If no matching + `value` or `label` is found, it throws an error. + type: array + items: + type: string + example: + - option_1 + - option_2 + value: + description: > + Parameter value specified when running robot. + + If it is specified, it should be an array of string values. Each + string value should be one of the `value` or `label` of the + `options` array. For each string value, if there is a matching + `value` in the `options` array, it will be used as the default + value. Otherwise, it looks for the `label` in the `options` and + uses the `value` of the option with that `label`. If no matching + `value` or `label` is found, it throws an error. + type: array + items: + type: string + nullable: true + example: + - option_1 + - option_2 + options: + description: Available options for the select parameter + type: array + items: + $ref: '#/components/schemas/SelectParameterOption' + example: + - label: Option 1 label + value: option_1 + - label: Option 2 label + value: option_2 + RobotInputParameters: + type: array + items: + oneOf: + - $ref: '#/components/schemas/TextParameter' + - $ref: '#/components/schemas/NumberParameter' + - $ref: '#/components/schemas/URLParameter' + - $ref: '#/components/schemas/SelectParameter' + Robot: + type: object + required: + - id + - createdAt + properties: + id: + description: Unique robot ID + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + name: + description: Robot name + type: string + example: Extract data from Realtor.com + createdAt: + description: Robot creation date and time in the form of a Unix timestamp + type: integer + example: 1678795867879 + inputParameters: + $ref: '#/components/schemas/RobotInputParameters' + getRobots-200: + type: object + required: + - statusCode + - messageCode + - robots + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + robots: + type: object + required: + - totalCount + - items + properties: + totalCount: + description: Total number of robots this team has. + type: integer + example: 20 + items: + type: array + items: + $ref: '#/components/schemas/Robot' + getRobot-200: + type: object + required: + - statusCode + - messageCode + - robot + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + robot: + $ref: '#/components/schemas/Robot' + getRobot-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + NotFoundResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 404 + messageCode: + type: string + enum: + - not_found + InternalServerResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 500 + messageCode: + type: string + enum: + - internal_server_error + RobotCookie: + type: object + properties: + name: + description: The name of the cookie. + type: string + example: ACCOUNT_CHOOSER + value: + description: The value of the cookie. + type: string + example: 12341234 + domain: + description: >- + The domain associated with the cookie. Specifies the domains to + which the cookie should be sent. + type: string + example: .example.com + expirationDate: + description: >- + The expiration date of the cookie in seconds since the UNIX epoch + (e.g., POSIX time). If not provided, the cookie will be treated as a + session cookie. + type: number + format: int64 + example: 1723659417 + path: + description: >- + The URL path to which the cookie should be sent. If not provided, it + defaults to the current path of the document location. + type: string + example: /products/ + secure: + description: >- + Indicates whether the cookie should only be sent over secure (HTTPS) + connections. If true, the cookie will not be sent over unencrypted + HTTP connections. + type: boolean + example: true + httpOnly: + description: >- + If true, the cookie is accessible only through the HTTP(S) protocol + and cannot be accessed through JavaScript or other client-side + scripts. + type: boolean + example: true + hostOnly: + description: >- + If true, the cookie is only sent to the exact domain specified in + the "domain" property. If false, the cookie is sent to subdomains as + well, provided that the "domain" property allows it. + type: boolean + example: true + required: + - name + - value + upsertRobotCookies-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + cookies: + type: array + items: + $ref: '#/components/schemas/RobotCookie' + CookieError: + type: object + required: + - summary + - fields + properties: + summary: + description: Summary of the error + type: string + example: Errors found in existing cookie fields + name: + description: Name of the cookie + type: string + example: ACCOUNT_CHOOSER + fields: + type: array + items: + type: object + required: + - field + - message + properties: + field: + description: Field name with the error + type: string + example: value + message: + description: Error message for the field + type: string + example: Required + upsertRobotCookies-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + example: bad_request + errors: + type: array + items: + $ref: '#/components/schemas/CookieError' + InputParameters: + description: An object of input parameters to override default input parameters. + type: object + example: + originUrl: https://www.ycombinator.com/companies/airbnb + companies_skip: 0 + companies_limit: 10 + additionalProperties: + oneOf: + - type: string + - type: number + - type: array + items: + type: string + CapturedTexts: + description: Captured texts + type: object + example: + Product Name: Alexis + Width: '15' + Pattern Repeat: PATTERN REPEAT + Construction: Hand woven + Fiber: 100% Wool + Color: null + Main Image: >- + https://isteam.wsimg.com/ip/e31f7bba-252b-4669-9209-639d1c00765d/ols/258_original + additionalProperties: + type: string + nullable: true + CapturedScreenshots: + description: All screenshots captured in this task. + type: object + example: + top-ads: + id: b4d132f3-12d9-4770-ac7d-88e481fc5b47 + name: Top ads + src: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + width: 600 + height: 120 + x: 201 + 'y': 142 + deviceScaleFactor: 1.2 + full: page + comparedToScreenshotId: 29d742c2-6f45-4f29-9d48-ba6fe66e6e3d + diffImageSrc: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + changePercentage: 20 + diffThreshold: 5 + fileRemovedAt: 1678795867879 + additionalProperties: + type: object + required: + - id + - src + - width + - height + - x + - 'y' + - deviceScaleFactor + - changePercentage + - diffThreshold + properties: + id: + description: Unique screenshot ID + type: string + example: b4d132f3-12d9-4770-ac7d-88e481fc5b47 + name: + description: Screenshot name + type: string + nullable: true + example: Top ads + src: + description: Screenshot image link + type: string + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + width: + description: Screenshot rectangle width in pixels + type: number + example: 600 + minimum: 0 + height: + description: Screenshot rectangle height in pixels + type: number + example: 120 + minimum: 0 + x: + description: >- + Screenshot rectangle distance from the left edge of the page in + pixels + type: number + example: 201 + 'y': + description: >- + Screenshot rectangle distance from the top edge of the page in + pixels + type: number + example: 142 + deviceScaleFactor: + description: Device scale factor when screenshot was taken + type: number + example: 1.2 + full: + description: > + Whether this is a full *page* screenshot, a *viewport* screenshot, + or a different type of screenshot. + + + `null` means it is either an HTML element screenshot or a + particular rectangle (x, y, w, h) screenshot. + type: string + nullable: true + example: page + comparedToScreenshotId: + description: >- + If screenshot was taken in a monitoring check, this is the ID of + the screenshot it was compared to. + type: string + nullable: true + example: 29d742c2-6f45-4f29-9d48-ba6fe66e6e3d + diffImageSrc: + description: >- + A transparent PNG highlighting changes compared to previous + screenshot in red + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + changePercentage: + description: How much screenshot changed compared to previous screenshot + type: number + example: 20 + minimum: 0 + diffThreshold: + description: >- + The change percentage threshold above which the user would be + notified of the change, based on monitor settings. + type: integer + example: 5 + minimum: 0 + fileRemovedAt: + description: > + After your account's data retention period, screenshots get + removed and this field will be screenshot removal date and time + in the form of a Unix timestamp. + type: integer + nullable: true + example: 1678795867879 + CapturedLists: + description: All lists captured in this task. + type: object + example: + companies: + - description: Book accommodations around the world. + Position: '1' + name: Airbnb + location: San Francisco, CA, USA + - description: Buy, sell, and manage crypto currencies. + Position: '2' + name: Coin base + location: San Francisco, CA, USA + - description: Restaurant delivery. + Position: '3' + name: DoorDash + location: San Francisco, CA, USA + additionalProperties: + type: array + items: + $ref: '#/components/schemas/CapturedTexts' + RobotTask: + type: object + required: + - id + - inputParameters + - robotId + - createdAt + - runByAPI + - triedRecordingVideo + - capturedTexts + - capturedScreenshots + - capturedLists + properties: + id: + description: Unique task ID + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + inputParameters: + $ref: '#/components/schemas/InputParameters' + robotId: + description: Unique robot ID + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + status: + description: task status + type: string + enum: + - failed + - successful + - in-progress + example: successful + runByUserId: + description: User ID who ran the robot on the dashboard + type: string + nullable: true + example: null + robotBulkRunId: + description: Robot bulk run ID associated with this task + type: string + nullable: true + example: null + runByTaskMonitorId: + description: Monitor ID that ran this check + type: string + nullable: true + example: null + runByAPI: + description: Whether the robot was ran through the API + type: boolean + example: true + createdAt: + description: Task creation date and time in the form of a Unix timestamp + type: integer + example: 1678795867879 + startedAt: + description: Task start date and time in the form of a Unix timestamp + type: integer + nullable: true + example: 1678795867879 + finishedAt: + description: > + Task finish date and time in the form of a Unix timestamp. + + + If `null`, it means robot is still running and capturing data. + + + Tasks time out with an error if they are not finished within 15 + minutes (or the maximum duration allowed on your plan). + type: integer + nullable: true + example: 1678795867879 + userFriendlyError: + description: If task fails, a user-friendly error will be provided here. + type: string + nullable: true + example: null + triedRecordingVideo: + description: > + Whether the robot tried to record a video while performing this + task. + + + You can change a robot's video recording setting on its Settings + page. + + + Robots try to record a video when a task is failed and auto-retried + as well. + type: boolean + example: true + videoUrl: + description: >- + If a video was recorded for this task, this is the link to the + video. + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4 + videoRemovedAt: + description: > + After your account's data retention period, task videos get removed + and this field will be video removal date and time in the form of a + Unix timestamp. + type: integer + nullable: true + example: 1678795867879 + retriedOriginalTaskId: + description: >- + The ID of the original failed task this task was retrying. For + example, if task A failed and was retried by task B, and task B was + retried by task C, `retriedOriginalTaskId` will point to task A in + both task B and C. + type: string + nullable: true + example: 673da019-bf0c-476e-9c4f-d35252a151dc + retriedByTaskId: + description: > + The ID of the task that retried this task, if this task failed with + an error and was retried. + + + Failed tasks get retried if "Double Check" option is enabled on + robot Settings page. "Double Check" is enabled by default. + type: string + nullable: true + example: null + capturedDataTemporaryUrl: + description: >- + If your task's captured data exceeds 100KB, the data will be only + accessible through this link. There's a 24 hours expiration time for + this link (you need to call this API again to get a new link if it + expires). + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host + capturedTexts: + $ref: '#/components/schemas/CapturedTexts' + capturedScreenshots: + $ref: '#/components/schemas/CapturedScreenshots' + capturedLists: + $ref: '#/components/schemas/CapturedLists' + getRobotTasks-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + required: + - robotTasks + properties: + robotTasks: + type: object + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + description: Total number of tasks this robot has. + type: integer + example: 20 + pageNumber: + description: Current page number. + type: integer + example: 1 + hasMore: + description: Whether there are more tasks on the next page. + type: boolean + example: true + items: + type: array + items: + $ref: '#/components/schemas/RobotTask' + getRobotTasks-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - invalid_from_date + - invalid_to_date + example: invalid_robot_id + NewRobotTaskBodyParams: + type: object + properties: + recordVideo: + description: >- + Try to record a video while running the task. This is not guaranteed + to work as the robot might skip video recording if the site is too + heavy. + type: boolean + example: false + minLength: 1 + maxLength: 200 + required: false + inputParameters: + $ref: '#/components/schemas/InputParameters' + newRobotTask-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/RobotTask' + newRobotTask-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - body_parse_error + - invalid_robot_id + - invalid_input_parameters + example: bad_request + CreditsLimitReachedResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - credits_limit_reached + RobotUnderMaintenanceResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 503 + messageCode: + type: string + enum: + - robot_under_maintenance + getRobotTask-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/RobotTask' + getRobotTask-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + - invalid_task_id + example: bad_request + Schedules: + description: | + Array of schedules. + type: array + deprecated: true + items: + title: Fixed interval schedule + type: object + required: + - type + - everyMinutes + properties: + type: + description: Schedule type + type: string + enum: + - FIXED_INTERVAL + example: FIXED_INTERVAL + everyMinutes: + description: Schedule interval in minutes + type: number + example: 60 + example: + - type: FIXED_INTERVAL + everyMinutes: 60 + Schedule: + description: | + recurring schedule. + type: string + example: FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR + Monitor: + type: object + required: + - id + - name + - status + - pausedReason + - inputParameters + - notifyOnCapturedScreenshotChange + - notifyOnCapturedTextChange + - capturedScreenshotNotificationThreshold + - createdAt + properties: + id: + description: Unique robot monitor ID + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + name: + description: Monitor name + type: string + example: Monitor Products + status: + description: >- + Represents the current state of the monitor. 'active' indicates that + the monitor is currently operational and performing its intended + functions, while 'paused' signifies that the monitor's activities + are temporarily suspended. The 'paused' state may be due to reasons + specified in the 'pausedReason' attribute. + type: string + enum: + - active + - paused + example: active + pausedReason: + description: Specifies the reason why the monitor is in a paused state. + type: string + nullable: true + enum: + - lowCredits + - tooManyFailures + - userRequested + - userInactivity + example: null + inputParameters: + $ref: '#/components/schemas/InputParameters' + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + type: boolean + example: true + notifyOnCapturedTextChange: + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + type: boolean + example: true + capturedScreenshotNotificationThreshold: + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + type: number + example: 15 + createdAt: + description: Monitor creation date and time in the form of a Unix timestamp. + type: integer + example: 1678795867879 + pausedAt: + description: Monitor pause date and time in the form of a Unix timestamp. + type: integer + nullable: true + example: 1678795867879 + updatedAt: + description: Monitor last update date and time in the form of a Unix timestamp. + type: integer + nullable: true + example: 1678795867879 + getMonitors-200: + type: object + required: + - statusCode + - messageCode + - monitors + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitors: + type: object + required: + - totalCount + - items + properties: + totalCount: + description: Total number of monitors this robot has + type: number + example: 10 + items: + description: Array of all monitors + type: array + items: + $ref: '#/components/schemas/Monitor' + getMonitors-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + example: bad_request + CreateNewMonitorRequestBody: + type: object + required: + - name + - inputParameters + - notifyOnCapturedScreenshotChange + - notifyOnCapturedTextChange + - capturedScreenshotNotificationThreshold + properties: + name: + description: Monitor name + type: string + example: Monitor Products + minLength: 1 + maxLength: 200 + inputParameters: + description: An object of input parameters to override default input parameters. + $ref: '#/components/schemas/InputParameters' + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + type: boolean + example: true + notifyOnCapturedTextChange: + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + type: boolean + example: true + capturedScreenshotNotificationThreshold: + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + type: number + example: 15 + createNewMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + CreateOrUpdateMonitorBadRequestResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + - invalid_name + - invalid_status + - invalid_input_parameters + - invalid_notifyOnCapturedScreenshotChange + - invalid_notifyOnCapturedTextChange + - invalid_capturedScreenshotNotificationThreshold + - invalid_schedules + - invalid_schedule + - invalid_monitor_id + example: bad_request + CreateOrUpdateMonitorForbiddenResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - schedule_interval_below_minimum + example: schedule_interval_below_minimum + getMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + getMonitor-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - invalid_monitor_id + example: bad_request + deleteMonitor-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + deleteMonitor-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - invalid_monitor_id + example: invalid_robot_id + MonitorUpdateBodyParams: + type: object + properties: + name: + description: Monitor name + type: string + example: Monitor Products + nullable: true + status: + description: >- + If set to `paused`, the monitor will stop working until an `active` + status is sent. + type: string + enum: + - active + - paused + example: active + nullable: true + inputParameters: + $ref: '#/components/schemas/InputParameters' + nullable: true + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + type: boolean + example: true + nullable: true + notifyOnCapturedTextChange: + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + type: boolean + example: true + nullable: true + capturedScreenshotNotificationThreshold: + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + type: number + example: 15 + nullable: true + updateMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + BulkRun: + type: object + required: + - id + - tasksCount + - robotId + - createdAt + properties: + title: + description: An optional string that describes the bulk run. + type: string + nullable: true + example: Bulk Run Title + minLength: 1 + maxLength: 200 + id: + description: Unique bulk run ID + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + tasksCount: + description: Number of tasks under this bulk run. + type: integer + example: 10 + robotId: + description: Unique robot ID + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + createdAt: + description: Bulk run creation date and time in the form of a Unix timestamp. + type: integer + example: 1678795867879 + BulkRuns: + type: object + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + description: Total number of bulk runs a robot has had. + type: integer + example: 20 + pageNumber: + description: Current page number. + type: integer + example: 1 + hasMore: + description: Whether there are more bulk runs on the next page. + type: boolean + example: true + items: + type: array + items: + $ref: '#/components/schemas/BulkRun' + getBulkRuns-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/BulkRuns' + getBulkRuns-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + ArrayOfUserInputParameters: + description: >- + An array of input parameters to override the task's default input + parameters. + type: array + example: + - originUrl: https://www.ycombinator.com/companies/airbnb + companies_skip: 0 + companies_limit: 10 + - originUrl: https://www.ycombinator.com/companies/coinbase + companies_skip: 0 + companies_limit: 20 + items: + $ref: '#/components/schemas/InputParameters' + BulkRunBodyParams: + type: object + required: + - inputParameters + properties: + title: + description: A string that describes the bulk run. + type: string + example: Bulk Run Title + minLength: 1 + maxLength: 200 + required: false + inputParameters: + $ref: '#/components/schemas/ArrayOfUserInputParameters' + newBulkRun-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + properties: + bulkRun: + $ref: '#/components/schemas/BulkRun' + newBulkRun-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - body_parse_error + - invalid_robot_id + - invalid_input_parameters + - zero_length_parameters + example: bad_request + newBulkRun-403: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - credits_limit_reached + - exceeded_bulk_run_threshold + example: exceeded_bulk_run_threshold + RobotTasks: + description: A paginated list of tasks. + type: object + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + description: Total number of tasks. + type: integer + example: 20 + pageNumber: + description: Current page number. + type: integer + example: 1 + hasMore: + description: Whether there are more tasks on the next page. + type: boolean + example: true + items: + type: array + items: + $ref: '#/components/schemas/RobotTask' + getBulkRun-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + required: + - bulkRun + - robotTasks + properties: + bulkRun: + $ref: '#/components/schemas/BulkRun' + robotTasks: + $ref: '#/components/schemas/RobotTasks' + getBulkRun-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + Webhook: + type: object + required: + - id + - url + - webhookEvent + - createdAt + properties: + id: + description: Unique webhook ID + type: string + example: 6d7f1218-43fb-4735-ac71-21e81b1ab23e + url: + description: Webhook URL + type: string + example: https://example.com/v2/webhooks/callback/events + webhookEvent: + type: string + enum: + - taskCapturedDataChanged + - taskFinished + - taskFinishedSuccessfully + - taskFinishedWithError + - tableExportFinishedSuccessfully + example: taskFinished + createdAt: + description: Monitor creation date and time in the form of a Unix timestamp. + type: integer + example: 1678795867879 + getWebhooks-200: + type: object + required: + - statusCode + - messageCode + - webhooks + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + webhooks: + type: object + required: + - totalCount + - items + properties: + totalCount: + description: Total number of webhooks this robot has + type: number + example: 10 + items: + description: Array of all webhooks + type: array + items: + $ref: '#/components/schemas/Webhook' + getWebhooks-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + example: bad_request + CreateNewWebhookBodyParams: + type: object + required: + - hookUrl + - eventType + properties: + hookUrl: + description: Webhook URL + type: string + example: https://example.com/v2/webhooks/callback/events + eventType: + type: string + enum: + - taskCapturedDataChanged + - taskFinished + - taskFinishedSuccessfully + - taskFinishedWithError + - tableExportFinishedSuccessfully + example: taskFinished + createNewWebhook-200: + type: object + required: + - statusCode + - messageCode + - webhook + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + webhook: + $ref: '#/components/schemas/Webhook' + createNewWebhook-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + - invalid_hookUrl + - invalid_eventType + example: bad_request + deleteWebhook-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + deleteWebhook-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - invalid_webhook_id + - bad_request + example: invalid_robot_id + RobotTaskWebhook: + type: object + required: + - id + - inputParameters + - robotId + - createdAt + - runByAPI + - triedRecordingVideo + - capturedTexts + - capturedScreenshots + - capturedLists + properties: + id: + description: Unique task ID + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + inputParameters: + $ref: '#/components/schemas/InputParameters' + robotId: + description: Unique robot ID + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + status: + description: task status + type: string + enum: + - failed + - successful + - in-progress + example: successful + runByUserId: + description: User ID who ran the robot on the dashboard + type: string + nullable: true + example: null + robotBulkRunId: + description: Robot bulk run ID associated with this task + type: string + nullable: true + example: null + runByTaskMonitorId: + description: Monitor ID that ran this check + type: string + nullable: true + example: null + runByAPI: + description: Whether the robot was ran through the API + type: boolean + example: true + createdAt: + description: Task creation date and time in the form of a Unix timestamp + type: integer + example: 1678795867879 + startedAt: + description: Task start date and time in the form of a Unix timestamp + type: integer + nullable: true + example: 1678795867879 + finishedAt: + description: > + Task finish date and time in the form of a Unix timestamp. + + + If `null`, it means robot is still running and capturing data. + + + Tasks time out with an error if they are not finished within 15 + minutes (or the maximum duration allowed on your plan). + type: integer + nullable: true + example: 1678795867879 + userFriendlyError: + description: If task fails, a user-friendly error will be provided here. + type: string + nullable: true + example: null + triedRecordingVideo: + description: > + Whether the robot tried to record a video while performing this + task. + + + You can change a robot's video recording setting on its Settings + page. + + + Robots try to record a video when a task is failed and auto-retried + as well. + type: boolean + example: true + videoUrl: + description: >- + If a video was recorded for this task, this is the link to the + video. + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4 + videoRemovedAt: + description: > + After your account's data retention period, task videos get removed + and this field will be video removal date and time in the form of a + Unix timestamp. + type: integer + nullable: true + example: 1678795867879 + retriedOriginalTaskId: + description: >- + The ID of the original failed task this task was retrying. For + example, if task A failed and was retried by task B, and task B was + retried by task C, `retriedOriginalTaskId` will point to task A in + both task B and C. + type: string + nullable: true + example: 673da019-bf0c-476e-9c4f-d35252a151dc + retriedByTaskId: + description: > + The ID of the task that retried this task, if this task failed with + an error and was retried. + + + Failed tasks get retried if "Double Check" option is enabled on + robot Settings page. "Double Check" is enabled by default. + type: string + nullable: true + example: null + capturedTexts: + $ref: '#/components/schemas/CapturedTexts' + capturedScreenshots: + $ref: '#/components/schemas/CapturedScreenshots' + capturedLists: + $ref: '#/components/schemas/CapturedLists' + RobotsUpdateCookiesRequest: + type: array + items: + $ref: '#/components/schemas/RobotCookie' +x-tagGroups: + - tags: + - system + - robots + - tasks + - monitors + - webhooks + - bulk runs + name: Core Resources +webhooks: + taskWebhook: + post: + tags: + - webhooks + summary: Task Finished + requestBody: + content: + application/json: + schema: + type: object + required: + - event + - task + properties: + event: + description: The event type that triggered the webhook + type: string + enum: + - task.finishedSuccessfully + - task.finishedWithError + - task.capturedDataChanged + example: task.finishedSuccessfully + task: + $ref: '#/components/schemas/RobotTaskWebhook' + responses: + '200': + description: >- + Your webhook URL is called only once – regardless of the response + status. This behavior may change in the future and we may introduce + automatic retries in cases where the response status is not 200 and + your software is having a downtime. At this time, however, you need + to make sure that the webhook URL is always available and set the + response status code to 200. + content: + application/json: + example: + status: success + tableExportWebhook: + post: + tags: + - webhooks + - Beta + summary: Table Export Finished (Beta) + description: > + This webhook is called when a table export is finished. The exported + file can be a CSV, JSON, or zip file. + + + Your webhook URL is called only once regardless of the response status. + requestBody: + content: + application/json: + schema: + type: object + required: + - exportId + - exportFile + - robotName + - robotId + - exportFinishedAt + - exportCreatedAt + properties: + exportId: + description: The unique ID of the export + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + robotId: + description: The unique ID of the robot + type: string + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + fileTemporaryUrl: + description: The URL of the exported file + type: string + example: https://s3.amazonaws.com/some-bucket/your-export.csv + fileTemporaryUrlExpiresAt: + description: >- + The unix timestamp of when the file URL expires in + milliseconds + type: number + format: timestamp + example: 1678795867879 + exportFinishedAt: + description: >- + The unix timestamp of when the export was finished in + milliseconds + type: number + format: timestamp + example: 1678795867879 + exportCreatedAt: + description: >- + The unix timestamp of when the export was created in + milliseconds + type: number + format: timestamp + example: 1678795867879 + responses: + '200': + content: + application/json: + example: + status: success diff --git a/sdks/db/fixed-specs/chat-kitty-fixed-spec.yaml b/sdks/db/fixed-specs/chat-kitty-fixed-spec.yaml new file mode 100644 index 0000000000..5194439b25 --- /dev/null +++ b/sdks/db/fixed-specs/chat-kitty-fixed-spec.yaml @@ -0,0 +1,15836 @@ +openapi: 3.0.1 +info: + title: ChatKitty Platform API + description: |- + OpenAPI specification (OAS) for the ChatKitty Platform API. + See the Interactive Docs to try ChatKitty API methods without writing code, + and get the complete schema of resources exposed by the API. + version: 2.57.0 + termsOfService: https://chatkitty.com/terms-of-service + contact: + name: Support + url: mailto:support@chatkitty.com + license: + name: MIT + url: https://opensource.org/licenses/MIT + x-konfig-ignore: + object-with-no-properties: true +servers: + - url: https://api.chatkitty.com +tags: + - description: Operations to create, retrieve, update and delete channels + name: channels + x-displayName: Channels + - description: User operations + name: users + x-displayName: Users + - description: Operations to retrieve, update and delete messages + name: messages + x-displayName: Messages + - description: Chat runtime operations + name: runtime + x-displayName: Chat Runtime + - description: Chat function operations + name: functions + x-displayName: Chat Functions + - description: Import user, channel, message data into your ChatKitty application + name: imports + x-displayName: Imports + - description: Message thread operations + name: threads + x-displayName: Threads + - description: Configure and manage your ChatKitty application + name: application + x-displayName: Application + - description: Export analytics data from your ChatKitty application + name: analytics + x-displayName: Analytics + - description: >- + Retrieve information about long running scheduled jobs like imports and + exports + name: jobs + x-displayName: Jobs + - description: Chat session operations + name: chat-sessions + x-displayName: Chat Sessions + - description: Chat function version operations + name: function-versions + x-displayName: Chat Function Versions + - description: User session operations + name: user-sessions + x-displayName: User Sessions +paths: + /v1/analytics/messages: + post: + tags: + - analytics + summary: Export message analytics + operationId: Analytics_exportMessageAnalyticsData + security: + - application_authorization: + - read:message + description: Batch export message analytics data + responses: + '202': + description: Export job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: [] + /v1/analytics/users: + post: + tags: + - analytics + summary: Export user analytics + operationId: Analytics_exportUserAnalyticsData + security: + - application_authorization: + - read:user + description: Batch export user analytics data + responses: + '202': + description: Export job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: [] + /v1/application: + get: + tags: + - application + summary: Retrieve the authenticated application + operationId: Application_getAuthenticated + security: + - application_authorization: + - read:application + description: >- + Returns the ChatKitty application associated with the authentication + credentials used. + + + You must use an **OAuth V2 Bearer token** to access this endpoint. + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl -X 'GET' \ + 'https://api.chatkitty.com/v1/application' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Application.retrieveAuthenticatedApplication() + /v1/application/settings: + get: + tags: + - application + summary: Retrieve the authenticated application settings + operationId: Application_getSettings + security: + - application_authorization: + - read:application + description: Returns the current settings configuring this application + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl -X 'GET' \ + 'https://api.chatkitty.com/v1/application/settings' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: > + // npm install chatkitty-platform-sdk + + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await + chatkitty.Application.retrieveAuthenticatedApplicationSettings() + put: + tags: + - application + summary: Update the authenticated application settings + operationId: Application_updateSettings + security: + - application_authorization: + - update:application + description: Update the settings configuring this application + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl -X 'PUT' \ + 'https://api.chatkitty.com/v1/application/settings' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "guestUsers": "DISABLED", + "userCreatedChannels": "DISABLED" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Application.updateAuthenticatedApplicationSettings({ + guestUsers: 'DISABLED', + userCreatedChannels: 'DISABLED' + }) + /v1/channels: + get: + tags: + - channels + summary: List channels + operationId: Channels_list + security: + - application_authorization: + - read:channel + description: Returns a page of channels belonging to this application + parameters: + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + - description: Filters by channel type + name: type + in: query + required: false + schema: + description: The type of this channel + type: string + enum: + - DIRECT + - PUBLIC + - PRIVATE + - description: Filters by channel members using their usernames + name: members + in: query + required: false + schema: + uniqueItems: true + type: array + items: + type: string + - description: 'Filters for channels created within a time range: start time' + name: startTime + in: query + required: false + schema: + type: string + format: date-time + - description: 'Filters for channels created within a time range: end time' + name: endTime + in: query + required: false + schema: + type: string + format: date-time + - description: Filters by channel custom properties + name: properties + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels?page=0&size=5' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannels() + post: + tags: + - channels + summary: Create a channel + operationId: Channels_createChannel + security: + - application_authorization: + - create:channel + description: Creates a new channel or returns an equivalent existing channel + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "PUBLIC", + "name": "b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.createChannel({ + type: "PUBLIC", + name: "b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7" + }) + /v1/channels/{id}: + get: + tags: + - channels + summary: Retrieve a channel + operationId: Channels_getById + security: + - application_authorization: + - read:channel + description: Returns a channel by ID + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.retrieveChannel(55913) + delete: + tags: + - channels + summary: Delete a channel + operationId: Channels_deleteById + security: + - application_authorization: + - read:channel + - delete:channel + description: Deletes a channel by ID + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.deleteChannel(55913) + patch: + tags: + - channels + summary: Update a channel + operationId: Channels_updateProperties + security: + - application_authorization: + - read:channel + - update:channel + description: Updates a channel properties + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PATCH' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json+merge-patch' \ + -d '{ + "displayName": "A chatty channel" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.updateChannel(55913, { + displayName: "A chatty channel" + }) + /v1/channels/{id}/events: + post: + tags: + - channels + summary: Send a channel event + operationId: Channels_sendEvent + security: + - application_authorization: + - read:channel + - create:channel_event + description: Sends a custom channel event + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelGenericEventResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/events' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "My Custom Event", + "properties": { + "payload": "Boom!", + "stuff": { + "favoriteNumber": 42, + "favoriteMovie": "Lilo and Stitch" + } + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelEvent(55913, { + type: "My Custom Event", + properties: { + payload: "Boom!", + stuff: { + "favoriteNumber": 42, + "favoriteMovie": "Lilo and Stitch" + } + } + }) + /v1/channels/{id}/invites: + get: + tags: + - channels + summary: List channel invites + operationId: Channels_listInvites + security: + - application_authorization: + - read:channel_invite + description: Returns a page of invites sent to join this channel + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/invites?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelInvites(67026) + post: + tags: + - channels + summary: Send a channel invite + operationId: Channels_sendInvite + security: + - application_authorization: + - read:channel + - read:user + - create:channel_invite + description: Sends a channel invite to user + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelInviteResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/67026/invites' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + user: { + "username": "jane@chatkitty.com" + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelInvite(67026, { + user: { + username: "jane@chatkitty.com" + } + }) + /v1/channels/{id}/keystrokes: + post: + tags: + - channels + summary: Send channel keystrokes + operationId: Channels_sendKeystrokes + security: + - application_authorization: + - read:channel + - read:user + - create:keystrokes + description: Sends keystrokes in this channel on behalf of a user + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/CreateDelegatedReplyThreadKeystrokesResource + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: [] + /v1/channels/{id}/members: + get: + tags: + - channels + summary: List a channel's members + operationId: Channels_listMembersPage + security: + - application_authorization: + - read:channel + - read:channel_membership + description: Returns a page of channel members + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/members?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMembers(67026) + post: + tags: + - channels + summary: Add a channel member + operationId: Channels_addMember + security: + - application_authorization: + - read:channel + - read:user + - create:channel_membership + description: Makes a user a group channel member + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserReference' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/members' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "username": "jane@chatkitty.com" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.addChannelMember(55913, { + username: "jane@chatkitty.com" + }) + /v1/channels/{id}/members/{user_id}: + delete: + tags: + - channels + summary: Remove a channel member + operationId: Channels_removeMember + security: + - application_authorization: + - read:channel + - read:user + - delete:channel_membership + description: Removes a member from a group channel + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: User ID of member to be removed + name: user_id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913/members/14503' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.removeChannelMember(55913, 14503) + /v1/channels/{id}/memberships: + get: + tags: + - channels + summary: List channel memberships + operationId: Channels_listMembershipsPage + security: + - application_authorization: + - read:channel + - read:channel_membership + description: Returns a page of channel membership info for this channel + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/memberships?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMemberships(702) + /v1/channels/{id}/messages: + get: + tags: + - channels + summary: List channel messages + operationId: Channels_listMessagesPage + security: + - application_authorization: + - read:channel + - read:message + description: Returns a page of messages sent in this channel + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + type: integer + format: int32 + - description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + name: start + in: query + required: false + schema: + type: integer + format: int64 + - description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + name: next + in: query + required: false + schema: + type: integer + format: int64 + - description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + name: relation + in: query + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - name: username + in: query + required: false + schema: + type: string + - name: query + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMessages(702) + post: + tags: + - channels + summary: Send a channel message + operationId: Channels_sendChannelMessage + security: + - application_authorization: + - read:channel + - read:user + - create:message + description: Sends a message in this channel as the system or on behalf of a user + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateMessageResource' + multipart/form-data: + schema: + $ref: '#/components/schemas/ChannelsSendChannelMessageRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/702/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "TEXT", + "body": "🌞" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelMessage(702, { + "type": "TEXT", + "body": "🌞" + }) + /v1/channels/{id}/moderators: + get: + tags: + - channels + summary: Lists a channel's moderators + operationId: Channels_listModeratorsPage + security: + - application_authorization: + - read:channel + - read:channel_moderator + description: Returns a page of channel moderators + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/moderators?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelModerators(67026) + post: + tags: + - channels + summary: Add a channel moderator + operationId: Channels_addModerator + security: + - application_authorization: + - read:channel + - read:user + - read:channel_membership + - create:channel_moderator + description: Makes a user a group channel moderator + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserReference' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/moderators' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "username": "jane@chatkitty.com" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.addChannelModerator(55913, { + username: "jane@chatkitty.com" + }) + /v1/channels/{id}/moderators/{user_id}: + delete: + tags: + - channels + summary: Remove a channel moderator + operationId: Channels_removeModerator + security: + - application_authorization: + - read:channel + - read:user + - delete:channel_moderator + description: Removes a moderator from a group channel + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: User ID of moderator to be removed + name: user_id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913/moderators/14503' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.removeChannelModerator(55913, 14503) + /v1/channels/{id}/participants: + get: + tags: + - channels + summary: List channel participants + operationId: Channels_listParticipantsPage + security: + - application_authorization: + - read:channel + - read:chat_session + description: >- + Returns a page of channel active participants: members that currently + online + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/participants?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelParticipants(702) + /v1/channels/{id}/reported-messages: + get: + tags: + - channels + summary: List channel reported messages + operationId: Channels_listReportedMessagesPage + security: + - application_authorization: + - read:channel + - read:message_report + description: Returns a page of reported messages in this channel + parameters: + - description: Channel ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: [] + /v1/chat-sessions: + get: + tags: + - chat-sessions + summary: List chat sessions + operationId: Chatsessions_listPage + security: + - application_authorization: + - read:chat_session + description: Returns a page of chat sessions belonging to this application + parameters: + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + - description: Filters by state + name: state + in: query + required: false + schema: + type: string + enum: + - ACTIVE + - ENDED + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: [] + /v1/function-versions/{id}: + get: + tags: + - function-versions + summary: Retrieve a chat function version + operationId: Functionversions_getById + security: + - application_authorization: + - read:function_version + description: Returns a chat function version by ID + parameters: + - description: Chat function version ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/function-versions/13515' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.FunctionVersions.retrieveFunctionVersion(13515) + /v1/functions/{id}: + get: + tags: + - functions + summary: Retrieve a chat function + operationId: Functions_getById + security: + - application_authorization: + - read:function + description: Returns a chat function by ID + parameters: + - description: Chat function ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.retrieveFunction(1) + + + /v1/functions/{id}/current-version: + get: + tags: + - functions + summary: Retrieve chat function current version + operationId: Functions_getCurrentVersion + security: + - application_authorization: + - read:function + - read:function_version + description: Returns the version of this chat function currently deployed + parameters: + - description: Chat function ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/13515/current-version' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.retrieveFunctionCurrentVersion(13515) + + + /v1/functions/{id}/invocations: + get: + tags: + - functions + summary: List chat function invocations + operationId: Functions_listInvocationsPage + security: + - application_authorization: + - read:function + - read:function_invocation + description: >- + Returns a page of invocations of this chat function. A log of previous + runs of the function + parameters: + - description: Chat function ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1/invocations?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.listFunctionInvocations(1) + /v1/functions/{id}/versions: + get: + tags: + - functions + summary: List chat function versions + operationId: Functions_listVersionsPage + security: + - application_authorization: + - read:function + - read:function_version + description: Returns a page of versions of this chat function + parameters: + - description: Chat function ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1/versions?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Functions.listFunctionVersions(1) + + post: + tags: + - functions + summary: Create a chat function version + operationId: Functions_createFunctionVersion + security: + - application_authorization: + - read:function + - create:function_version + description: Creates a new version of this chat function + parameters: + - description: Chat function ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChatFunctionVersionResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/functions/1/versions' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "handlerScript": "const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('\''Hello '\'' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n '\''name'\'': email,\n '\''displayName'\'': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { '\''id'\'': user.data.id });\n });\n\n return logs;\n}" + } + + ' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Functions.createFunctionVersion(13515,{ + "handlerScript": "const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello ' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}" + }) + /v1/imports/channels: + post: + tags: + - imports + summary: Import channels + operationId: Imports_batchChannels + security: + - application_authorization: + - create:channel + description: Batch imports channels from a JSON array file + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ImportsBatchChannelsRequest' + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + externalDocs: + description: >- + Learn more about importing channels and the channel import JSON array + file format + url: https://chatkitty.com/docs/concepts/imports#importing-channels + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/channels' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@channels_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["jane@chatkitty.com","john@chatkitty.com"]}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importChannels(file) + /v1/imports/channels/{id}/members: + post: + tags: + - imports + summary: Import channel members + operationId: Imports_channelMembersBatch + security: + - application_authorization: + - create:channel_membership + description: Batch imports channel members from a JSON array file + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ImportsChannelMembersBatchRequest' + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + externalDocs: + description: >- + Learn more about importing channel members and the channel member + import JSON array file format + url: https://chatkitty.com/docs/concepts/imports#importing-channel-members + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/channels/1/members' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@members_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["b2a6da08-88bf-4778-b993-7234e6d8a3ff","c6f75947-af48-4893-a78e-0e0b9bd68580"]}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importChannelMembers(1, [{ + idempotencyKey: "123", + username: "string" + }]) + /v1/imports/messages: + post: + tags: + - imports + summary: Import messages + operationId: Imports_batchMessagesFromJson + security: + - application_authorization: + - create:message + description: Batch imports messages from a JSON array file + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ImportsBatchMessagesFromJsonRequest' + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + externalDocs: + description: >- + Learn more about importing messages and the message import JSON array + file format + url: https://chatkitty.com/docs/concepts/imports#importing-messages + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@messages_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"type":"TEXT","body":"Hello, World!"}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importMessages(file) + /v1/imports/users: + post: + tags: + - imports + summary: Import users + operationId: Imports_jsonUsersBatch + security: + - application_authorization: + - create:user + description: Batch imports users from a JSON array file + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/ImportsJsonUsersBatchRequest' + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + externalDocs: + description: >- + Learn more about importing users and the user import JSON array file + format + url: https://chatkitty.com/docs/concepts/imports#importing-users + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/users' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@users_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{name:"jane@chatkitty.com",displayName:"JaneDoe",isGuest:false,properties:{favoriteNumber:42}}]'], + "import.json", + { + type: "application/json" + }) + + + await chatkitty.Imports.importUsers(file) + /v1/jobs: + get: + tags: + - jobs + summary: List jobs + operationId: Jobs_listJobsPage + security: + - application_authorization: + - read:job + description: Returns a page of jobs created for this application + parameters: + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + - description: Filters for jobs currently running + name: running + in: query + required: false + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/jobs' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Jobs.listJobs() + /v1/jobs/{id}: + get: + tags: + - jobs + summary: Retrieve a job + operationId: Jobs_getJobById + security: + - application_authorization: + - read:job + description: Returns a job by ID + parameters: + - description: Job ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/jobs/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Jobs.retrieveJob(1) + /v1/messages: + get: + tags: + - messages + summary: List messages + operationId: Messages_listPage + security: + - application_authorization: + - read:message + description: Returns a page of messages belonging to this application + parameters: + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + type: integer + format: int32 + - description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + name: start + in: query + required: false + schema: + type: integer + format: int64 + - description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + name: next + in: query + required: false + schema: + type: integer + format: int64 + - description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + name: relation + in: query + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - description: Filters messages by a sender's username + name: username + in: query + required: false + schema: + type: string + - description: Filters text messages by text contained in the message body + name: query + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.listMessages() + delete: + tags: + - messages + summary: Delete messages + operationId: Messages_deleteAll + security: + - application_authorization: + - read:message + - delete:message + description: Deletes all messages belonging to this application + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.deleteMessages() + /v1/messages/{id}: + get: + tags: + - messages + summary: Retrieve a message + operationId: Messages_getById + security: + - application_authorization: + - read:message + description: Returns a message by ID + parameters: + - description: Message ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages/44902' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.retrieveMessage(44902) + delete: + tags: + - messages + summary: Delete a message + operationId: Messages_removeById + security: + - application_authorization: + - read:message + - delete:message + description: Deletes a message by ID + parameters: + - description: Message ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/messages/67528' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.deleteMessage(67528) + + patch: + tags: + - messages + summary: Update a message + operationId: Messages_updateProperties + security: + - application_authorization: + - read:message + - update:message + description: Updates a message properties + parameters: + - description: Message ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: [] + /v1/messages/{id}/read-receipts: + get: + tags: + - messages + summary: List message read receipts + operationId: Messages_listReadReceipts + security: + - application_authorization: + - read:message + - read:read_receipt + description: Returns a page of read receipts for this message + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages/1/read-receipts?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.listMessageReadReceipts(1) + + /v1/runtimes/nodejs: + get: + tags: + - runtime + summary: Retrieve NodeJS chat runtime + operationId: Runtime_getNodejsChatRuntime + security: + - application_authorization: + - read:runtime + - update:runtime + description: Return this application's NodeJS chat runtime + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.retrieveNodejsRuntime() + + /v1/runtimes/nodejs/dependencies: + put: + tags: + - runtime + summary: Update NodeJS chat runtime NPM dependencies + operationId: Runtime_updateNodejsChatDependencies + security: + - application_authorization: + - read:runtime + - update:runtime + description: Updates the NPM dependencies for this application's NodeJS chat runtime + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/RuntimeUpdateNodejsChatDependenciesRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/dependencies' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '[ + { + "name": "firebase", + "version": "^9.8.2" + } + ]' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeDependencies([ + { + "name": "firebase", + "version": "^9.8.2" + } + ]) + /v1/runtimes/nodejs/environment-variables: + put: + tags: + - runtime + summary: Update NodeJS chat runtime environment variables + operationId: Runtime_updateNodejsChatEnvironmentVariables + security: + - application_authorization: + - read:runtime + - update:runtime + description: >- + Updates the runtime environment variables of this application's NodeJS + chat runtime + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeEnvironmentVariablesProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/environment-variables' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "CUSTOM_ENV_AWS_REGION": "us-east-1" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeEnvironmentVariables({ + "CUSTOM_ENV_AWS_REGION": "us-east-1" + }) + /v1/runtimes/nodejs/functions: + get: + tags: + - runtime + summary: List NodeJS chat runtime functions + operationId: Runtime_listNodejsChatFunctions + security: + - application_authorization: + - read:runtime + - read:function + description: Returns a page of functions for this application's NodeJS chat runtime + parameters: + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/functions?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.listNodejsRuntimeFunctions() + + post: + tags: + - runtime + summary: Create a NodeJS chat runtime function + operationId: Runtime_createNodejsChatFunction + security: + - application_authorization: + - read:runtime + - read:function + description: Creates a NodeJS chat function for this runtime + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChatFunctionResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/functions' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "user.attempted.start_session", + "name": "User Attempted Start Session" + }' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Runtime.createNodejsRuntimeFunction({ + "type": "user.attempted.start_session", + "name": "User Attempted Start Session" + }) + + /v1/runtimes/nodejs/initialization-script: + put: + tags: + - runtime + summary: Update NodeJS chat runtime initialization script + operationId: Runtime_updateNodejsChatInitializationScript + security: + - application_authorization: + - read:runtime + - update:runtime + description: >- + Updates the initialization script for this application's NodeJS chat + runtime + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/initialization-script' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "script": "import firebase from '\''firebase'\'';\r\nimport '\''@firebase/auth'\'';\r\nimport '\''@firebase/firestore'\'';\r\n\r\nconst firebaseConfig = {\r\n apiKey: '\''AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY'\'',\r\n authDomain: '\''chatkitty-example.firebaseapp.com'\'',\r\n databaseURL: '\''https://chatkitty-example.firebaseio.com'\'',\r\n projectId: '\''chatkitty-example'\'',\r\n storageBucket: '\''chatkitty-example.appspot.com'\'',\r\n messagingSenderId: '\''540634290949'\'',\r\n appId: '\''1:540634290949:web:cd754ff7e98087230ff56c'\'',\r\n measurementId: '\''G-BB7Q5DRQK6'\'',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeInitializationScript({ + "script": "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + }) + /v1/threads/{id}: + get: + tags: + - threads + summary: Retrieve a thread + operationId: Threads_getById + security: + - application_authorization: + - read:thread + description: Returns a thread by ID + parameters: + - description: Reply thread ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/threads/67528' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.retrieveThread(67528) + + /v1/threads/{id}/keystrokes: + post: + tags: + - threads + summary: Send thread keystrokes + operationId: Threads_sendKeystrokes + security: + - application_authorization: + - read:thread + - read:user + - create:keystrokes + description: Sends keystrokes in this thread on behalf of a user + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/CreateDelegatedReplyThreadKeystrokesResource + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: [] + /v1/threads/{id}/messages: + get: + tags: + - threads + summary: List reply thread messages + operationId: Threads_listThreadMessages + security: + - application_authorization: + - read:thread + - read:message + description: Returns a page of replies sent in this thread + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + type: integer + format: int32 + - description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + name: start + in: query + required: false + schema: + type: integer + format: int64 + - description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + name: next + in: query + required: false + schema: + type: integer + format: int64 + - description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + name: relation + in: query + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/threads/1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.listThreadMessages(1) + post: + tags: + - threads + summary: Send a reply thread message + operationId: Threads_sendReplyMessage + security: + - application_authorization: + - read:thread + - read:user + - create:message + description: >- + Sends a reply message in this thread as the system or on behalf of a + user + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateMessageResource' + multipart/form-data: + schema: + $ref: '#/components/schemas/ThreadsSendReplyMessageRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/threads/44902/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "TEXT", + "body": "🌞", + + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.sendThreadMessage(44902, { + "type": "TEXT", + "body": "🌞", + + }) + /v1/user-sessions: + get: + tags: + - user-sessions + summary: List user sessions + operationId: Usersessions_listUserSessions + security: + - application_authorization: + - read:user_session + description: Returns a page of user sessions belonging to this application + parameters: + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + - description: Filters by state + name: state + in: query + required: false + schema: + type: string + enum: + - ACTIVE + - ENDED + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: [] + /v1/users: + get: + tags: + - users + summary: List users + operationId: Users_getPage + security: + - application_authorization: + - read:user + description: Returns a page of users belonging to this application + parameters: + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + - description: Filters by username + name: name + in: query + required: false + schema: + type: string + - description: Filters by user custom properties + name: properties + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUsers() + post: + tags: + - users + summary: Create a user + operationId: Users_createUser + security: + - application_authorization: + - create:user + description: Creates a new user + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreatePersonChatUserResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/users' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "name": "jane@chatkitty.com", + "displayName": "Jane Doe", + "isGuest": false, + "properties": { + "favoriteNumber": 42 + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.createUser({ + "name": "jane@chatkitty.com", + "displayName": "Jane Doe", + "isGuest": false, + "properties": { + "favoriteNumber": 42 + } + }) + head: + tags: + - users + summary: Check a user exists + operationId: Users_checkExists + security: + - application_authorization: + - read:user + description: Checks if a user exists + parameters: + - description: Username of the user + name: name + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UsersCheckExistsResponse' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/UsersCheckExists200Response' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/UsersCheckExists200Response' + application/hal+json: + schema: + $ref: '#/components/schemas/UsersCheckExists200Response' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: User does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'HEAD' \ + 'https://api.chatkitty.com/v1/users?name=Jane%20Doe' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.checkUserExists("Jane Doe") + /v1/users/{id}: + get: + tags: + - users + summary: Retrieve a user + operationId: Users_getById + security: + - application_authorization: + - read:user + description: Returns a user by ID + parameters: + - description: User ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.retrieveUser(1) + delete: + tags: + - users + summary: Delete a user + operationId: Users_removeUser + security: + - application_authorization: + - read:user + - delete:user + description: Delets a user + parameters: + - description: User ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.deleteUser(1) + patch: + tags: + - users + summary: Update a user + operationId: Users_updateUserById + security: + - application_authorization: + - read:user + - update:user + description: Updates a user + parameters: + - description: User ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PATCH' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json+merge-patch' \ + -d '{ + "displayName": "Jane Doe" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.updateUser(1) + /v1/users/{id}/channels: + get: + tags: + - users + summary: List a user's channels + operationId: Users_listChannelsPage + security: + - application_authorization: + - read:user + - read:channels + description: Returns a page of channels for this user created or joined + parameters: + - description: User ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: Zero-based page index (0..N) + name: page + in: query + required: false + schema: + minimum: 0 + type: integer + default: 0 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + minimum: 1 + type: integer + default: 25 + - description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + name: sort + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/channels?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserChannels(1) + /v1/users/{id}/display-picture: + post: + tags: + - users + summary: Update a user's display picture + operationId: Users_updateDisplayPicture + security: + - application_authorization: + - read:user + - update:user + description: Updates a user's display picture + parameters: + - description: User ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateExternalFileProperties' + multipart/form-data: + schema: + $ref: '#/components/schemas/UsersUpdateDisplayPictureRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/users/1/display-picture' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "url": "https://example.com/files/jane.png", + "name": "jane.png", + "contentType": "image/png", + "size": 32768 + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.updateUserDisplayPicture(1, { + "url": "https://example.com/files/jane.png", + "name": "jane.png", + "contentType": "image/png", + "size": 32768 + }) + /v1/users/{id}/messages: + get: + tags: + - users + summary: List a user's messages + operationId: Users_listMessagesPage + security: + - application_authorization: + - read:user + - read:channels + description: Returns a page of messages sent by this user + parameters: + - description: User ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + type: integer + format: int32 + - description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + name: start + in: query + required: false + schema: + type: integer + format: int64 + - description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + name: next + in: query + required: false + schema: + type: integer + format: int64 + - description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + name: relation + in: query + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - description: Filters by returning unread messages + name: unread + in: query + required: false + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserMessages(1) + /v1/users/{id}/notifications: + get: + tags: + - users + summary: List a user's notifications + operationId: Users_listNotificationsPage + security: + - application_authorization: + - read:user + - read:notifications + description: Returns a page of notifications received by this user + parameters: + - description: User ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: The size of the page to be returned + name: size + in: query + required: false + schema: + type: integer + format: int32 + - description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + name: start + in: query + required: false + schema: + type: integer + format: int64 + - description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + name: next + in: query + required: false + schema: + type: integer + format: int64 + - description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + name: relation + in: query + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/notifications' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserNotifications(1) + /v1/users/{id}/secrets/{name}: + get: + tags: + - users + summary: Retrieve a user secret + operationId: Users_getSecret + security: + - application_authorization: + - read:user_secret + description: Returns a user secret + parameters: + - description: User ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: The secret's name + name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SecretResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/SecretResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/SecretResource' + application/hal+json: + schema: + $ref: '#/components/schemas/SecretResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Secret%20Name' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.retrieveUserSecret(1,"Secret Name") + put: + tags: + - users + summary: Set a user secret + operationId: Users_setUserSecret + security: + - application_authorization: + - read:user + - update:user_secret + description: Sets a user secret's value + parameters: + - description: User ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: The secret's name + name: name + in: path + required: true + schema: + type: string + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/SecretResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Jane%20Doe' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "secret": "My secret is... well, I'\''d never tell." + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.setUserSecret(1, "Jane Doe", { + "secret": "My secret is... well, I'd never tell." + }) + delete: + tags: + - users + summary: Remove a user secret + operationId: Users_removeSecretValue + security: + - application_authorization: + - read:user + - delete:user_secret + description: Removes a user secret's value + parameters: + - description: User ID + name: id + in: path + required: true + schema: + type: integer + format: int64 + - description: The secret's name + name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Secret%20Name' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.removeUserSecret(1,"Secret Name") +components: + schemas: + AuthenticationError: + required: + - error + - error_description + type: object + properties: + error: + type: string + error_description: + type: string + ApiError: + required: + - error + - message + - timestamp + type: object + properties: + error: + type: string + explanation: + type: string + message: + type: string + properties: + type: object + additionalProperties: + type: object + writeOnly: true + timestamp: + type: string + SecretResource: + type: object + properties: + secret: + description: Secret value + type: object + example: + secret: My secret is... well, I'd never tell. + ChatUserPresenceProperties: + description: Presence status of this user + required: + - online + - status + type: object + properties: + online: + description: True if this user has an active user session + type: boolean + status: + description: The availability status of this user + type: string + ChatUserProperties: + required: + - display_name + - display_picture_url + - id + - isGuest + - name + - presence + - properties + - type + type: object + properties: + type: + description: Type of user + type: string + enum: + - PERSON + - BOT + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + call_status: + description: Call presence status of this user + type: string + enum: + - AVAILABLE + - IN_CALL + display_name: + description: Human readable name of this user. Shown to other users + type: string + display_picture_url: + description: URL for this user's display picture + type: string + isGuest: + description: True if this user was created by a guest user session + type: boolean + name: + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + type: string + presence: + $ref: '#/components/schemas/ChatUserPresenceProperties' + properties: + description: Custom data associated with this user + type: object + additionalProperties: + description: Custom data associated with this user + type: object + ChatUserResource: + required: + - display_name + - display_picture_url + - id + - isGuest + - name + - presence + - properties + - type + type: object + properties: + type: + description: Type of user + type: string + enum: + - PERSON + - BOT + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + call_status: + description: Call presence status of this user + type: string + enum: + - AVAILABLE + - IN_CALL + display_name: + description: Human readable name of this user. Shown to other users + type: string + display_picture_url: + description: URL for this user's display picture + type: string + isGuest: + description: True if this user was created by a guest user session + type: boolean + name: + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + type: string + presence: + $ref: '#/components/schemas/ChatUserPresenceProperties' + properties: + description: Custom data associated with this user + type: object + additionalProperties: + description: Custom data associated with this user + type: object + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/1 + channels: + href: https://api.chatkitty.com/v1/applications/1/users/1/channels + notifications: + href: https://api.chatkitty.com/v1/applications/1/users/1/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/1/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + Link: + type: object + properties: + title: + type: string + href: + type: string + hreflang: + type: string + type: + type: string + deprecation: + type: string + profile: + type: string + name: + type: string + templated: + type: boolean + ChatRuntimeScriptProperties: + required: + - script + type: object + properties: + script: + description: The JavaScript/TypeScript source of this script + type: string + example: + script: "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + ChatRuntimeDependencyProperties: + description: The NPM dependencies version of this runtime + required: + - default_dependency + - name + - version + type: object + properties: + version: + description: The version of the NPM package + type: string + default_dependency: + description: >- + True if this NPM package is automatically installed by ChatKitty and + available by default in your chat functions + type: boolean + name: + description: The name of the dependency NPM package + type: string + example: + version: ^9.8.2 + name: firebase + ChatRuntimeEnvironmentVariablesProperties: + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this runtime + type: object + additionalProperties: + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this runtime + type: string + example: + CUSTOM_ENV_AWS_REGION: us-east-1 + ChatRuntimeProperties: + required: + - dependencies + - environment_variables + - id + - type + - version + type: object + properties: + version: + description: The semantic version of this runtime + type: string + type: + description: The type of this runtime. Always NODEJS + type: string + enum: + - NODEJS + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + dependencies: + description: The NPM dependencies version of this runtime + type: array + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + environment_variables: + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + type: object + additionalProperties: + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + type: string + initialization_script: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + example: + version: v0.0.29 + id: 1 + type: NODEJS + dependencies: + - version: ^0.19.2 + name: axios + defaultDependency: true + - version: ^0.2.0 + name: axios-token-interceptor + defaultDependency: true + - version: 1.0.1 + name: chatkitty-platform-sdk + defaultDependency: true + - version: 6.9.4 + name: qs + defaultDependency: true + - version: ^9.8.2 + name: firebase + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + ChatRuntimeResource: + required: + - dependencies + - environment_variables + - id + - type + - version + type: object + properties: + version: + description: The semantic version of this runtime + type: string + type: + description: The type of this runtime. Always NODEJS + type: string + enum: + - NODEJS + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + dependencies: + description: The NPM dependencies version of this runtime + type: array + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + environment_variables: + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + type: object + additionalProperties: + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + type: string + initialization_script: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + version: v0.0.29 + id: 1 + type: NODEJS + dependencies: + - version: ^0.19.2 + name: axios + defaultDependency: true + - version: ^0.2.0 + name: axios-token-interceptor + defaultDependency: true + - version: 1.0.1 + name: chatkitty-platform-sdk + defaultDependency: true + - version: 6.9.4 + name: qs + defaultDependency: true + - version: ^9.8.2 + name: firebase + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/runtimes/nodejs + dependencies: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/dependencies + initializationScript: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/initialization-script + functions: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationSettingsProperties: + required: + - guest_users + - user_created_channels + type: object + properties: + guest_users: + description: Toggle state of this settings option + type: string + enum: + - DISABLED + - ENABLED + user_created_channels: + description: Toggle state of this settings option + type: string + enum: + - DISABLED + - ENABLED + ApplicationSettingsResource: + required: + - guest_users + - user_created_channels + type: object + properties: + guest_users: + description: Toggle state of this settings option + type: string + enum: + - DISABLED + - ENABLED + user_created_channels: + description: Toggle state of this settings option + type: string + enum: + - DISABLED + - ENABLED + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + features: + guest_users: ENABLED + user_created_channels: DISABLED + CreateExternalFileProperties: + required: + - content_type + - name + - size + - url + type: object + properties: + content_type: + description: File MIME content type + type: string + name: + description: File name + type: string + size: + description: File size in bytes + type: integer + format: int64 + url: + description: External file URL + type: string + example: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreatePersonChatUserResource: + required: + - display_name + - is_guest + - name + type: object + properties: + display_name: + description: Human readable name of this user. Shown to other users + type: string + is_guest: + description: True if this user was created by a guest user session + type: boolean + name: + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + type: string + properties: + description: Custom data associated with this user + type: object + additionalProperties: + description: Custom data associated with this user + type: object + example: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMessageMentionProperties: + description: A channel mention + required: + - channel + - end_position + - start_position + - tag + - type + type: object + allOf: + - $ref: '#/components/schemas/MessageMentionProperties' + - type: object + properties: + channel: + $ref: '#/components/schemas/MessageMentionChannelProperties' + ChatUserMessageMentionProperties: + description: A user mention + required: + - end_position + - start_position + - tag + - type + - user + type: object + allOf: + - $ref: '#/components/schemas/MessageMentionProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + EmojiProperties: + description: The emoji these users reacted with + required: + - aliases + - character + - description + - tags + type: object + properties: + tags: + description: Tags used to describe this emoji + uniqueItems: true + type: array + items: + description: Tags used to describe this emoji + type: string + description: + description: Description of this emoji + type: string + aliases: + description: List of possible aliases for this emoji + uniqueItems: true + type: array + items: + description: List of possible aliases for this emoji + type: string + character: + description: The unicode character of this emoji + type: string + FileChatUserMessageProperties: + description: A file message sent by or behalf of a user + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + - user + type: object + allOf: + - $ref: '#/components/schemas/FileMessageProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + - $ref: '#/components/schemas/MessageProperties' + FileChatUserMessageResource: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + - user + type: object + properties: + type: + description: The type of this message + type: string + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + channel_id: + description: The ID of the channel this message belongs to + type: integer + format: int64 + created_time: + description: The time this message was created + type: string + format: date-time + file: + $ref: '#/components/schemas/FileProperties' + group_tag: + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + type: string + last_edited_time: + description: The time this message was last edited + type: string + format: date-time + nested_level: + description: The nested thread level of this message + type: integer + format: int32 + properties: + description: Custom data associated with this message + type: object + additionalProperties: + description: Custom data associated with this message + type: object + reactions: + description: Reactions to this message + type: array + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + description: The number of replies to this message + type: integer + format: int64 + report_count: + description: The number of times this message has been reported + type: integer + format: int64 + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 44904 + type: FILE + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44904 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + FileMessageProperties: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + allOf: + - $ref: '#/components/schemas/MessageProperties' + - type: object + properties: + file: + $ref: '#/components/schemas/FileProperties' + FileProperties: + description: The file data of this message + required: + - content_type + - name + - size + - type + - url + type: object + properties: + type: + description: The type of this file. Either external or hosted by ChatKitty + type: string + enum: + - HOSTED + - EXTERNAL + content_type: + description: The mime type of this file + type: string + name: + description: The file name + type: string + size: + description: The size of this file in bytes + type: integer + format: int64 + url: + description: The file URL + type: string + FileSystemMessageProperties: + description: >- + A file message sent by this application itself. Used for systems + announcements independent of any user + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + allOf: + - $ref: '#/components/schemas/FileMessageProperties' + - $ref: '#/components/schemas/MessageProperties' + FileSystemMessageResource: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + properties: + type: + description: The type of this message + type: string + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + channel_id: + description: The ID of the channel this message belongs to + type: integer + format: int64 + created_time: + description: The time this message was created + type: string + format: date-time + file: + $ref: '#/components/schemas/FileProperties' + group_tag: + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + type: string + last_edited_time: + description: The time this message was last edited + type: string + format: date-time + nested_level: + description: The nested thread level of this message + type: integer + format: int32 + properties: + description: Custom data associated with this message + type: object + additionalProperties: + description: Custom data associated with this message + type: object + reactions: + description: Reactions to this message + type: array + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + description: The number of replies to this message + type: integer + format: int64 + report_count: + description: The number of times this message has been reported + type: integer + format: int64 + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 44905 + type: SYSTEM_FILE + channelId: 702 + file: + url: https://example.com/files/my-application-file.png + name: file.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44905 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + MessageLinkPreviewImageProperties: + description: Image data of this link preview + required: + - source + type: object + properties: + source: + description: The url source of this image + type: string + MessageLinkPreviewProperties: + description: Embedded link preview data + required: + - image + - title + - url + type: object + properties: + title: + description: The title of this link + type: string + description: + description: Description of this link preview + type: string + image: + $ref: '#/components/schemas/MessageLinkPreviewImageProperties' + site_name: + description: The name of the site linked + type: string + url: + description: The URL of the link being previewed + type: string + MessageLinkProperties: + description: Link previews in this message + required: + - end_position + - source + - start_position + type: object + properties: + end_position: + description: The ending index of this link within the message + type: integer + format: int32 + preview: + $ref: '#/components/schemas/MessageLinkPreviewProperties' + source: + description: The href of the URL this message link represents + type: string + start_position: + description: The starting index of this link within the message + type: integer + format: int32 + MessageMentionChannelProperties: + description: Channel properties embedded in channel mentions + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + description: The type of this channel + type: string + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: The ISO date-time this channel was created + type: string + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + description: >- + Human readable name of this channel shown to users. Present if this + is a group channel + type: string + name: + description: >- + The unique name of this channel used to reference the channel. + Present if this is a group channel + type: string + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + MessageMentionProperties: + description: Mentions in this message + required: + - end_position + - start_position + - tag + - type + type: object + properties: + type: + description: The type of this message mention + type: string + enum: + - CHANNEL + - USER + end_position: + description: The ending position of this mention reference inside its message + type: integer + format: int32 + start_position: + description: The starting position of this mention reference inside its message + type: integer + format: int32 + tag: + description: The literal text referencing the mentioned entity inside the message + type: string + discriminator: + propertyName: type + mapping: + CHANNEL: '#/components/schemas/ChannelMessageMentionProperties' + USER: '#/components/schemas/ChatUserMessageMentionProperties' + MessageProperties: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + description: The type of this message + type: string + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + channel_id: + description: The ID of the channel this message belongs to + type: integer + format: int64 + created_time: + description: The time this message was created + type: string + format: date-time + group_tag: + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + type: string + last_edited_time: + description: The time this message was last edited + type: string + format: date-time + nested_level: + description: The nested thread level of this message + type: integer + format: int32 + properties: + description: Custom data associated with this message + type: object + additionalProperties: + description: Custom data associated with this message + type: object + reactions: + description: Reactions to this message + type: array + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + description: The number of replies to this message + type: integer + format: int64 + report_count: + description: The number of times this message has been reported + type: integer + format: int64 + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageProperties' + FILE: '#/components/schemas/FileChatUserMessageProperties' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageProperties' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageProperties' + MessageReactionsSummaryProperties: + description: Reactions to this message + required: + - count + - emoji + - users + type: object + properties: + count: + description: The number of users that reacted with this emoji + type: integer + format: int64 + emoji: + $ref: '#/components/schemas/EmojiProperties' + users: + description: The users that reacted with this emoji + type: array + items: + $ref: '#/components/schemas/ChatUserProperties' + MessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + description: The type of this message + type: string + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + channel_id: + description: The ID of the channel this message belongs to + type: integer + format: int64 + created_time: + description: The time this message was created + type: string + format: date-time + group_tag: + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + type: string + last_edited_time: + description: The time this message was last edited + type: string + format: date-time + nested_level: + description: The nested thread level of this message + type: integer + format: int32 + properties: + description: Custom data associated with this message + type: object + additionalProperties: + description: Custom data associated with this message + type: object + reactions: + description: Reactions to this message + type: array + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + description: The number of replies to this message + type: integer + format: int64 + report_count: + description: The number of times this message has been reported + type: integer + format: int64 + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + FILE: '#/components/schemas/FileChatUserMessageResource' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/FileChatUserMessageResource' + - $ref: '#/components/schemas/TextSystemMessageResource' + - $ref: '#/components/schemas/FileSystemMessageResource' + TextChatUserMessageProperties: + description: A text message sent by or behalf of a user + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + - user + type: object + allOf: + - $ref: '#/components/schemas/TextMessageProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + - $ref: '#/components/schemas/MessageProperties' + TextChatUserMessageResource: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + - user + type: object + properties: + type: + description: The type of this message + type: string + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + body: + description: The text body of this message + type: string + channel_id: + description: The ID of the channel this message belongs to + type: integer + format: int64 + created_time: + description: The time this message was created + type: string + format: date-time + group_tag: + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + type: string + last_edited_time: + description: The time this message was last edited + type: string + format: date-time + links: + description: Link previews in this message + type: array + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + description: Mentions in this message + type: array + items: + $ref: '#/components/schemas/MessageMentionProperties' + nested_level: + description: The nested thread level of this message + type: integer + format: int32 + properties: + description: Custom data associated with this message + type: object + additionalProperties: + description: Custom data associated with this message + type: object + reactions: + description: Reactions to this message + type: array + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + description: The number of replies to this message + type: integer + format: int64 + report_count: + description: The number of times this message has been reported + type: integer + format: int64 + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextMessageProperties: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + allOf: + - $ref: '#/components/schemas/MessageProperties' + - type: object + properties: + body: + description: The text body of this message + type: string + links: + description: Link previews in this message + type: array + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + description: Mentions in this message + type: array + items: + $ref: '#/components/schemas/MessageMentionProperties' + TextSystemMessageProperties: + description: >- + A text message sent by this application itself. Used for systems + announcements independent of any user + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + allOf: + - $ref: '#/components/schemas/TextMessageProperties' + - $ref: '#/components/schemas/MessageProperties' + TextSystemMessageResource: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + description: The type of this message + type: string + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + body: + description: The text body of this message + type: string + channel_id: + description: The ID of the channel this message belongs to + type: integer + format: int64 + created_time: + description: The time this message was created + type: string + format: date-time + group_tag: + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + type: string + last_edited_time: + description: The time this message was last edited + type: string + format: date-time + links: + description: Link previews in this message + type: array + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + description: Mentions in this message + type: array + items: + $ref: '#/components/schemas/MessageMentionProperties' + nested_level: + description: The nested thread level of this message + type: integer + format: int32 + properties: + description: Custom data associated with this message + type: object + additionalProperties: + description: Custom data associated with this message + type: object + reactions: + description: Reactions to this message + type: array + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + description: The number of replies to this message + type: integer + format: int64 + report_count: + description: The number of times this message has been reported + type: integer + format: int64 + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 44903 + type: SYSTEM_TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: This is a system announcement. Keep calm and carry on. + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44903 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChatUserIdReference: + description: Reference to a user by ID + required: + - id + type: object + allOf: + - $ref: '#/components/schemas/ChatUserReference' + - type: object + properties: + id: + description: 'User ID associated with this user ' + type: integer + format: int64 + ChatUserReference: + description: Reference to a user + type: object + example: + username: jane@chatkitty.com + properties: + username: + type: string + example: jane@chatkitty.com + ChatUserUsernameReference: + description: Reference to a user by username + required: + - username + type: object + allOf: + - $ref: '#/components/schemas/ChatUserReference' + - type: object + properties: + username: + description: Username associated with this user + type: string + CreateFileMessageResource: + required: + - file + type: object + example: + type: FILE + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + allOf: + - $ref: '#/components/schemas/CreateMessageResource' + - type: object + properties: + file: + $ref: '#/components/schemas/CreateExternalFileProperties' + CreateMessageResource: + required: + - type + type: object + properties: + type: + type: string + group_tag: + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + type: string + properties: + description: Custom data associated with this message + type: object + additionalProperties: + description: Custom data associated with this message + type: object + user: + $ref: '#/components/schemas/ChatUserReference' + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/CreateTextMessageResource' + FILE: '#/components/schemas/CreateFileMessageResource' + CreateTextMessageResource: + required: + - body + type: object + example: + type: TEXT + body: Hello, World! + allOf: + - $ref: '#/components/schemas/CreateMessageResource' + - type: object + properties: + body: + description: The text body of this message + type: string + CreateDelegatedReplyThreadKeystrokesResource: + required: + - keys + - user + type: object + properties: + keys: + type: string + user: + $ref: '#/components/schemas/ChatUserReference' + ReplyThreadKeystrokesResource: + required: + - keys + - username + type: object + properties: + keys: + type: string + username: + type: string + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + CreateChatFunctionResource: + required: + - initialize_asynchronously + - name + - type + type: object + properties: + description: + type: string + type: + type: string + initialize_asynchronously: + type: boolean + name: + type: string + example: + type: user.attempted.start_session + name: User Attempted Start Session + ChatFunctionChatRuntimeProperties: + description: The runtime this function executes on. Always a NodeJS runtime + required: + - id + - type + - version + type: object + properties: + version: + description: The semantic version of this runtime + type: string + type: + description: The type of this runtime. Always NODEJS + type: string + enum: + - NODEJS + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + ChatFunctionResource: + required: + - current_version_number + - enabled + - id + - name + - runtime + - type + type: object + properties: + description: + description: Optional description of this function + type: string + type: + description: The type of this function + type: string + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + current_version_number: + description: >- + The current version number of this function. Incremented every time + a new version is deployed + type: integer + format: int64 + enabled: + description: True if this function is enabled + type: boolean + name: + description: The name of this function + type: string + runtime: + $ref: '#/components/schemas/ChatFunctionChatRuntimeProperties' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: user.attempted.start_session + runtime: + version: v0.0.29 + id: 1 + type: NODEJS + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationJobResource: + required: + - created_time + - id + - state + - type + type: object + properties: + type: + description: The type of application job + type: string + enum: + - CHANNEL_IMPORT + - CHANNEL_MEMBERS_IMPORT + - MESSAGE_IMPORT + - USER_IMPORT + - MESSAGE_ANALYTICS_EXPORT + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + type: string + format: date-time + ended_time: + type: string + format: date-time + file: + type: string + state: + description: The running state of an application job + type: string + enum: + - PENDING + - RUNNING + - FINISHED + - FAILED + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChatFunctionVersionResource: + required: + - handler_script + type: object + properties: + handler_script: + description: JavaScript/TypeScript code that runs when this function is executed + type: string + example: + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + ChatFunctionVersionResource: + required: + - handler_script + - id + - version_number + type: object + properties: + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + handler_script: + description: JavaScript/TypeScript code that runs when this function is executed + type: string + version_number: + description: >- + The version number of this function version. Incremented from the + previous version + type: integer + format: int64 + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChannelProperties: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + description: The type of this channel + type: string + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: The ISO date-time this channel was created + type: string + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelProperties' + PRIVATE: '#/components/schemas/PrivateChannelProperties' + DIRECT: '#/components/schemas/DirectChannelProperties' + ChannelResource: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + description: The type of this channel + type: string + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: The ISO date-time this channel was created + type: string + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelResource' + PRIVATE: '#/components/schemas/PrivateChannelResource' + DIRECT: '#/components/schemas/DirectChannelResource' + oneOf: + - $ref: '#/components/schemas/PublicChannelResource' + - $ref: '#/components/schemas/PrivateChannelResource' + - $ref: '#/components/schemas/DirectChannelResource' + DirectChannelProperties: + description: A direct channel + required: + - created_time + - id + - members + - properties + - type + type: object + properties: + type: + description: The type of this channel + type: string + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: The ISO date-time this channel was created + type: string + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + members: + description: >- + The members of this channel. Present if this is a direct channel. + For other channel types, use [**list channel + messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) + type: array + items: + $ref: '#/components/schemas/ChatUserProperties' + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + DirectChannelResource: + required: + - created_time + - id + - members + - properties + - type + type: object + properties: + type: + description: The type of this channel + type: string + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: The ISO date-time this channel was created + type: string + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + members: + description: >- + The members of this channel. Present if this is a direct channel. + For other channel types, use [**list channel + messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) + type: array + items: + $ref: '#/components/schemas/ChatUserProperties' + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 19354 + type: DIRECT + creator: + id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + members: + - id: 2 + type: PERSON + name: aaron + displayName: aaron + displayPictureUrl: https://api.chatkitty.com/v1/picture/aaron + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + - id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + properties: {} + createdTime: '2021-05-18T20:40:29.472Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/19354 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/19354/events + application: + href: https://api.chatkitty.com/v1/applications/1 + PrivateChannelProperties: + description: A private channel + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + description: The type of this channel + type: string + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: The ISO date-time this channel was created + type: string + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + description: Human readable name of this channel shown to users + type: string + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + description: The unique name of this channel used to reference the channel + type: string + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + PrivateChannelResource: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + description: The type of this channel + type: string + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: The ISO date-time this channel was created + type: string + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + description: Human readable name of this channel shown to users + type: string + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + description: The unique name of this channel used to reference the channel + type: string + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 55914 + type: PRIVATE + name: a3e9118e-4c60-4a87-a19f-cb8bf5351462 + displayName: Our private channel + properties: {} + createdTime: '2021-09-28T01:45:20.542Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55914 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + PublicChannelProperties: + description: A public channel + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + description: The type of this channel + type: string + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: The ISO date-time this channel was created + type: string + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + description: Human readable name of this channel shown to users + type: string + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + description: The unique name of this channel used to reference the channel + type: string + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + PublicChannelResource: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + description: The type of this channel + type: string + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: The ISO date-time this channel was created + type: string + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + description: Human readable name of this channel shown to users + type: string + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + description: The unique name of this channel used to reference the channel + type: string + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelInviteResource: + required: + - user + type: object + properties: + user: + $ref: '#/components/schemas/ChatUserReference' + example: + user: + username: jane@chatkitty.com + ChannelInviteResource: + required: + - created_time + type: object + properties: + created_time: + description: The time this invite was created + type: string + format: date-time + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelGenericEventResource: + required: + - properties + - type + type: object + properties: + type: + description: Custom type of this event + type: string + properties: + description: Custom data associated with this event + type: object + additionalProperties: + description: Custom data associated with this event + type: object + example: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + ChannelGenericEventResource: + required: + - properties + - type + type: object + properties: + type: + description: Custom type of this event + type: string + properties: + description: Custom data associated with this event + type: object + additionalProperties: + description: Custom data associated with this event + type: object + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelResource: + required: + - type + type: object + properties: + type: + type: string + creator: + $ref: '#/components/schemas/ChatUserReference' + members: + description: List of user references of members of this channel + uniqueItems: true + type: array + items: + $ref: '#/components/schemas/ChatUserReference' + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/CreatePublicChannelResource' + PRIVATE: '#/components/schemas/CreatePrivateChannelResource' + DIRECT: '#/components/schemas/CreateDirectChannelResource' + CreateGroupChannelResource: + type: object + allOf: + - $ref: '#/components/schemas/CreateChannelResource' + - type: object + properties: + name: + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + type: string + display_name: + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + type: string + CreatePrivateChannelResource: + description: Creates a private channel + type: object + example: + type: PRIVATE + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/CreateGroupChannelResource' + - $ref: '#/components/schemas/CreateChannelResource' + CreatePublicChannelResource: + description: Creates a public channel + type: object + example: + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/CreateGroupChannelResource' + - $ref: '#/components/schemas/CreateChannelResource' + JsonMergePatch: + type: object + ApplicationSentSystemMessageNotificationData: + description: Sent when a system message is sent + required: + - channel_id + - message + - type + type: object + properties: + type: + type: string + channel_id: + description: >- + The ID channel the message was sent. Deprecated: Use the channel + property of this notification + type: integer + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/SystemMessageResource' + ChatUserMentionedChannelNotificationData: + description: Sent when a user mentions a channel in a message + required: + - channel_id + - mentioned_channel + - message + - type + type: object + properties: + type: + type: string + channel_id: + description: >- + The ID of the channel the mentioning message was sent. Deprecated: + Use the channel property of this notification + type: integer + format: int64 + deprecated: true + mentioned_channel: + $ref: '#/components/schemas/ChannelResource' + message: + $ref: '#/components/schemas/TextMessageResource' + ChatUserMentionedChatUserNotificationData: + description: Sent when a user mentions a user in a message + required: + - channel_id + - mentioned_user + - message + - type + type: object + properties: + type: + type: string + channel_id: + description: >- + The ID of the channel the mentioning message was sent. Deprecated: + Use the channel property of this notification + type: integer + format: int64 + deprecated: true + mentioned_user: + $ref: '#/components/schemas/ChatUserResource' + message: + $ref: '#/components/schemas/TextMessageResource' + ChatUserMessageResource: + description: The message that was sent + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + description: The type of this message + type: string + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + channel_id: + description: The ID of the channel this message belongs to + type: integer + format: int64 + created_time: + description: The time this message was created + type: string + format: date-time + group_tag: + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + type: string + last_edited_time: + description: The time this message was last edited + type: string + format: date-time + nested_level: + description: The nested thread level of this message + type: integer + format: int32 + properties: + description: Custom data associated with this message + type: object + additionalProperties: + description: Custom data associated with this message + type: object + reactions: + description: Reactions to this message + type: array + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + description: The number of replies to this message + type: integer + format: int64 + report_count: + description: The number of times this message has been reported + type: integer + format: int64 + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + FILE: '#/components/schemas/FileChatUserMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/FileChatUserMessageResource' + ChatUserRepliedToChatUserMessageNotificationData: + description: Sent when a user replies to a message + required: + - channel_id + - message + - parent + - type + type: object + properties: + type: + type: string + channel_id: + description: >- + The ID of channel the reply message was sent. Deprecated: Use the + channel property of this notification + type: integer + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/MessageResource' + parent: + $ref: '#/components/schemas/MessageResource' + ChatUserSentChatUserMessageNotificationData: + description: Sent when a user sends a message + required: + - channel_id + - message + - type + type: object + properties: + type: + type: string + channel_id: + description: >- + The ID channel the message was sent. Deprecated: Use the channel + property of this notification + type: integer + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/ChatUserMessageResource' + CursorPageMetadata: + required: + - size + type: object + properties: + next: + type: string + size: + type: integer + format: int64 + start: + type: string + CursorPagedModelNotificationResource: + required: + - page + type: object + properties: + _embedded: + type: object + properties: + notifications: + type: array + items: + $ref: '#/components/schemas/NotificationResource' + page: + $ref: '#/components/schemas/CursorPageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + notifications: + - title: System message sent + id: 3256308 + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - title: System message sent + id: 3255805 + body: Hello, World! + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85216 + type: SYSTEM_TEXT + channelId: 702 + body: Hello, World! + properties: {} + createdTime: '2022-06-02T16:34:58.871950Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85216 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85216.relay + createdTime: '2022-06-02T16:35:14.296158Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - title: hey sent a message + id: 1750641 + body: 🌞 + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T16:45:33.696Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44902.relay + createdTime: '2021-09-16T16:45:48.351Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - title: ho sent a message + id: 1749995 + body: ok + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T05:13:48.030Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44759.relay + createdTime: '2021-09-16T05:14:00.993Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - title: Nisar sent a message + id: 1749225 + body: hi + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44559 + type: TEXT + channelId: 702 + user: + id: 39827 + type: PERSON + name: ss@dd.com + displayName: Nisar + displayPictureUrl: https://api.chatkitty.com/v1/picture/Nisar + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-14T20:13:37.357Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44559 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39827 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44559.relay + createdTime: '2021-09-14T20:13:49.998Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=NEXT + page: + size: 5 + NotificationData: + description: Additional context data of this notification + required: + - type + type: object + properties: + type: + description: >- + The type of notification that was received. This specifies the + schema of the notification data + type: string + discriminator: + propertyName: type + mapping: + SYSTEM:SENT:MESSAGE: '#/components/schemas/ApplicationSentSystemMessageNotificationData' + USER:MENTIONED:CHANNEL: '#/components/schemas/ChatUserMentionedChannelNotificationData' + USER:MENTIONED:USER: '#/components/schemas/ChatUserMentionedChatUserNotificationData' + USER:REPLIED_TO:MESSAGE: >- + #/components/schemas/ChatUserRepliedToChatUserMessageNotificationData + USER:SENT:MESSAGE: '#/components/schemas/ChatUserSentChatUserMessageNotificationData' + NotificationResource: + required: + - body + - created_time + - data + - id + - muted + - title + type: object + properties: + title: + description: The title of this notification + type: string + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + body: + description: The text body of this notification + type: string + channel: + $ref: '#/components/schemas/ChannelProperties' + created_time: + description: Time this notification was created + type: string + format: date-time + data: + $ref: '#/components/schemas/NotificationData' + muted: + description: True if this notification should be muted + type: boolean + read_time: + description: Time this notification was read + type: string + format: date-time + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + title: System message sent + id: 3256308 + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + SystemMessageResource: + description: The message that was sent + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + description: The type of this message + type: string + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + channel_id: + description: The ID of the channel this message belongs to + type: integer + format: int64 + created_time: + description: The time this message was created + type: string + format: date-time + group_tag: + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + type: string + last_edited_time: + description: The time this message was last edited + type: string + format: date-time + nested_level: + description: The nested thread level of this message + type: integer + format: int32 + properties: + description: Custom data associated with this message + type: object + additionalProperties: + description: Custom data associated with this message + type: object + reactions: + description: Reactions to this message + type: array + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + description: The number of replies to this message + type: integer + format: int64 + report_count: + description: The number of times this message has been reported + type: integer + format: int64 + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + discriminator: + propertyName: type + mapping: + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextSystemMessageResource' + - $ref: '#/components/schemas/FileSystemMessageResource' + TextMessageResource: + description: The message in which the user was mentioned + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + description: The type of this message + type: string + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + channel_id: + description: The ID of the channel this message belongs to + type: integer + format: int64 + created_time: + description: The time this message was created + type: string + format: date-time + group_tag: + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + type: string + last_edited_time: + description: The time this message was last edited + type: string + format: date-time + nested_level: + description: The nested thread level of this message + type: integer + format: int32 + properties: + description: Custom data associated with this message + type: object + additionalProperties: + description: Custom data associated with this message + type: object + reactions: + description: Reactions to this message + type: array + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + description: The number of replies to this message + type: integer + format: int64 + report_count: + description: The number of times this message has been reported + type: integer + format: int64 + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/TextSystemMessageResource' + CursorPagedModelMessageResource: + required: + - page + type: object + properties: + _embedded: + type: object + properties: + messages: + type: array + items: + $ref: '#/components/schemas/MessageResource' + page: + $ref: '#/components/schemas/CursorPageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + messages: + - id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44701 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: test + properties: {} + createdTime: '2021-09-16T14:57:55.903Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44701 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44700 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-16T14:57:46.056Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44700 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44760 + type: TEXT + channelId: 1255 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: do? + properties: {} + createdTime: '2021-09-16T09:14:09.585Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44760 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/1255 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T09:13:48.030Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=NEXT + page: + size: 5 + PageMetadata: + type: object + properties: + number: + type: integer + format: int64 + size: + type: integer + format: int64 + total_elements: + type: integer + format: int64 + total_pages: + type: integer + format: int64 + PagedModelChannelResource: + type: object + properties: + _embedded: + type: object + properties: + channels: + type: array + items: + $ref: '#/components/schemas/ChannelResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + channels: + - id: 15252 + type: DIRECT + creator: + id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + members: + - id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + - id: 19452 + type: PERSON + name: aa + displayName: emra + displayPictureUrl: https://api.chatkitty.com/v1/picture/emra + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2021-05-05T00:38:24.888Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/15252 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/events + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 2402 + type: PUBLIC + name: '#test' + displayName: Test Channel + creator: + id: 4153 + type: PERSON + name: test@mail.com + displayName: mridx + displayPictureUrl: https://api.chatkitty.com/v1/picture/mridx + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2020-12-13T21:12:09.195Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/2402 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 856 + type: PUBLIC + name: mkm + displayName: Meme Channel + creator: + id: 1504 + type: PERSON + name: njnj@vghf.jk + displayName: mkm + displayPictureUrl: https://api.chatkitty.com/v1/picture/mkm + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 17654 + type: TEXT + channelId: 856 + user: + id: 15402 + type: PERSON + name: paras@code.co + displayName: Paras + displayPictureUrl: https://api.chatkitty.com/v1/picture/Paras + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: ghk + properties: {} + createdTime: '2021-03-31T06:00:28.680Z' + properties: {} + createdTime: '2020-11-25T07:46:45.775Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/856 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1302 + type: PUBLIC + name: SONU KUMAR + displayName: SONU KUMAR + creator: + id: 2302 + type: PERSON + name: '852122' + displayName: SONU KUMAR + displayPictureUrl: https://api.chatkitty.com/v1/picture/SONU+KUMAR + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 44530 + type: TEXT + channelId: 1302 + user: + id: 39826 + type: PERSON + name: steve@innersync.com + displayName: Steve Williams + displayPictureUrl: https://api.chatkitty.com/v1/picture/Steve+Williams + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: Checking out + properties: {} + createdTime: '2021-09-14T18:02:56.066Z' + properties: {} + createdTime: '2020-12-02T05:10:01.260Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/1302 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + page: + size: 5 + totalElements: 2020 + totalPages: 404 + number: 0 + PagedModelChatUserResource: + type: object + properties: + _embedded: + type: object + properties: + users: + type: array + items: + $ref: '#/components/schemas/ChatUserResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + users: + - id: 14503 + type: PERSON + name: jane@chatkitty.com + displayName: Jane + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/14503 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3004 + type: PERSON + name: '1' + displayName: ChatKittyUser + displayPictureUrl: https://api.chatkitty.com/v1/picture/ChatKittyUser + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3004 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: PERSON + name: 10zxc13@gmail.com + displayName: Jack + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jack + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6152 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3353 + type: PERSON + name: '12121' + displayName: '12121' + displayPictureUrl: https://api.chatkitty.com/v1/picture/12121 + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3353 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6602 + type: PERSON + name: '123' + displayName: '123' + displayPictureUrl: https://api.chatkitty.com/v1/picture/123 + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6602 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/users?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/users?page=114&size=5 + page: + size: 5 + totalElements: 571 + totalPages: 115 + number: 0 + ChatUserSessionProperties: + required: + - created_time + - id + - state + - user + type: object + properties: + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: Time this session was created + type: string + format: date-time + end_time: + description: Time this session ended. Present if state is ENDED + type: string + format: date-time + state: + description: State of this session. ACTIVE or ENDED + type: string + enum: + - ACTIVE + - ENDED + user: + $ref: '#/components/schemas/ChatUserProperties' + user_agent: + description: User agent used to start this session + type: string + ChatUserSessionResource: + required: + - created_time + - id + - state + - user + type: object + properties: + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: Time this session was created + type: string + format: date-time + end_time: + description: Time this session ended. Present if state is ENDED + type: string + format: date-time + state: + description: State of this session. ACTIVE or ENDED + type: string + enum: + - ACTIVE + - ENDED + user: + $ref: '#/components/schemas/ChatUserProperties' + user_agent: + description: User agent used to start this session + type: string + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatUserSessionResource: + type: object + properties: + _embedded: + type: object + properties: + sessions: + type: array + items: + $ref: '#/components/schemas/ChatUserSessionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + sessions: + - id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635641 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:35:08.587Z' + createdTime: '2021-11-12T08:25:33.885Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635669 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:55:36.282Z' + createdTime: '2021-11-12T08:38:54.982Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39806 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635644 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:54:48.309Z' + createdTime: '2021-11-12T08:45:13.682Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635651 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T09:06:40.409Z' + createdTime: '2021-11-12T09:04:53.490Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/user-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/user-sessions?page=328&size=5 + page: + size: 5 + totalElements: 1645 + totalPages: 329 + number: 0 + ReplyThreadResource: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + description: The type of this thread + type: string + enum: + - MAIN + - STANDALONE + - MESSAGE + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: The ISO date-time this thread was created + type: string + format: date-time + name: + description: The name of this thread + type: string + properties: + description: Custom data associated with this thread + type: object + additionalProperties: + description: Custom data associated with this thread + type: object + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 67528 + type: MAIN + properties: {} + createdTime: '2022-02-04T13:19:06.764939Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/threads/67528 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelChatFunctionResource: + type: object + properties: + _embedded: + type: object + properties: + functions: + type: array + items: + $ref: '#/components/schemas/ChatFunctionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + functions: + - id: 202 + type: user.received.notification + runtime: + version: v0.0.29 + id: 1 + type: NODEJS + name: User Received Notification + enabled: true + currentVersionNumber: 5 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/202 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4552 + type: user.sent.message + runtime: + version: v0.0.29 + id: 1 + type: NODEJS + name: User Sent Message + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/4552 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: user.started.chat_session + runtime: + version: v0.0.29 + id: 1 + type: NODEJS + name: User Started Chat Session + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/6152 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1 + type: user.attempted.start_session + runtime: + version: v0.0.29 + id: 1 + type: NODEJS + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions?page=0&size=5 + page: + size: 5 + totalElements: 4 + totalPages: 1 + number: 0 + MessageReadReceiptResource: + required: + - created_time + - user + type: object + properties: + created_time: + description: Time the user read this message + type: string + format: date-time + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelMessageReadReceiptResource: + type: object + properties: + _embedded: + type: object + properties: + receipts: + type: array + items: + $ref: '#/components/schemas/MessageReadReceiptResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + receipts: + - user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/67026/read-receipts?page=0&size=25 + page: + size: 1 + totalElements: 1 + totalPages: 1 + number: 0 + PagedModelApplicationJobResource: + type: object + properties: + _embedded: + type: object + properties: + jobs: + type: array + items: + $ref: '#/components/schemas/ApplicationJobResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + jobs: + - id: 1 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T04:19:41.255Z' + endedTime: '2021-09-28T04:19:42.230Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/1 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 52 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T05:30:08.902Z' + endedTime: '2021-09-28T05:30:09.571Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 53 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 54 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:35:35.075Z' + endedTime: '2021-09-28T05:36:15.755Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/54 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 102 + type: CHANNEL_MEMBERS_IMPORT + state: FINISHED + createdTime: '2021-09-29T04:52:22.895Z' + endedTime: '2021-09-29T04:52:58.941Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/102 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/jobs?running=false&page=0&size=25 + page: + size: 25 + totalElements: 5 + totalPages: 1 + number: 0 + PagedModelChatFunctionVersionResource: + type: object + properties: + _embedded: + type: object + properties: + versions: + type: array + items: + $ref: '#/components/schemas/ChatFunctionVersionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + versions: + - id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 13461 + versionNumber: 33 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello!'); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13461 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4802 + versionNumber: 32 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return {payload: true}; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4652 + versionNumber: 31 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return true; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4652 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4555 + versionNumber: 30 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return { + status: "SUCCESS" + }; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4555 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=6&size=5 + page: + size: 5 + totalElements: 35 + totalPages: 7 + number: 0 + ChatFunctionInvocationResource: + required: + - args + - created_time + - id + - result + - status + - version_number + type: object + properties: + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + args: + description: The function arguments passed into this function for this invocation + type: object + additionalProperties: + description: >- + The function arguments passed into this function for this + invocation + type: object + created_time: + description: The ISO date-time of this invocation when the function was called + type: string + format: date-time + result: + description: The result of this invocation when it completed + type: object + additionalProperties: + description: The result of this invocation when it completed + type: object + status: + description: The running status of this invocation + type: string + enum: + - RUNNING + - SUCCEEDED + - FAILED + version_number: + description: >- + The version number of this function version when this invocation + occured + type: integer + format: int64 + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + PagedModelChatFunctionInvocationResource: + type: object + properties: + _embedded: + type: object + properties: + invocations: + type: array + items: + $ref: '#/components/schemas/ChatFunctionInvocationResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + invocations: + - id: 468510 + versionNumber: 34 + args: + authParams: + displayName: Niyati + username: asac@sfas.com + status: SUCCEEDED + result: + payload: + - Hello asac@sfas.com + createdTime: '2021-09-20T06:37:01.766Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468453 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + - 'Hello ' + createdTime: '2021-09-19T09:34:40.190Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468452 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + createdTime: '2021-09-19T09:34:26.890Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467243 + versionNumber: 34 + args: + authParams: + displayName: '' + username: aaron + status: SUCCEEDED + result: + payload: + - Hello aaron + createdTime: '2021-09-17T17:00:31.396Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467162 + versionNumber: 34 + args: + authParams: + displayName: bob + username: fwfe@efw.com + status: SUCCEEDED + result: + payload: + - Hello fwfe@efw.com + createdTime: '2021-09-17T09:15:50.072Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1515&size=5 + page: + size: 5 + totalElements: 7578 + totalPages: 1516 + number: 0 + ChatSessionResource: + required: + - created_time + - id + - session + - state + type: object + properties: + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: Time this session was created + type: string + format: date-time + end_time: + description: Time this session ended. Present if state is ENDED + type: string + format: date-time + session: + $ref: '#/components/schemas/ChatUserSessionProperties' + state: + description: State of this session. ACTIVE or ENDED + type: string + enum: + - ACTIVE + - ENDED + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatSessionResource: + type: object + properties: + _embedded: + type: object + properties: + sessions: + type: array + items: + $ref: '#/components/schemas/ChatSessionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + sessions: + - id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480795 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:35:43.597Z' + createdTime: '2021-09-19T04:33:41.710Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480731 + session: + id: 544216 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:38:45.272Z' + createdTime: '2021-09-19T04:35:45.028Z' + state: ENDED + endTime: '2021-09-19T04:35:55.360Z' + createdTime: '2021-09-19T04:35:45.685Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544216 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481281 + session: + id: 545001 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:12.242Z' + createdTime: '2021-09-20T12:13:09.900Z' + state: ENDED + endTime: '2021-09-20T12:13:12.255Z' + createdTime: '2021-09-20T12:13:10.352Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545001 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481282 + session: + id: 545052 + user: + id: 39807 + type: PERSON + name: 8fadc920-f3e6-49ff-9398-1e58b3dc44dd + displayName: Zaria Bria + displayPictureUrl: https://api.chatkitty.com/v1/picture/Zaria+Bria + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:22.564Z' + createdTime: '2021-09-20T12:13:20.105Z' + state: ENDED + endTime: '2021-09-20T12:13:22.575Z' + createdTime: '2021-09-20T12:13:20.553Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545052 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/chat-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/chat-sessions?page=1037&size=5 + page: + size: 5 + totalElements: 5190 + totalPages: 1038 + number: 0 + PagedModelMessageResource: + type: object + properties: + _embedded: + type: object + properties: + messages: + type: array + items: + $ref: '#/components/schemas/MessageResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + ChannelMembershipResource: + required: + - created_time + type: object + properties: + created_time: + type: string + format: date-time + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + PagedModelChannelMembershipResource: + type: object + properties: + _embedded: + type: object + properties: + memberships: + type: array + items: + $ref: '#/components/schemas/ChannelMembershipResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + memberships: + - createdTime: '2020-12-02T21:52:33.976Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/2 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/2 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-02T22:03:28.742Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/52 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T13:03:17.433Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/352 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/352 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-07T22:28:47.620Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/403 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/403 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T14:34:29.580Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/452 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/452 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=107&size=5 + page: + size: 5 + totalElements: 537 + totalPages: 108 + number: 0 + PagedModelChannelInviteResource: + type: object + properties: + _embedded: + type: object + properties: + invites: + type: array + items: + $ref: '#/components/schemas/ChannelInviteResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + invites: + - createdTime: '2022-06-02T16:51:03.206366Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/67026/invites?page=0&size=25 + page: + size: 25 + totalElements: 1 + totalPages: 1 + number: 0 + ApplicationResource: + required: + - created_time + - id + - key + - properties + type: object + properties: + id: + description: 64-bit integer identifier associated with this resource + type: integer + format: int64 + created_time: + description: ISO date-time this application was created + type: string + format: date-time + key: + description: Primary API key assigned to this application + type: string + properties: + description: Custom properties attached to this application + type: object + additionalProperties: + description: Custom properties attached to this application + type: object + _links: + description: Hypermedia control links for this resource + type: array + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + key: 19b458d0-2b50-491c-8f13-65ec12f3978e + properties: {} + created_time: '2020-10-02T20:29:25.316Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1 + Links: + type: object + additionalProperties: + $ref: '#/components/schemas/Link' + MessageImport: + required: + - channel_id + - type + type: object + properties: + type: + type: string + channel_id: + description: ID of the channel this message belongs to + type: integer + format: int64 + group_tag: + description: Tag identifying the message group this message belongs to + type: string + idempotency_key: + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + type: string + properties: + description: Map of custom data attached to this message + type: object + additionalProperties: + description: Map of custom data attached to this message + type: object + example: + idempotencyKey: unique-external-id + type: TEXT + body: Hello, World! + discriminator: + propertyName: type + mapping: + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageImport' + TEXT: '#/components/schemas/TextChatUserMessageImport' + ChatUserImport: + required: + - display_name + - guest + - name + - properties + type: object + properties: + display_name: + description: Human readable name of this user. Shown to other users + type: string + display_picture: + $ref: '#/components/schemas/FileImport' + guest: + description: True if this user was created by a guest user session + type: boolean + idempotency_key: + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + type: string + name: + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + type: string + properties: + description: Custom data associated with this user + type: object + additionalProperties: + description: Custom data associated with this user + type: object + example: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMembershipImport: + required: + - username + type: object + properties: + idempotency_key: + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + type: string + username: + description: Username of the user to be added as a member + type: string + example: + username: jane@chatkitty.com + FileImport: + description: External file properties + required: + - content_type + - name + - size + - url + type: object + properties: + content_type: + description: The mime type of this file + type: string + idempotency_key: + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + type: string + name: + description: The file name + type: string + size: + description: The size of this file in bytes + type: integer + format: int64 + url: + description: The file URL + type: string + ChannelImport: + required: + - members + - type + type: object + properties: + type: + type: string + creator: + description: Username of the user who created this channel + type: string + idempotency_key: + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + type: string + members: + description: List of usernames of members of this channel + type: array + items: + description: List of usernames of members of this channel + type: string + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + example: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelImport' + PRIVATE: '#/components/schemas/PrivateChannelImport' + DIRECT: '#/components/schemas/DirectChannelImport' + TextMessageImport: + required: + - body + - channel_id + type: object + properties: + body: + description: The text body of this message + type: string + channel_id: + description: ID of the channel this message belongs to + type: integer + format: int64 + group_tag: + description: Tag identifying the message group this message belongs to + type: string + idempotency_key: + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + type: string + properties: + description: Map of custom data attached to this message + type: object + additionalProperties: + description: Map of custom data attached to this message + type: object + GroupChannelImport: + required: + - members + type: object + properties: + creator: + description: Username of the user who created this channel + type: string + display_name: + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + type: string + idempotency_key: + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + type: string + members: + description: List of usernames of members of this channel + type: array + items: + description: List of usernames of members of this channel + type: string + name: + description: >- + The unique name of this channel used to reference the channel. If + absent defaults to a random UUID + type: string + properties: + description: Custom data associated with this channel + type: object + additionalProperties: + description: Custom data associated with this channel + type: object + TextSystemMessageImport: + description: Imports a system text message + required: + - body + - channel_id + type: object + example: + type: TEXT + body: Hello, World! + allOf: + - $ref: '#/components/schemas/MessageImport' + - type: object + properties: + body: + description: The text body of this message + type: string + TextChatUserMessageImport: + description: Imports a user text message + required: + - body + - channel_id + - user + type: object + example: + type: TEXT + body: Hello, World! + user: jane@chatkitty.com + allOf: + - $ref: '#/components/schemas/MessageImport' + - type: object + properties: + body: + description: The text body of this message + type: string + user: + description: Username of the user who sent this message + type: string + PublicChannelImport: + description: Imports a public channel + required: + - members + type: object + example: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/ChannelImport' + - type: object + properties: + name: + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + type: string + display_name: + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + type: string + PrivateChannelImport: + description: Imports a private channel + required: + - members + type: object + example: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/ChannelImport' + - type: object + properties: + name: + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + type: string + display_name: + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + type: string + ChannelsSendChannelMessageRequest: + required: + - file + type: object + properties: + file: + type: string + format: binary + groupTag: + type: string + username: + type: string + properties: + type: string + ImportsBatchChannelsRequest: + required: + - file + type: object + properties: + file: + description: JSON array file with channels + type: string + format: binary + ImportsChannelMembersBatchRequest: + required: + - file + type: object + properties: + file: + description: JSON array file with user references to be added as members + type: string + format: binary + ImportsBatchMessagesFromJsonRequest: + required: + - file + type: object + properties: + file: + description: JSON array file with messages + type: string + format: binary + ImportsJsonUsersBatchRequest: + required: + - file + type: object + properties: + file: + description: JSON array file with users + type: string + format: binary + RuntimeUpdateNodejsChatDependenciesRequest: + type: array + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + ThreadsSendReplyMessageRequest: + required: + - file + type: object + properties: + file: + type: string + format: binary + groupTag: + type: string + properties: + type: string + UsersUpdateDisplayPictureRequest: + required: + - file + type: object + properties: + file: + type: string + format: binary + UsersCheckExistsResponse: + description: Empty object + type: object + UsersCheckExists200Response: + description: Empty object + type: object + examples: + SecretResource: + value: + secret: My secret is... well, I'd never tell. + ChatUserResource: + value: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/1 + channels: + href: https://api.chatkitty.com/v1/applications/1/users/1/channels + notifications: + href: https://api.chatkitty.com/v1/applications/1/users/1/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/1/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + Link: + value: + href: https://api.chatkitty.com/v1/applications/1 + ChatRuntimeScriptProperties: + value: + script: "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + ChatRuntimeDependencyProperties: + value: + version: ^9.8.2 + name: firebase + ChatRuntimeEnvironmentVariablesProperties: + value: + CUSTOM_ENV_AWS_REGION: us-east-1 + ChatRuntimeProperties: + value: + version: v0.0.29 + id: 1 + type: NODEJS + dependencies: + - version: ^0.19.2 + name: axios + defaultDependency: true + - version: ^0.2.0 + name: axios-token-interceptor + defaultDependency: true + - version: 1.0.1 + name: chatkitty-platform-sdk + defaultDependency: true + - version: 6.9.4 + name: qs + defaultDependency: true + - version: ^9.8.2 + name: firebase + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + ChatRuntimeResource: + value: + version: v0.0.29 + id: 1 + type: NODEJS + dependencies: + - version: ^0.19.2 + name: axios + defaultDependency: true + - version: ^0.2.0 + name: axios-token-interceptor + defaultDependency: true + - version: 1.0.1 + name: chatkitty-platform-sdk + defaultDependency: true + - version: 6.9.4 + name: qs + defaultDependency: true + - version: ^9.8.2 + name: firebase + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/runtimes/nodejs + dependencies: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/dependencies + initializationScript: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/initialization-script + functions: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationSettingsResource: + value: + features: + guest_users: ENABLED + user_created_channels: DISABLED + CreateExternalFileProperties: + value: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreatePersonChatUserResource: + value: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + FileChatUserMessageResource: + value: + id: 44904 + type: FILE + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44904 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + FileSystemMessageResource: + value: + id: 44905 + type: SYSTEM_FILE + channelId: 702 + file: + url: https://example.com/files/my-application-file.png + name: file.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44905 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + MessageResource: + value: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextChatUserMessageResource: + value: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextSystemMessageResource: + value: + id: 44903 + type: SYSTEM_TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: This is a system announcement. Keep calm and carry on. + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44903 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChatUserReference: + value: + username: jane@chatkitty.com + CreateFileMessageResource: + value: + type: FILE + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreateTextMessageResource: + value: + type: TEXT + body: Hello, World! + CreateChatFunctionResource: + value: + type: user.attempted.start_session + name: User Attempted Start Session + ChatFunctionResource: + value: + id: 1 + type: user.attempted.start_session + runtime: + version: v0.0.29 + id: 1 + type: NODEJS + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationJobResource: + value: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChatFunctionVersionResource: + value: + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + ChatFunctionVersionResource: + value: + id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChannelResource: + value: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + DirectChannelResource: + value: + id: 19354 + type: DIRECT + creator: + id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + members: + - id: 2 + type: PERSON + name: aaron + displayName: aaron + displayPictureUrl: https://api.chatkitty.com/v1/picture/aaron + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + - id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + properties: {} + createdTime: '2021-05-18T20:40:29.472Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/19354 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/19354/events + application: + href: https://api.chatkitty.com/v1/applications/1 + PrivateChannelResource: + value: + id: 55914 + type: PRIVATE + name: a3e9118e-4c60-4a87-a19f-cb8bf5351462 + displayName: Our private channel + properties: {} + createdTime: '2021-09-28T01:45:20.542Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55914 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + PublicChannelResource: + value: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelInviteResource: + value: + user: + username: jane@chatkitty.com + ChannelInviteResource: + value: + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelGenericEventResource: + value: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + ChannelGenericEventResource: + value: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateDirectChannelResource: + value: + type: DIRECT + members: + - username: jane@chatkitty.com + - username: john@chatkitty.com + CreatePrivateChannelResource: + value: + type: PRIVATE + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + CreatePublicChannelResource: + value: + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + CursorPagedModelNotificationResource: + value: + _embedded: + notifications: + - title: System message sent + id: 3256308 + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - title: System message sent + id: 3255805 + body: Hello, World! + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85216 + type: SYSTEM_TEXT + channelId: 702 + body: Hello, World! + properties: {} + createdTime: '2022-06-02T16:34:58.871950Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85216 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85216.relay + createdTime: '2022-06-02T16:35:14.296158Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - title: hey sent a message + id: 1750641 + body: 🌞 + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T16:45:33.696Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44902.relay + createdTime: '2021-09-16T16:45:48.351Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - title: ho sent a message + id: 1749995 + body: ok + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T05:13:48.030Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44759.relay + createdTime: '2021-09-16T05:14:00.993Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - title: Nisar sent a message + id: 1749225 + body: hi + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44559 + type: TEXT + channelId: 702 + user: + id: 39827 + type: PERSON + name: ss@dd.com + displayName: Nisar + displayPictureUrl: https://api.chatkitty.com/v1/picture/Nisar + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-14T20:13:37.357Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44559 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39827 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44559.relay + createdTime: '2021-09-14T20:13:49.998Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=NEXT + page: + size: 5 + NotificationResource: + value: + title: System message sent + id: 3256308 + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + CursorPagedModelMessageResource: + value: + _embedded: + messages: + - id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44701 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: test + properties: {} + createdTime: '2021-09-16T14:57:55.903Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44701 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44700 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-16T14:57:46.056Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44700 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44760 + type: TEXT + channelId: 1255 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: do? + properties: {} + createdTime: '2021-09-16T09:14:09.585Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44760 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/1255 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T09:13:48.030Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=NEXT + page: + size: 5 + PagedModelChannelResource: + value: + _embedded: + channels: + - id: 15252 + type: DIRECT + creator: + id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + members: + - id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + - id: 19452 + type: PERSON + name: aa + displayName: emra + displayPictureUrl: https://api.chatkitty.com/v1/picture/emra + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2021-05-05T00:38:24.888Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/15252 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/events + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 2402 + type: PUBLIC + name: '#test' + displayName: Test Channel + creator: + id: 4153 + type: PERSON + name: test@mail.com + displayName: mridx + displayPictureUrl: https://api.chatkitty.com/v1/picture/mridx + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2020-12-13T21:12:09.195Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/2402 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 856 + type: PUBLIC + name: mkm + displayName: Meme Channel + creator: + id: 1504 + type: PERSON + name: njnj@vghf.jk + displayName: mkm + displayPictureUrl: https://api.chatkitty.com/v1/picture/mkm + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 17654 + type: TEXT + channelId: 856 + user: + id: 15402 + type: PERSON + name: paras@code.co + displayName: Paras + displayPictureUrl: https://api.chatkitty.com/v1/picture/Paras + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: ghk + properties: {} + createdTime: '2021-03-31T06:00:28.680Z' + properties: {} + createdTime: '2020-11-25T07:46:45.775Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/856 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1302 + type: PUBLIC + name: SONU KUMAR + displayName: SONU KUMAR + creator: + id: 2302 + type: PERSON + name: '852122' + displayName: SONU KUMAR + displayPictureUrl: https://api.chatkitty.com/v1/picture/SONU+KUMAR + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 44530 + type: TEXT + channelId: 1302 + user: + id: 39826 + type: PERSON + name: steve@innersync.com + displayName: Steve Williams + displayPictureUrl: https://api.chatkitty.com/v1/picture/Steve+Williams + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: Checking out + properties: {} + createdTime: '2021-09-14T18:02:56.066Z' + properties: {} + createdTime: '2020-12-02T05:10:01.260Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/1302 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + page: + size: 5 + totalElements: 2020 + totalPages: 404 + number: 0 + PagedModelChatUserResource: + value: + _embedded: + users: + - id: 14503 + type: PERSON + name: jane@chatkitty.com + displayName: Jane + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/14503 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3004 + type: PERSON + name: '1' + displayName: ChatKittyUser + displayPictureUrl: https://api.chatkitty.com/v1/picture/ChatKittyUser + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3004 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: PERSON + name: 10zxc13@gmail.com + displayName: Jack + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jack + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6152 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3353 + type: PERSON + name: '12121' + displayName: '12121' + displayPictureUrl: https://api.chatkitty.com/v1/picture/12121 + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3353 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6602 + type: PERSON + name: '123' + displayName: '123' + displayPictureUrl: https://api.chatkitty.com/v1/picture/123 + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6602 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/users?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/users?page=114&size=5 + page: + size: 5 + totalElements: 571 + totalPages: 115 + number: 0 + ChatUserSessionResource: + value: + id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatUserSessionResource: + value: + _embedded: + sessions: + - id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635641 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:35:08.587Z' + createdTime: '2021-11-12T08:25:33.885Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635669 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:55:36.282Z' + createdTime: '2021-11-12T08:38:54.982Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39806 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635644 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:54:48.309Z' + createdTime: '2021-11-12T08:45:13.682Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635651 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T09:06:40.409Z' + createdTime: '2021-11-12T09:04:53.490Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/user-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/user-sessions?page=328&size=5 + page: + size: 5 + totalElements: 1645 + totalPages: 329 + number: 0 + ReplyThreadResource: + value: + id: 67528 + type: MAIN + properties: {} + createdTime: '2022-02-04T13:19:06.764939Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/threads/67528 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelChatFunctionResource: + value: + _embedded: + functions: + - id: 202 + type: user.received.notification + runtime: + version: v0.0.29 + id: 1 + type: NODEJS + name: User Received Notification + enabled: true + currentVersionNumber: 5 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/202 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4552 + type: user.sent.message + runtime: + version: v0.0.29 + id: 1 + type: NODEJS + name: User Sent Message + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/4552 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: user.started.chat_session + runtime: + version: v0.0.29 + id: 1 + type: NODEJS + name: User Started Chat Session + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/6152 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1 + type: user.attempted.start_session + runtime: + version: v0.0.29 + id: 1 + type: NODEJS + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions?page=0&size=5 + page: + size: 5 + totalElements: 4 + totalPages: 1 + number: 0 + MessageReadReceiptResource: + value: + user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelMessageReadReceiptResource: + value: + _embedded: + receipts: + - user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/67026/read-receipts?page=0&size=25 + page: + size: 1 + totalElements: 1 + totalPages: 1 + number: 0 + PagedModelApplicationJobResource: + value: + _embedded: + jobs: + - id: 1 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T04:19:41.255Z' + endedTime: '2021-09-28T04:19:42.230Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/1 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 52 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T05:30:08.902Z' + endedTime: '2021-09-28T05:30:09.571Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 53 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 54 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:35:35.075Z' + endedTime: '2021-09-28T05:36:15.755Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/54 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 102 + type: CHANNEL_MEMBERS_IMPORT + state: FINISHED + createdTime: '2021-09-29T04:52:22.895Z' + endedTime: '2021-09-29T04:52:58.941Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/102 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/jobs?running=false&page=0&size=25 + page: + size: 25 + totalElements: 5 + totalPages: 1 + number: 0 + PagedModelChatFunctionVersionResource: + value: + _embedded: + versions: + - id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 13461 + versionNumber: 33 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello!'); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13461 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4802 + versionNumber: 32 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return {payload: true}; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4652 + versionNumber: 31 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return true; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4652 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4555 + versionNumber: 30 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return { + status: "SUCCESS" + }; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4555 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=6&size=5 + page: + size: 5 + totalElements: 35 + totalPages: 7 + number: 0 + PagedModelChatFunctionInvocationResource: + value: + _embedded: + invocations: + - id: 468510 + versionNumber: 34 + args: + authParams: + displayName: Niyati + username: asac@sfas.com + status: SUCCEEDED + result: + payload: + - Hello asac@sfas.com + createdTime: '2021-09-20T06:37:01.766Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468453 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + - 'Hello ' + createdTime: '2021-09-19T09:34:40.190Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468452 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + createdTime: '2021-09-19T09:34:26.890Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467243 + versionNumber: 34 + args: + authParams: + displayName: '' + username: aaron + status: SUCCEEDED + result: + payload: + - Hello aaron + createdTime: '2021-09-17T17:00:31.396Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467162 + versionNumber: 34 + args: + authParams: + displayName: bob + username: fwfe@efw.com + status: SUCCEEDED + result: + payload: + - Hello fwfe@efw.com + createdTime: '2021-09-17T09:15:50.072Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1515&size=5 + page: + size: 5 + totalElements: 7578 + totalPages: 1516 + number: 0 + ChatSessionResource: + value: + id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatSessionResource: + value: + _embedded: + sessions: + - id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480795 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:35:43.597Z' + createdTime: '2021-09-19T04:33:41.710Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480731 + session: + id: 544216 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:38:45.272Z' + createdTime: '2021-09-19T04:35:45.028Z' + state: ENDED + endTime: '2021-09-19T04:35:55.360Z' + createdTime: '2021-09-19T04:35:45.685Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544216 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481281 + session: + id: 545001 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:12.242Z' + createdTime: '2021-09-20T12:13:09.900Z' + state: ENDED + endTime: '2021-09-20T12:13:12.255Z' + createdTime: '2021-09-20T12:13:10.352Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545001 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481282 + session: + id: 545052 + user: + id: 39807 + type: PERSON + name: 8fadc920-f3e6-49ff-9398-1e58b3dc44dd + displayName: Zaria Bria + displayPictureUrl: https://api.chatkitty.com/v1/picture/Zaria+Bria + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:22.564Z' + createdTime: '2021-09-20T12:13:20.105Z' + state: ENDED + endTime: '2021-09-20T12:13:22.575Z' + createdTime: '2021-09-20T12:13:20.553Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545052 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/chat-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/chat-sessions?page=1037&size=5 + page: + size: 5 + totalElements: 5190 + totalPages: 1038 + number: 0 + PagedModelChannelMembershipResource: + value: + _embedded: + memberships: + - createdTime: '2020-12-02T21:52:33.976Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/2 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/2 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-02T22:03:28.742Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/52 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T13:03:17.433Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/352 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/352 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-07T22:28:47.620Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/403 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/403 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T14:34:29.580Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/452 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/452 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=107&size=5 + page: + size: 5 + totalElements: 537 + totalPages: 108 + number: 0 + PagedModelChannelInviteResource: + value: + _embedded: + invites: + - createdTime: '2022-06-02T16:51:03.206366Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/67026/invites?page=0&size=25 + page: + size: 25 + totalElements: 1 + totalPages: 1 + number: 0 + ApplicationResource: + value: + id: 1 + key: 19b458d0-2b50-491c-8f13-65ec12f3978e + properties: {} + created_time: '2020-10-02T20:29:25.316Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1 + Links: + value: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + MessageImport: + value: + idempotencyKey: unique-external-id + type: TEXT + body: Hello, World! + ChatUserImport: + value: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMembershipImport: + value: + username: jane@chatkitty.com + ChannelImport: + value: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + DirectChannelImport: + value: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + TextSystemMessageImport: + value: + type: TEXT + body: Hello, World! + TextChatUserMessageImport: + value: + type: TEXT + body: Hello, World! + user: jane@chatkitty.com + PublicChannelImport: + value: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + PrivateChannelImport: + value: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + securitySchemes: + password_reset_token_authorization: + type: apiKey + name: X-Token + in: header + application_authorization: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://authorization.chatkitty.com/oauth/token + refreshUrl: https://authorization.chatkitty.com/oauth/token + scopes: + create:*: Create application resources + read:*: Read application resources + update:*: Update application resources + delete:*: Delete application resources +externalDocs: + description: Platform API Interactive Docs + url: https://api.chatkitty.com/docs/reference diff --git a/sdks/db/fixed-specs/miso-fixed-spec.yaml b/sdks/db/fixed-specs/miso-fixed-spec.yaml new file mode 100644 index 0000000000..b1c63bd562 --- /dev/null +++ b/sdks/db/fixed-specs/miso-fixed-spec.yaml @@ -0,0 +1,21251 @@ +openapi: 3.0.2 +info: + title: Miso API + description: > + + # Overview + + Miso’s approach to personalization is to train machine learning Engines on + three core data sets: + + + 1. Your site’s log of historical and real-time interactions, + + 2. Your catalog of products and content, and + + 3. Your users. Miso provides the output of its Engines to you, so you can + build search and recommendation + + experiences that are personalized down to the individual level (n=1 + personalization). + + + To see how Miso works and explore the power of its Engines, we recommend + following + + [this tutorial](https://docs.askmiso.com/) to get + + started with our Playground data. Integrating your site or application with + Miso happens in three basic steps: + + + 1. Upload your data + + 2. Train your Engines + + 3. Build search and recommendation experiences with the output of your + Engines. + + + + Miso provides two main integration points. The first is your [Dojo + Dashboard](https://dojo.askmiso.com/), + + which is used to set up your Engines with the conversions you want to + optimize and your training schedule. + + Dojo is also a great way to get familiar with Miso by manually uploading + data and exploring the output of + + Miso’s Engines. In Dojo’s Sandboxes, you can tweak your Engine settings and + see visual examples of Miso’s search + + and recommendations running on your live data. + + + The second integration point is Miso’s API, which lets you automatically + manage your data in Miso and build + + experiences that leverage the output of Miso’s personalization Engines. + + + + Miso’s API is composed of two major groups of REST API endpoints: Data APIs + and Engine APIs. + + + ### Data APIs + + Data APIs collect input to Miso's personalization Engines. These APIs all + support high-throughput + + data ingestion through bulk insert, and satisfy GDPR and CCPA compliance by + letting users delete their data + + from Miso. Subcategories of Data APIs are: + + + * [Interaction APIs](https://api.askmiso.com), for managing your Interaction + records. By uploading historical and real-time Interaction + + records, you tell Miso how users are engaging with the products and content + on your site, and in turn, Miso’s + + Engines learn how to optimize your conversion funnels. + + * [Product / Content APIs](https://api.askmiso.com), for managing your + Product / Content records. These records provide a deep semantic + + understanding of your catalog and keep Miso up to date about your offerings + so it can make smart and timely + + suggestions. The `product_id` is how Miso links Product / Content records to + your Interaction records. + + * [User APIs](https://api.askmiso.com), for managing your User records. + These records tell Miso about your site’s users and visitors, + + so Miso can build an understanding of user segmentation and behavior in + relation to products and content. + + The `user_id` is how Miso links User records to your Interaction records. + + + As a rule of thumb, we recommend batching up data to avoid timeout risks. + For the Product / Content and User + + Upload APIs, we recommend limiting each API upload call to about 100 records + at a time. For the Interaction + + Upload API, we recommend limiting your calls to around 10,000 records at a + time. + + + ### Engine APIs + + Engine APIs provide the output of Miso's personalization Engines. We + designed these APIs with a focus on low + + latency and high availability. Most of these APIs' 95th percentile response + time is under 75ms, + + and the services are replicated to at least three separate instances for + high availability. + + The types of Engine APIs are: + + + * [Search APIs](https://api.askmiso.com), for getting Miso’s personalized + search results for a user, with search-as-you-type and + + autocompletion. + + * [Recommendation APIs](https://api.askmiso.com), for retrieving Miso’s + recommendations that match users with + + the products, categories, and product attributes that are likely to drive + conversions. + + + # Authentication + + [View your API Keys in your Dojo + Dashboard.](https://dojo.askmiso.com/docs/api-browser) + + + There are three environments in Miso: + + * **Playground**, a read-only tutorial environment with sample data. + + * **Development**, for staging, QA, and experimentation. + + * **Production**, where you run your live integration with Miso. + + + Access a Miso environment by passing in the corresponding API key in your + API calls. There is one publishable + + key and one secret key per environment. + + + API Key can passed with query parameter `api_key`, or using the `X-API-KEY` + header. + version: 1.1.4 + x-konfig-ignore: + potential-incorrect-type: true +servers: + - url: https://api.askmiso.com +tags: + - description: >+ + + Miso's Product / Content APIs let you upload, read, and delete Product / + Content records that represent your site's + + catalog. + + + ### Product / Content records + + Miso analyzes your Product / Content records to provide personalized + search and recommendations that connect users + + with products or content on your site or application. + + + Much of Miso's search and personalization capability relies on + understanding your catalog in-depth and drawing + + correlations between your catalog and your users' consumption or + purchasing behaviors. In other words, Miso + + discovers that, with high correlation, users who are interested in certain + product attributes would also be + + interested in other products with similar or related attributes. (For + simplicity, we will often overload the word + + "products" to mean items for purchase if you are an eCommerce business, + and content to consume if you are a content + + marketplace.) + + + To fully optimize your search and recommendations, it is important to + provide Miso with Product / Content records + + that are complete and accurate. We define a set of common attributes that + capture the basics of most eCommerce and + + content media products, such as `title`, `description`, `categories`, + `tags`, `material`, `authors`, etc. + + + If your products' characteristics cannot be fully captured by these + fields, we recommend that you specify + + `custom_attributes`. For Miso, the more complete the product information + is, the better its personalized search + + and recommendations become. + + name: Product / Content APIs + - name: Recommendation APIs + - description: >+ + + Miso’s User APIs let you upload, read, and delete User records that tell + Miso about your site’s unique users and + + visitors. + + + ### User records + + User records specify relatively static attributes for a given user, such + as their `age`, `gender`, `city`, etc. As a + + rule of thumb, you should put information here that is not already + captured in your + + [Interaction records](https://api.askmiso.com). For example, + *last_bought_product* is probably not needed here because + + Miso already can tell that from the [Interaction + records](https://api.askmiso.com). + + + Miso will discover the correlations between a user's attributes and their + behaviors on your site. For example, Miso + + might determine that users of a certain age group tend to be interested in + certain products or a certain price + + range. These insights will be taken into account when predicting users' + interests, in particular for new users who + + have not yet generated many interaction records. + + + We define a set of common user attributes for e-Commerce and content media + sites. Some of them, such as `name` are + + for display in the Dojo dashboard only. The rest are for model quality. + Most attributes are optional and you don't + + need to specify them if you don't collect such data. On the other hand, + you can specify your custom user attributes + + in the `custom_attributes` field. Miso will analyze custom user attributes + to improve the model quality as well. + + name: User APIs + - name: Search APIs + - name: Q&A APIs + - description: >+ + + Miso’s Interaction APIs let you manage your Interaction records stored + with Miso. + + + ### Interaction records + + Your Interaction records tell Miso about user interactions with products + and content on your site or application. + + From these interactions, Miso understands how users move through your + conversion funnels: which products or content + + assets attract the attention of each individual user, and which products + or content ultimately will be purchased or + + consumed by each of them. With these insights, Miso makes real-time + tailored recommendations for each user, and + + responds to each of their clicks and views on the site (even for anonymous + users). + + + Interaction records share some common attributes, but are distinguished by + their type. + + Miso captures 23 different interaction types, divided into the following 6 + groups: + + + #### Core click-streams + + * `product_detail_page_view`: a user viewed the detail page for a product + + * `search`: a user made a search request with keywords and (optionally) + filters + + + The above interactions are the core fuel for Miso's personalization + Engines, because they happen in a much higher + + frequency than other interactions and provide an unbiased and + high-fidelity view of users' interests on the site. + + The collection of these interactions is highly important for Miso's + personalization performance. At the minimum, + + you should implement the `product_detail_page_view` interaction to start + with. + + + #### Conversion (eCommerce) + + * `add_to_cart`: a user added a product to the shopping cart + + * `remove_from_cart`: a user removed a product from the shopping cart + + * `checkout`: a user checked out and started the payment process + + * `refund`: a user refunded the product + + * `subscribe`: a user subscribed to a product + + + The above interactions are the main revenue drivers for eCommerce sites. + It’s important to collect them so that + + Miso can not only drive click-through rates, but actually improve the + revenue in a targeted way. To start with, + + you should at least implement the `add_to_cart` interaction. + + + #### Consumption (content media) + + * `read`, `watch`, and `listen` interactions capture how and for how long + a user consumed a piece of content. + + * `add_to_collection`: a user added an product to their personal + collection + + * `remove_from_collection`: a user removed an product from their personal + collection + + + If you are a content site, the above interactions are the main drivers to + users' satisfaction on the site. + + Collecting these interactions allows Miso to drive consumption rates and + consumption durations for the content on + + your site. If you run a content site, you should implement at least one of + these interactions. + + + #### Feedback signals + + * `like`, `dislike`, `share`, `rate`, and `bookmark` are common ways + users express their interests. + + + These are strong signals for Miso to understand each user's preferences + regarding your products or content. You + + should send these signals to Miso if you have any of these UI patterns on + your site. + + + #### Performance Checking + + * `impression`: a user saw or was presented with a product or content + asset (but didn't yet interact with it) + + * `viewable_impression`: the product or content presented is actually + viewed by the user + (for example, minimum of 50% of the pixels were in viewable space for at least one continuous second.) + * `click`: a user clicked on something (for example, a product item) + + + #### Additional click-streams + + * `home_page_view`: user viewed your home page + + * `category_page_view`: a user viewed the page for a specific “group” or + “family” or products or content in your catalog + + * `promo_page_view`: user viewed the promotion pages about certain + products + + * `product_image_view`: user clicked on or otherwise interacted with the + product image (e.g. enlarged the image) + + + The above interactions are additional signals for Miso to understand + users' behavior on the site. + + + #### Custom + + * `custom` interaction types are reserved for you to define your own + business-specific interaction types. + + + Miso will analyze any custom interactions you define to infer users' + interests and preferences. + + + name: Interaction APIs + - description: >+ + + Miso's new Ask API is the next generation of question answering APIs. + + It is designed to provide accurate and concise answers to your questions + + based on your existing product documents. + + + Ask API offers a seamless and effective way to address complex queries in + + a near-realtime fasion. + + + Miso preprocesses your product documents, breaking them into segments. + + When a question is received, Miso finds the most related product and + segments, then + + summarize to a concise and informative answer based on the identified + segments, + + including products related to the question. + + + Possible use case includes: knowledge base, documentation search, customer + support, and more. + + + To use the Ask API, you first submit a "question" you want to ask. + + Question can be any human-readable text. Then a question ID will returned, + + and the question will be processed in the background. + + + After receving question ID, you can then use the question ID to get latest + answer + + to the question as it is being compiled. + + + ---- + + + For example: + + + If you want to know about the inner workings of nginx: + + + ```json + + { + "question":"How nginx works internally?" + } + + ``` + + + The API would response with a question id. + + ```json + + { + "data": { + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a" + }, + "message": "success" + } + + ``` + + + Then you can send a GET request to + `/v1/ask/questions/{question_id}/answer` + + to get the latest answer as it is being compiled and summerized. + + You can use `answer_stage` and `finished` to check current answer status. + + + Here's the response of answer API when data is fetched and being verified, + before answer is summerized: + + ```json + + { + "message": "success", + "data": { + "question": "How nginx works internally?", + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a", + "parent_question_id": null, + "answer_stage": "Verifying possible answers", + "finished": false, + "answer": "Verifying possible answers ...", + "sources": [], + "related_resources": [], + "followup_questions": [] + } + } + + ``` + + + Here's the response when answer is fullly summerized: + + + ```json + + { + "message": "success", + "data": { + "question": "How nginx works internally?", + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a", + "parent_question_id": null, + "answer_stage": "Generating summary", + "finished": true, + "answer": "# How does Nginx work internally?\n\n## Internal requests [1]\n\nNginx differentiates between external and internal requests. External requests...[omitted for simplicity]", + "sources": [ + { + "title": "Internal requests", + "product_id": "9781788623551", + "child_title": "Internal requests", + "child_id": "203", + "snippet": "Internal requests\nNginx differentiates external and internal requests." + }, + { + "title": "5. Nginx Core Architecture", + "product_id": "9781484216569", + "child_title": "5. Nginx Core Architecture", + "child_id": "5", + "snippet": "Checks if the client can access of the requested the resource.\nIt is at this step that Nginx...[omitted]" + }, + { + "title": "2. Managing Nginx", + "product_id": "9781785289538", + "child_title": "2. Managing Nginx", + "child_id": "14", + "snippet": "The Nginx connection processing architecture\nBefore you study...[omitted]" + }, + { + "title": "3. Nginx Core Directives", + "product_id": "9781484216569", + "child_title": "3. Nginx Core Directives", + "child_id": "3", + "snippet": "Understanding the Default Configuration\nThe default configuration...[omitted]" + }, + { + "title": "4. Nginx Modules", + "product_id": "9781484216569", + "child_title": "4. Nginx Modules", + "child_id": "4", + "snippet": "Based on the context like HTTP, MAIL, and STREAM, it creates a ...[omitted]" + } + ], + "related_resources": [], + "followup_questions": [ + "What are the steps involved in processing a request and generating a response in Nginx?", + "How do Nginx modules contribute to the internal workings of Nginx?" + ] + } + } + + ``` + + + Related product IDs will be returned along with human-readable answer. + Related text section in the product will also be quoted. + + + If a product has any children, they will also be matched, `child_id` and + `child_title` will be included for sources belonging to the product's + children. + + + You can use `fq` to limit the search scope, for example, to a specific + product type or other condition. + + + If you only want to search for books (no articles of videos), you can use + `fq=type:book` like this: + + ```json + + { + "question":"How nginx works internally?" + "fq": "type:book" + } + + ``` + + + If you want the answer to contain any other fields, set `source_fl` when + submitting the question. + + name: Ask APIs + - description: > + + Miso's experiment APIs let you do the A/B testing of your current result + with Miso. + + + ### Start an experiment in Dojo. + + + Login to the [dojo](https://dojo.askmiso.com) platform. + + Create an experiment event for you. + + + ### Start running A/B testing in your environment. + + + #### Implement A/B testing code. + + + Here's an example in NodeJS. You can also use any programming language of + you choice. + + ```nodejs + + const axios = require('axios'); + + + async function get_user_experiment_info(api_key, experiment_id, user_id) { + data = {"user_id": user_id} + endpoint = `https://api.askmiso.com/v1/experiments/${experiment_id}/events?api_key=${api_key}` + return await axios.post(endpoint, data) + } + + + const api_key = '' + + const experiment_id = "" + + let user_id = 'user_1234' // use to evaluate a treatment for + + + const user_experiment_info = get_user_experiment_info(api_key, + experiment_id, user_id) + + user_experiment_info.then((response) => { + let variant = response.data['variant'] + if (variant['name'] == "treatment") { + // insert code here to show "treatment" variant + } else if (variant['name'] == "control") { + // insert code here to show "control" variant + } else { + // unexpected variant name. raise error + throw new Error(`Unexpected variant name ${variant["name"]}`) + } + }) + + ``` + + + If you implement A/B testing code in FrontEnd, like JavaScript, and are + also worried about exploding the secret api_key. You can choose to use + anonymous_id with the public_api_key for this API. Here's an example. + + + ```javascript + + const apiKey = ''; + + const experimentId = ''; + + const anonymous_id = 'user_1234'; // use to evaluate a treatment for + + + function getUserExperimentInfo(apiKey, experimentId, anonymous_id) { + const data = { + user_id: anonymous_id + }; + const url = `https://api.askmiso.com/v1/experiments/${experimentId}/events?api_key=${apiKey}`; + const options = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }; + + return window.fetch(url, options) + .then((response) => response.json()) + .then((data) => { + const variantName = data.variant.name; + if (variantName === `${this.treatmentName}`) { + // insert code here to show 'treatment' variant + } else if (variantName === `${this.controlName}`) { + // insert code here to show 'control' variant + } else { + // unexpected variant name, throw error + throw new Error(`Unexpected variant name: ${variantName}`); + } + }) + .catch((error) => console.error(error)); + } + + + getUserExperimentInfo(apiKey, experimentId, anonymous_id); + + ``` + name: Experiment APIs + - description: > + + The Bulk API provides an efficient interface for making multiple Search / + Recommendations / Q&A requests in one API + + call. These requests will be executed concurrently at the Miso side, and + returned at once when all of them are finished. + + This API is particularly useful when you need to invoke multiple Miso APIs + to respond to a user request. + + Using this API, you can batch multiple API calls into one, and + significantly save the network round-trip times. + + + ### Request schema + + The request schema for this API call is as follow: + + ``` + + POST /v1/bulk + + { + "requests": [ + { + "api_name": "search/search", + "body": { ... } + }, + { + "api_name": "recommendation/product_to_product", + "body": { ... } + }, + ... + ] + } + + ``` + + Each request object should contain: + + * **api_name**: name of the API you want to access. The name should + contain a slash `/`. + + For example, search/search for search requests, search/autocomplete for + autocomplete requests, etc. + + * **body**: the complete request body as if you are making the API request + individually. + + + Any errors in one of the requests will be returned, and will not prevent + other requests from being + + executed. + + + ### Response Schema + + Bulk API endpoint will return the API responses in the same order as they + appear in the request. + + For example, if the Bulk API request is like the following: + + ``` + + POST /v1/bulk + + { + "requests": [ + {... request 1 ...}, + {... request 2 ...} + ] + } + + ``` + + + The response will be like: + + ``` + + { + "data": [ + // response for request 1 + { + "error": false, + "status_code": 200, + "body": { ... } + }, + // response for request 2 + { + "error": false, + "status_code": 200, + "body": { ... } + } + ] + } + + ``` + + + Each response object will contain the following fields: + + * **error**: whether there was an error with the request. You should check + this field to determine whether to + + perform error handling. + + * **status_code**: status code of the request. + + * **body**: the response body of the request (as if the request was sent + individually). + + + Let's see a complete example with MovieLens data. The following requests + will issue two requests in one API call that + + return the `Sci-Fi` movies directed by + + *Ridley Scott*, and *James Cameron* respectively in the first and second + responses: + + ``` + + POST /v1/bulk + + { + "requests": [ + { + "api_name": "search/search", + "body": { + "user_id": "test_user", + "q": "sci-fi", + "fq": "custom_attributes.director:\"Ridley Scott\"" + } + }, + { + "api_name": "search/search", + "body": { + "user_id": "test_user", + "q": "sci-fi", + "fq": "custom_attributes.director:\"James Cameron\"" + } + } + ] + } + + ``` + + The response will be like: + + ``` + + { + "data": [ + { + "error": false, + "status_code": 200, + "body": { + "data": { + "took": 136, + "miso_id": "19ab254c-5fb8-11ec-bd48-b20169940af9", + "products": [ + { + "product_id": "blade-runner", + "title": "Blade Runner (1982)" + } + ], + "total": 6, + "start": 0 + } + } + }, + { + "error": false, + "status_code": 200, + "body": { + "data": { + "took": 116, + "miso_id": "19ab254c-5fb8-11ec-bd48-b20169940af9", + "products": [ + { + "product_id": "avatar", + "title": "Avatar (2009)" + } + ], + "total": 10, + "start": 0 + } + } + } + ] + } + + ``` + name: Bulk API +paths: + /v1/experiments/{experiment_id_or_slug}/events: + post: + tags: + - Experiment APIs + summary: Send Experiment Event + operationId: ExperimentApIs_sendEvent + security: + - Secret API Key: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExperimentRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/SendExperimentResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ExperimentApIsSendEventResponse' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ExperimentApIsSendEvent404Response' + '422': + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/ExperimentApIsSendEvent422Response' + /v1/interactions: + post: + tags: + - Interaction APIs + summary: Interaction Upload API + operationId: InteractionApIs_insertRecords + security: + - Secret API Key: [] + - Publishable API Key: [] + description: >- + Bulk API to insert Interaction records. This endpoint accepts POST + requests with JSON data containing an array of + + Interaction records wrapped in a dictionary: + + + ``` + + POST /v1/interactions + + + {"data": [interaction_1, interaction_2, interaction_3]} + + ``` + + + For real-time tracking, we recommend sending the interaction records to + this API as soon as the interactions take + + place. This API is also ideal for bulk-inserting historical records that + your site collected before using Miso. + Miso can analyze the historical records and provide personalization for your users from the get-go. We recommend + limiting your calls to around 10,000 records at a time to avoid memory issues or timeout risks. + + ### Anonymous users + + For users who did not sign in, we can still make recommendations for + them by tracking their `anonymous_id`, which is a pseudo-unique + substitute for the `user_id`. The personalization and search APIs all + accept `anonymous_id` in the place of `user_id` to return tailored + results for anonymous users. + + + When an anonymous user later signs in and the `user_id` and + `anonymous_id` are both present, the `anonymous_id` will be linked to + the `user_id` along with the past interactions associated with it. + + + The typical mechanism to generate an `anonymous_id` is to use cookies or + the browser localStorage. However, if you don't collect such information + in your historical records, a hash of the IP address, optionally + combined with the User-Agent string, is also a reasonable substitute for + `anonymous_id`, and is most likely collected by your web server logs + already. + + + ### Schema validation + + The Interaction Upload API will validate the inserted records against + the API schema. + + Any schema errors will cause the whole request to fail, and none of the + records will be inserted (`status_code=422`). + + You should check the `response.errors` field to see if there are any + errors. + + + For example, the response below means there are no errors + (`status_code=200`): + + ```javascript + + { + "message": "success" + } + + ``` + + + Any schema error will cause the whole request to fail: the API will + return `status_code=422`, and none of the + + records will be inserted. You should check `data` field in the response + to see where the errors are located. For + + example, the response below means there are schema errors in the + interaction record at index 0: + + ```javascript + + { + "errors": true, // there are errors. please check! + "message": "None of the records were inserted because at least one of them contained schema errors. Please see the `data` field for details.", + "data": [ + "data.0.product_ids is invalid. The attribute was expected to be of type ''array', 'null'' but type 'string' was given.", + "data.0.timestamp is invalid. The attribute should match the 'date-time' format." + ] + } + + ``` + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionCreateOut' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionApIsInsertRecordsResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionApIsInsertRecords403Response' + '422': + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionApIsInsertRecords422Response' + delete: + tags: + - Interaction APIs + summary: Interaction Delete API + operationId: InteractionApIs_removeData + security: + - Secret API Key: [] + description: >- + The endpoint will delete users' interaction data entirely from the log + of interactions you have uploaded to Miso. + + This API enables you to comply with users' data removal requests (i.e. + right to be forgotten). Once a user's + + interactions are deleted, we will not be able to recover them, and they + will no longer contribute to model + + training. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionDeleteOut' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/products: + post: + tags: + - Product / Content APIs + summary: Product / Content Upload API + operationId: ProductContentApIs_bulkInsert + security: + - Secret API Key: [] + description: >- + Bulk API to insert Product records. This API endpoint accepts POST + requests with JSON data + + containing a list of Product / Content records wrapped in a dictionary: + + ``` + + POST /v1/products + + + {"data": [product_1, product_2, product_3]} + + ``` + + + Each product is uniquely identified by its `product_id`. If a record + with the same `product_id` + + already exists in the dataset, the existing one will be **replaced** by + the insertion (no + + partial update is allowed at this time). We recommend limiting your + calls to around 100 + + records at a time to avoid memory issues or timeout risks. + + + ### Schema validation + + This API validates the inserted records against the API schema; any + schema error will cause + + the whole request to fail (`status_code=422`), and none of the records + will be inserted. You + + should check the `response.errors` field to see if there are any errors. + For example, + + the response below means there are no errors (`status_code=200`): + + + ```json + + { + "message": "success", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + A common source of errors when uploading Product records is that the + custom attributes' data + + types are not consistent with the data types of the existing records. In + such cases, + + you can check the individual error message in the `data` array. For + example, if there is an + + error regarding the second record you tried to insert, the response + might look like: + + + ```json + + { + "errors": true, // there are errors. please check! + "data": [ + "data.0.custom_attributes.designer is invalid. Its data type is not consistent with other records", + "data.0.product_id is invalid. The attribute expected to be of type 'string', but 'array' is given.", + "data.0.created_at is invalid. The attribute should match 'date-time' format." + ] + } + + ``` + + + ### Internationalization (I18N) + + Miso has the built-in support for majority of Western European + languages, including `English`, `French`, `German`, + + `Spanish`, `Italian`, `Dutch`, `Russian`, and `Ukrainian`, as well as, + major Asian languages, including `Mandarin` + (both Simplified and Traditional), `Japanese`, and `Korean`. + + In Dojo, you can choose the *Primary Language* for your product catalog + (default is English). + + However, you can also have more than one language in your product + catalog that is + + beyond your primary languages using the `i18n_$LN` fields (replace `$LN` + with the [two-letter language + code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) of your + choice), + + and let Miso apply the language-specific preprocessing for you, such as + tokenization, stemming, elision + + removal, folding, decompounding, and traditional to simplified Chinese + conversion. + + + For example, you may have a product called "Arizona, Green Tea with + Ginseng & Honey" in your catalog, and you also + + sell it in your Spanish, French, and Chinese sites, and want your + customers to be able to search for this product + + in their native languages. + + + In this case, your product records will like the following sample + record, where English is the primary language of + + the record, and `i18n_es`, `i18n_fr`, `i18n_zh` fields contain product + details in their corresponding languages. + + ```javascript + + { + "product_id": "arizona-ginseng-honey", + // the primary language is English + "title": "Arizona, Green Tea with Ginseng & Honey", + // ... other product details in English + "i18n_es": { + "title": "AriZona, Té verde con ginseng y miel" + // ... other product details in Spanish + }, + "i18n_fr": { + "title": "AriZona - Thé Vert Aromatisé au Miel" + // ... other product details in French + }, + "i18n_zh": { + "title": "美國ARIZONA亞歷桑納 - 蜂蜜人蔘綠茶" + // ... other product details in Chinese + } + } + ``` + + In this way, your customer can find this product with any of the + following search queries + + without additional configuration: + + * `arizona green tea` + + * `arizona te verde` + + * `arizona the vert` + + * `arizona 綠茶` + + + The similar concept applies to Autocomplete as well. You can specify a + `language` parameter + + in the requests to Autocomplete API, and the autocomplete results for + the specific language + + will be returned. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProductBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CreateResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ProductContentApIsBulkInsertResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ProductContentApIsBulkInsert401Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ProductContentApIsBulkInsert403Response' + '422': + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/ProductContentApIsBulkInsert422Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ProductContentApIsBulkInsert500Response' + /v1/products/{product_id}: + get: + tags: + - Product / Content APIs + summary: Product / Content Read API + operationId: ProductContentApIs_getProductDetails + security: + - Secret API Key: [] + description: >- + This API endpoint retrieves the details of a specific product / content + using its `product_id`. + + To fetch the product / content information, make a GET request to the + following URL: + + + **Notice**: Make sure the product_id is an urlencode string. + + + ``` + + GET /v1/products/{product_id} + + ``` + + + Replace `{product_id}` with the unique identifier of the product / + content you wish to fetch. + + + ## Response Format + + + The API will return the product / content details in a JSON object if + the given `product_id` + + is valid and exists in the system. The JSON object will include fields + like `title`, + + `description`, `price`, `images`, and any internationalization fields + (`i18n_$LN`). + + + ### Example Response + + + Here's an example of a successful API response for a product / content + with the `product_id` + + "arizona-ginseng-honey": + + + ```json + + { + "product_id": "arizona-ginseng-honey", + "title": "Arizona, Green Tea with Ginseng & Honey", + "description": "A refreshing and delicious blend of green tea with ginseng and honey.", + "price": 1.99, + "i18n_es": { + "title": "AriZona, Té verde con ginseng y miel" + // ... other product details in Spanish + }, + "i18n_fr": { + "title": "AriZona - Thé Vert Aromatisé au Miel" + // ... other product details in French + }, + "i18n_zh": { + "title": "美國ARIZONA亞歷桑納 - 蜂蜜人蔘綠茶" + // ... other product details in Chinese + } + } + + ``` + + + If the provided `product_id` is invalid or does not exist in the system, + the API will return + + an error response with a `status_code=404`. + + + ### Example Error Response + + ```json + + { + "message": "not found" + } + + ``` + parameters: + - required: true + schema: + title: Product Id + maxLength: 512 + type: string + name: product_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductReadOut' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: >- + #/components/schemas/ProductContentApIsGetProductDetailsResponse + '404': + description: Product not Found + content: + application/json: + schema: + $ref: >- + #/components/schemas/ProductContentApIsGetProductDetails404Response + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: >- + #/components/schemas/ProductContentApIsGetProductDetails500Response + delete: + tags: + - Product / Content APIs + summary: Product / Content Delete API + operationId: ProductContentApIs_deleteProductContent + security: + - Secret API Key: [] + description: >- + This API endpoint allows you to delete a specific product / content from + the system using its + + `product_id`. To remove a product, make a DELETE request to: + + + **Notice**: Make sure the product_id is an urlencode string. + + + ``` + + DELETE /v1/products/{product_id} + + ``` + + + Replace `{product_id}` with the unique identifier of the product / + content you wish to delete. + + + ## Response Format + + + The API will return a JSON object indicating the success or failure of + the deletion request. + + If the deletion is successful, the `status_code` will be `200`, and the + `message` field will + + confirm the successful deletion. + + + ### Example Successful Deletion Response + + + ```json + + { + "message": "deleted", + "data": [ + { + "task_id": "{task_id}" + } + ] + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/products/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + parameters: + - required: true + schema: + title: Product Id + maxLength: 512 + type: string + name: product_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: >- + #/components/schemas/ProductContentApIsDeleteProductContentResponse + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: >- + #/components/schemas/ProductContentApIsDeleteProductContent401Response + '403': + description: Forbidden + content: + application/json: + schema: + $ref: >- + #/components/schemas/ProductContentApIsDeleteProductContent403Response + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: >- + #/components/schemas/ProductContentApIsDeleteProductContent500Response + /v1/products/_ids: + get: + tags: + - Product / Content APIs + summary: Product / Content ID List API + operationId: ProductContentApIs_getProductIds + security: + - Secret API Key: [] + description: >- + This API endpoint allows you to fetch the unique identifiers + (product_ids) of all products + + stored in the app. To get a list of product_ids, make a GET request to + the following URL: + + + ``` + + GET /v1/products/_ids + + ``` + + + ## Response Format + + + The API will return an array of product_ids in a JSON object. The + `status_code` will be `200` + + if the request is successful. If any error occurs during the request, + the `status_code` will + + not be `200` and the `message` field will indicate the error. + + + ### Example Successful Response + + + ```json + + { + "message": "success", + "data": { + "ids": [ + "product_1", + "product_2", + "product_3", + // ... more product_ids + ] + } + } + + ``` + + + ### Example Error Response + + + If the dataset cannot be found, the API will return a `404` error: + + + ```json + + { + "status_code": 404, + "message": "not found" + } + + ``` + + + If another error occurs during the request, the API will return a `500` + error + + + ```json + + { + "message": "Something went wrong. Please contact miso product team." + } + + ``` + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductListOut' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ProductContentApIsGetProductIdsResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: >- + #/components/schemas/ProductContentApIsGetProductIds500Response + /v1/products/_delete: + post: + tags: + - Product / Content APIs + summary: Product / Content Bulk Delete API + operationId: ProductContentApIs_bulkDelete + security: + - Secret API Key: [] + description: >- + This API endpoint allows you to delete multiple products by providing + their product_ids. + + + To delete multiple products, make a POST request to the following URL: + + + ``` + + POST /v1/products/_delete + + ``` + + + The request body should contain a JSON object with an array of + product_ids: + + + ```json + + { + "data": { + "product_ids": [ + "product-1", + "product-2", + // ... more product_ids to delete + ] + } + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `message` and an array of + `data` + + containing a `task_id` that can be used to get the status of the bulk + deletion process. + + + #### Example Successful Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/products/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProductBulkDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ProductContentApIsBulkDeleteResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ProductContentApIsBulkDelete401Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ProductContentApIsBulkDelete403Response' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ProductContentApIsBulkDelete500Response' + /v1/users: + post: + tags: + - User APIs + summary: User Upload API + operationId: UserApIs_bulkUpload + security: + - Secret API Key: [] + description: >- + Bulk API to insert User records. This API endpoint accepts POST requests + with JSON data + + containing a list of User records wrapped in a dictionary. + + + ``` + + POST /v1/users + + ``` + + + ```json + + { + "data": [user_1, user_2, user_3] + } + + ``` + + + If a record with the same `user_id` already exists in the dataset, the + existing record will + + be replaced (no partial update is allowed at this time). We recommend + limiting your calls to + + around 100 records at a time to avoid memory issues or timeout risks. + + + ### Schema validation + + + This API validates the inserted records against the API schema. Any + schema error will cause + + the whole request to fail (`status_code=422`), and none of the records + will be inserted. As + + long as the request passes the schema validation, the API will return + `status_code=200`, but + + you should still check if there is any error occurring with individual + records. + + + ```json + + { + "errors": true, + "data": [ + "data.0.user_id is invalid. The attribute was expected to be a `string`" + ] + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `task_id` that can be used to + retrieve. + + + #### Example Successful Response + + + ```json + + { + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CreateResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsBulkUploadResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsBulkUpload401Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsBulkUpload403Response' + '422': + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsBulkUpload422Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsBulkUpload500Response' + /v1/users/{user_id}: + get: + tags: + - User APIs + summary: User Read API + operationId: UserApIs_getUserDetails + security: + - Secret API Key: [] + description: >- + This API endpoint retrieves the details of a specific user using their + `user_id`. + + To fetch the user information, make a GET request to the following URL: + + + **Notice**: Make sure the user_id is an urlencode string. + + + ``` + + GET /v1/users/{user_id} + + ``` + + + Replace `{user_id}` with the unique identifier of the user you wish to + fetch. + + + ## Response Format + + + The API will return the user details in a JSON object if the given + `user_id` is valid and + + exists in the system. The JSON object will include fields like `name`, + `age`, `city`, `gender` + + , and other user information. + + + ### Example Response + + + Here's an example of a successful API response for a user with the + `user_id` "user123": + + + ```json + + { + "message": "success", + "data": { + "user_id": "user123", + "name": "johndoe", + // ... other user details + } + } + + ``` + + + If the provided `user_id` is invalid or does not exist in the system, + the API will return an + + error response with a `status_code=404`. + + + ### Example Error Response + + + ```json + + { + "message": "not found" + } + + ``` + parameters: + - required: true + schema: + title: Userid + maxLength: 512 + type: string + name: userId + in: query + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/UserReadOut' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsGetUserDetailsResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsGetUserDetails403Response' + '404': + description: User not Found + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsGetUserDetails404Response' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsGetUserDetails500Response' + delete: + tags: + - User APIs + summary: User Delete API + operationId: UserApIs_deleteUser + security: + - Secret API Key: [] + description: >- + This API endpoint allows you to delete a specific user from the system + using their `user_id`. + + + **Notice**: Make sure the user_id is an urlencode string. + + + To remove a user, make a DELETE request to: + + + ``` + + DELETE /v1/users/{user_id} + + ``` + + + Replace `{user_id}` with the unique identifier of the user you wish to + delete. + + + ## Response Format + + + The API will return a JSON object with a `task_id` that can be used to + retrieve. + + + #### Example Error Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + parameters: + - required: true + schema: + title: User Id + maxLength: 512 + type: string + name: user_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsDeleteUserResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsDeleteUser401Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsDeleteUser403Response' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsDeleteUser500Response' + /v1/users/_delete: + post: + tags: + - User APIs + summary: User Bulk Delete API + operationId: UserApIs_bulkUserDelete + security: + - Secret API Key: [] + description: >- + This API endpoint allows you to delete multiple users by providing their + user_ids. + + + To delete multiple users, make a POST request to the following URL: + + + ``` + + POST /v1/users/_delete + + ``` + + + The request body should contain a JSON object with an array of user_ids: + + + ```json + + { + "data": { + "user_ids": [ + "product-1", + "product-2", + // ... more product_ids to delete + ] + } + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `message` and an array of + `data` + + containing a `task_id` that can be used to get the status of the bulk + deletion process. + + + #### Example Successful Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserBulkDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsBulkUserDeleteResponse' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsBulkUserDelete401Response' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsBulkUserDelete403Response' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/UserApIsBulkUserDelete500Response' + /v1/search/search: + post: + tags: + - Search APIs + summary: Search API + operationId: SearchApIs_searchRequest + security: + - Secret API Key: [] + description: >- + The Search API provides personalized, typo-correcting, semantic search + for your site. + + You send this API the search queries users entered, and the API returns + the relevant search results tailored to your + + users' interests. + + + ### Personalized search + + Personalized search is a key factor in driving search conversion on many + major sites. + + It is particularly powerful for short search queries (<= 3 keywords), + which account for [up to 80% of search traffic in the + U.S.](https://www.statista.com/statistics/269740/number-of-search-terms-in-internet-research-in-the-us/), + + but are usually the hardest to get right with traditional search + engines. This is because shorter search queries tend + + to match a larger number of results, but there + + is not enough information in the query strings alone to determine which + results the users + + are actually looking for. + + + For example, when users search for *jeans* on Levi's.com, it is + + impossible to know which *jeans* the user is looking for, among + thousands of options. + + Even if the user adds: *jeans for men*, it is still unclear to a + traditional search engine what style, material, + + or size the user wants. + + + In the contrary, with Miso's personalized search, we not only analyze + the search query itself, but also take into + + account the *context* in which the searches are made, including who are + the users, where are they from, what are their + + past interactions on the site, what other searches the user made, etc. + These signals together + + allow Miso to generate more than 15% to 20% higher search conversion + rate than the traditional non-personalized search + + engines. + + + ### Balancing relevancy and personalization + + Although personalization is a powerful technique, over-using it can be + harmful to the user experiences. In the + + context of search optimization, the relevancy of the search results are + still the most important criteria, and we + + don't want personalization to overwhelm the search relevancy. + + For example, when users search for a very specific term, or directly + search for the product names, + + Miso's algorithm will respond with the most relevant search results + first, and then only apply personalization to + + rerank more ambiguous search results. + + + + ### Basic usage + + For every search query, you let Miso know the user's `user_id` and the + search keywords in the API request body, + + for example: + + ``` + + POST /v1/search/search + + { + "q": "jeans", + "user_id": "user-123" + } + + ``` + + + For site visitors who do not sign in, you can let Miso know the + `anonymous_id` of this visitor: + + ``` + + POST /v1/search/search + + { + "q": "jeans", + "anonymous_id": "visitor-123" + } + + ``` + + + ### Search response + + With the query above, Miso responds with the search results like the + following: + + ```javascript + + { + "message":"success", + "data":{ + "took":50, + "total":30, + "start":0, + "miso_id":"f34b90de-086b-11eb-b498-1ee8abb1818b", + "products":[ + { + "product_id":"505-regular-fit-mens-jeans", + "title":"The 505 Regular Fit Men's Jeans", + "url":"https://levi.com/jeans/505-regular-fit-mens-jeans/", + "size":"29", + "material":"Cotton", + "color":"Rinse - Dark Wash", + "_search_score": 78.12, + "_personalization_score": 0.98 + } + ], + "spellcheck":{ + "spelling_errors":false + } + + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **total**: the total number of matched products. You can paginate + through all the products by using the combination + + of *start* and *rows* parameters (see *Request Body Schema* below) + + * **miso_id**: a UUID of the search request. You should include + **miso_id** in the Interaction records for every + + interactions that result from this search request, e.g. user + click-through a product in the search results. + + Miso use miso_id to track the search performance and fine-tune the + algorithm accordingly. + + * **products**: an array of [Product records](https://api.askmiso.com) + that match the search + + query, ranked in the order of relevancy and + + probability that the user will be interested in this product. By + default, only the `product_id` of the Product is + + returned. You can ask Miso to return additional fields by using the *fl* + parameter (see *Request Body Schema* below) + + * **products[ ]._search_score**: the search relevancy score of the + products based on keyword matching and Miso's + + semantic matching. This score is similar to traditional Lucene search + score. + + * **products[ ]._personalization_score**: the score assigned by Miso's + personalization algorithm based on users' + + profile and their interactions on the site. This score quantifies the + probability of whether users will be + + interested in this product or not. + + * **spellcheck**: an dictionary contains spell checking information. + + + ### Spellcheck and auto-correction + + According to a [Microsoft Research + study](https://www.aclweb.org/anthology/W04-3238.pdf), roughly 10-15% of + the + + queries sent to search engines contain errors. A misspelled search + keyword often results in poor search + + quality, and users have been accustomed to Google's automatic spelling + correction functionality and expect the same + + on your site. + + + However, correcting spelling and typos at scale is a non-trivial machine + learning problem. + + Miso's spellcheck is based on a sequence-to-sequence + + deep learning model, trained and updated regularly on a corpus of + billion tokens. It detects hard-to-spot errors, + + auto-correct keywords according to its context, and recognize terms that + are newer or lesser known. + + + Spellcheck is always on for every search request so you don't need to + turn it on. + + What you need to decide is whether to turn on *auto spelling + correction*. + + For example, the following search request turns on the + auto-spelling-correction, and Miso will automatically + + replace any misspelled queries with their correct spelling: + + ``` + + POST /v1/search/search + + { + "q":"whte denem jeans", + "user_id":"user-123", + "spellcheck":{ + "enable_auto_spelling_correction":true + } + } + + ``` + + The API will respond: + + ```javascript + + { + "message":"success", + "data":{ + "took":50, + "total":30, + "start":0, + "miso_id":"f34b90de-086b-11eb-b498-1ee8abb1818b", + "spellcheck":{ + "spelling_errors":true, + "auto_spelling_correction":true, + "original_query":"whte denem jeans", + "original_query_with_markups":"whte denem jeans", + "corrected_query":"white denim jeans", + "corrected_query_with_markups":"white denim jeans" + }, + "products":[ + ...... + ] + } + } + + ``` + + The *spellcheck* object contains the following fields: + + * **spelling_errors** indicates whether there is a spelling error in the + query + + * **auto_spelling_correction** indicates whether the search query has + been replaced with the *corrected_query* + + * **original_query** the original search query + + * **original_query_with_markups** the original search query with the + misspelled words highlighted by \ html tags + + * **corrected_query** the search query with misspelling and typos + corrected + + * **corrected_query_with_markups** the search query with misspelling and + typos corrected, and the corrected parts are highlighted by \ + html tags + + + You can opt-out the auto-spelling-correction by setting + `enable_auto_spelling_correction=false`. For example: + + ``` + + POST /v1/search/search + + { + "q":"whte denem jeans", + "user_id":"user-123", + "spellcheck":{ + "enable_auto_spelling_correction":false + } + } + + ``` + + In this case, Miso will still run spellcheck against the query. However, + users' queries will be used as it is, + + and **auto_spelling_correction** field will be *false*. + + + ### Boosting and Diversification + + While Miso's personalized search can drive conversion by showing search + results that are tailored + + to users' interests, ultimately, it is important to make sure that the + search results meet your business goals. + + To that end, Miso provides a great set of tools that enable you to + fine-tune the search ranking and make it aligned + with your goals. + + One great example is **boosting**. Boosting allows you to define a query + that can be used to boost a + + subset of products to the top of the ranking, or to specific *boost + positions*. You can use boosting to run + + different kinds of promotion campaigns, or to promote certain set of + products for individual users that you know + + they will be interested in. + + + For example, consider a scenario where you need to promote the sales of + Nike's products. Then, you might want to + + use the query below, that will promote the sneakers whose brand are + `Nike` to the top of the search result: + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote the + Nike products which have also been tagged + + as `ON SALE`: + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + + You can have as complex boosting logic as you want in the boosting + query, + + but it is worth mentioning that Miso will only boost + + products that are relevant and have high likelihood to convert. In other + words, Miso will not boost low + + performance products even if they match the boosting query. + + + Depending on your boosting rules, in certain cases, you would like to + prevent search results from becoming + + too "plain" due to boosting. For example, you don't want the first page + of the search result to contain only Nike + + products. + + + With Miso, you have two tools to avoid so. First, you can specify + `boost_positions` to place boosted products at + + specific positions in the ranking. For example, the query below will + place boosted products only at the first, + + fourth, seventh places in the ranking (positions are 0-based), and place + the remaining products in their original + + ranking, skipping these three positions. + + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3, 6] + } + + ``` + + + The second tool is `diversification`. Miso's `diversification` algorithm + will maintain a desired minimum distance + + between any two products that have the same attributes. For example, the + + following query will make sure products made by the same *brand* are at + least two slots apart from each + + other in the search results. + + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 2} + } + } + + ``` + + + It is also very often to use both "boost_positions" and + "diversification" at the same time to make sure that + + (1) the search results are not overwhelmed by the boosted products, and + (2) there is a good mix of products from + + different brands showing side-by-side to increase product discovery + rate. + + + ### Result ordering + + + You can override Miso's default ranking order by specifing a list of + fields for Miso to rank the search results. + + These fields can be any numeric or boolean fields in your Product + catalog, or one of the following special + + fields: + + * **_personalization_score**: the score that estimates the probability + that a user will interact with a product + + determined by Miso's personalization algorithm. The range of this score + is between [0, 1]. The scores are + + non-uniformly distributed. The Products that are relevant to users' + interests will have scores much closer to 1, + + than products that are not. + + * **_search_score**: the score that rates the degree of "match" between + search keywords and a product's catalog + + with a focus on Product's titles. + + This score is mostly based on a variant of + [BM25](https://en.wikipedia.org/wiki/Okapi_BM25), but additionally + + consider the term proximity, typos, term semantic similarity. + + Its value is always larger than 0, but its range is unbounded. + + * **_boosting_score**: a binary score indicates whether a Product is + boosted by your boosting query. + + * **_geo_distance**: distance between any point on map, `geo` must be + specified when sorting with this field. + + + For example, the following query returns all the Products (because + `q=*`), ranked by the `_personalization_score` + + first, and then by the values in the `custom_attributes.promote_score` + field in the Product catalog, then the + + distance between the product and New York city. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.05" + }, + "order": "desc" + }, + { + "field": "custom_attributes.promote_score", + "order": "desc" + }, + { + "field": "_geo_distance", + "geo": { + "lat": 40.711967, + "lon": -74.006076, + } + "order": "asc" + } + ] + } + + ``` + + #### Mathematical Functions + + Miso supports mathematical functions that transform and combine + different sorting criteria into one. + + For example, a powerful strategy to improve gross merchandise volume + (GMV), but maintain user + + experience is + + to sort the products based on the multiplication of personalization + scores and product prices. You can achieve this with + + the following `order_by` query: + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score * pow(sale_price, 0.5)", + "order": "desc" + } + + ] + } + + ``` + + Function `pow(sale_price, 0.5)` takes the square root of the sale price + and avoids very expensive products from + + overwhelming the ranking. + + + Miso supports all the common mathematical operators including `+`, `-`, + `*`, `/`, `%`, `^`, `**`, and more + + advanced functions including: + * Power functions: `pow(X, y)`, `sqrt(X)` + * Exponents and logarithms: `exp(X)`, `log(X)`, `log2(X)`, `log10(X)` + * Element-wise maximum / minimum: `maximum(X, y)`, `minimum(X, y)` + * Absolute function: `abs(X)` + * Rounding functions: `round(X)`, `floor(X)`, `ceil(X)` + * Trigonometric functions: `sin(X)`, `cos(X)`, `tan(X)`, `asin(X)`, `acos(X)`, `atan(X)` + + + #### Soft Tie-Breaker + + For scores that have granular resolutions, for example + `_personalization_score`,`_search_scores`, or + + Products' `sale_price`, we usually don't want to rank Products by their + raw values. After all, + + a 0.001 difference in `_personalization_score` or $0.01 difference in + sale price typically will not make a + + difference in users' preferences. In such cases, *soft* tie-breakers + should be used to smooth out these minor + + differences in scores. + + + For example, in the query above, we apply a soft tie-breaker to + `_personalization_score` based on score values' + + relative difference. Specifically, we first sort the score's raw values + in the descending order, then + + for two consecutive values, if their relative difference is no more than + a pre-defined threshold + + (in this case `0.05` or `5%`), they are considered as a tie, and the + next field + + (i.e. `custom_attributes.promote_score`) + + will be used to determine their ranking. + + + It is also common to utilize tie-breakers to combine the effect of two + types of scores. For example, in the + + following query, we set `threshold=0.2` or `20%` for + `_personalization_score`, then only the + + Products that users are 20% more likely to interact with will be ranked + higher, the remaining Products will be + + ranked by their sale prices. In this way, we combine the effect of + personalization score and sale prices, where + + the Products are roughly ranked by personalization, but favor the + pricier products when they have comparable + + personalization scores. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "sale_price", + "order": "desc" + } + + ] + } + + ``` + + + Also note that, when search keywords are present, it is recommended to + always include `_search_score` + + as the first field (plus a tie-breaker) to maintain the relevance of the + search results. A tie-breaker is usually + + required as well to let the subsequent score have effect to the ranking. + + ``` + + { + "q": "toy story", + "order_by": [ + { + "field": "_search_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "sale_price", + "order": "desc" + } + + ] + } + + ``` + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SearchRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/SearchResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/search/autocomplete: + post: + tags: + - Search APIs + summary: Autocomplete API + operationId: SearchApIs_autocompleteRequest + security: + - Secret API Key: [] + description: >- + The Autocompletion API provides real-time, personalized, typo resistant + typeahead for your search bar. + + You send this API what users are currently typing, and the API returns + the complete search query suggestions. + + + ### Personalized typeahead + + Personalized typeahead is an extreme example of personalized search. The + personalization starts immediately when + + users enter even just one character. The typeahead results are + personalized so that the entries most likely to drive + + conversion for the current user are ranked at the top. Miso will predict + what the user is looking for in real-time + + based on their interests and past behaviors. + + + ### Basic usage + + The request schema of Autocompletion API is similar to that of Search + API: you put the search query users typed so + + far, and the `user_id` or `anonymous_id` for Miso to identify the + current user. + + For example, when a user types the first character `r`, you send Miso + the following request: + + ``` + + POST /v1/search/autocomplete + + { + "q":"r", + "user_id":"user-123" + } + + ``` + + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 50, + "miso_id": "e93a6d02-0a7a-11eb-a896-d28586dc1386", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + { + "text": "Reservoir Dogs (1992)", + "text_with_markups": "Reservoir Dogs (1992)", + "product": { + "product_id": "tmdb-500" + } + }, + ... + ] + } + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **completions**: an dictionary of autocompletion candidates from + different sources. By default, we only run + + autocompletion against the titles of products, but you can choose to get + autocompletion candidates from other fields + + using the `completion_fields` parameters. + + * **completions.title[].text**: the text of completion candidates + + * **completions.title[].text_with_markups**: the completion candidates + with the part of text that users + + haven't typed yet surrounded by \ HTML tags. + + * **completions.title[].product**: the product record whose title + matches the autocompletion candidate. This object can be used to + implement direct-to-product links: when they click on the link they will + go + + directly to the product page instead of the search result page. By + default, only the `product_id` field is returned, + you use `fl` request parameter to get more fields returned in the product object. + + + ### Typo resistance + + Miso's autocompletion algorithm accepts up to 4 typos in the query + string. For example, users may try to find the + movie `Robin Hood`, but make two typos in the query, which becomes `robonhood` instead (`robin`->`robon`, and a space is missing). + + ``` + + POST /v1/search/autocomplete + + { + "q":"robanhood", + "user_id":"user-123" + } + + ``` + + + Miso can still find the movie "*Robin Hood: Prince of Thieves*" as a + autocompletion candidate. + + ```javascript + + { + "message": "success", + "data": { + "took": 50, + "miso_id": "e93a6d02-0a7a-11eb-a896-d28586dc1386", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + ... + ] + } + } + } + + ``` + + + ### Completion fields + + The auto-completions are made against your product attributes. By + default, Miso finds completion candidates from the + + `title` field. The `completion_fields` parameter + + lets you specify the attributes you want to perform auto-completion for. + + For example, the following query will return auto-completion candidates + from the `title` and a custom attribute + + field:`custom_attributes.director`. + + ``` + + POST /v1/search/autocomplete + + { + "q": "rob", + "user_id": "user-123", + "completion_fields": [ + "title", + "custom_attributes.director" + ] + } + + ``` + + The response will be like the following: + + ```javascript + + { + "message": "success", + "data": { + "took": 52, + "miso_id": "16d95080-0bb0-11eb-948d-66359cf29022", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + { + "text": "RoboCop (1987)", + "text_with_markups": "RoboCop (1987)", + "product": { + "product_id": "tmdb-5548" + } + }, + ... + ], + "custom_attributes.director": [ + { + "text": "Robert Z. Leonard", + "text_with_markups": "Robert Z. Leonard", + }, + ... + ] + } + } + } + + ``` + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AutocompleteRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/AutocompleteResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/search/mget: + post: + tags: + - Search APIs + summary: Multiple Get API + operationId: SearchApIs_multipleGetProducts + security: + - Secret API Key: [] + description: >- + The Multiple Get API provides a simple and fast interface to retrieve + Products by their product ids. + + For example, the following query will retrieve products whose + product_ids are `123ABC-S-Black` and `123ABC-S-Blue` + + ``` + + { + "product_ids": ["123ABC-S-Black", "123ABC-S-Blue"] + } + + ``` + + Miso will respond with the complete Products records in the same order + as the given `product_ids`: + + ``` + + { + "message": "success", + "data": { + "products": [ + { + "_found": true, + "product_id": "123ABC-S-Black", + "title": "Product ABC in Black", + ... + }, + { + "_found": true, + "product_id": "123ABC-S-Blue", + "title": "Product ABC in Blue", + ... + } + ] + } + } + + + ``` + + You can use the `_found` field to determine whether a product is found + in the Miso database or not. + + When the given product_id is not found, the `_found` field in the + corresponding Product record + + will become `false`. + + + For example, the following query requests a `product_id` that does not + exist in the Miso database: + + ``` + + { + "product_ids": ["Product_Not_Exists", "123ABC-S-Black"] + } + + ``` + + Miso will respond: + + ``` + + { + "message": "success", + "data": { + "products": [ + { + "_found": false, + "product_id": "Product_Not_Exists" + }, + { + "_found": true, + "product_id": "123ABC-S-Black", + "title": "Product ABC in Black", + ... + } + ] + } + } + + ``` + + Finally, like every Miso API, you can use `fl` to control what Product + fields to return. By default, all the Product + + fields will be returned, but the following query will return only + `title` field of the product (in addition + + to `product_id`) + + ``` + + { + "product_ids": ["123ABC-S-Black", "123ABC-S-Blue"], + "fl": ["title"] + } + + ``` + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MultipleGetRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/MultipleGetResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/ask/questions: + post: + tags: + - Ask APIs + summary: Create a new qestion + operationId: AskApIs_submitQuestion + security: + - Secret API Key: [] + description: |- + This API is used to submit questions to Miso. + + After a question is submitted, a `question_id` is returned. + Then you can use `question_id` to check the latest status of it's answer + as it is being compiled. + + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/ask/questions/{question_id}/answer: + get: + tags: + - Ask APIs + summary: Get latest answer of asked question + operationId: AskApIs_getAnswerStage + security: + - Secret API Key: [] + description: >- + This API is used to fetch the latest answer of previous submitted + question from Miso + + + A submitted question is put into a job with following stage: + + + - Initialization + + - Parsing and fecthing related content + + - Relevance checking + + - Summarization + + + This API will tell you at what stage current question is in. + + If answer is fetched and being summerized, it will also return the + latest summarization result. + + + Besides human readable answer, the products used to generate answer are + also returned. + + parameters: + - required: true + schema: + title: Question Id + type: string + format: uuid + name: question_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PollAnswerResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/recommendation/user_to_products: + post: + tags: + - Recommendation APIs + summary: User to Products API + operationId: RecommendationApIs_getRecommendedProducts + security: + - Secret API Key: [] + description: >- + Returns the products that are most likely to drive conversion for the + given user. Depending on the conversion + + metrics you choose when training your Miso Engines in Dojo, this API + returns products that are most likely to + + optimize those metrics (such as `add_to_cart`, `checkout`, or `read`). + + + This API considers both user's interests and the conversion probability. + The user's interests are determined from + + their past interactions on the site and the context of their current + browsing session, including recent trending + + products, time of the day, recent search behaviors, etc. + + + ### Application scenarios + + The User to Products API is usually used in homepage recommendations, + such as "*Inspired by your shopping trends*" on + + Amazon, or "*Recommended videos*" on Youtube. It can also be used to run + an email marketing campaign such as a + + newsletter from Medium with recent articles you might like. These kind + of recommendations are particularly powerful + + in driving product discovery. + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the id of + the current user or visitor via `user_id` + + or `anonymous_id` field. For example, for a currently logged-in user, + your request may look like the following: + + ``` + + POST /v1/recommendation/user_to_products + + {"user_id": "user-123"} + + ``` + + For a un-signed visitor, your request may look like the following: + + ``` + + POST /v1/recommendation/user_to_products + + {"anonymous_id": "visitor-123"} + + ``` + + + This API will respond with the recommended products for the specified + user or visitor: + + ```javascript + + { + "message": "success", + "data": { + "took": 37, + "miso_id": "517452b0-0ccf-11eb-948d-66359cf29022", + "products": [ + { + "product_id": "tmdb-475557", + "_personalization_score": 0.91 + }, + { + "product_id": "tmdb-299534", + "_personalization_score": 0.89 + }, + ... + ] + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **miso_id**: a UUID of the search request. You should include + **miso_id** in the Interaction records for every + + interactions that result from this search request, e.g. user + click-through a product in the search results. + + Miso use miso_id to track the search performance and fine-tune the + algorithm accordingly. + + * **products**: an array of [Product records](https://api.askmiso.com) + recommended to this + + user ranked by the probability that the user will be interested in this + product. By default, only the `product_id` + + of the Product is returned. You can ask Miso to return additional fields + by using the *fl* request argument (see example below) + + * **products[ ]._personalization_score**: the score assigned by Miso's + personalization algorithm based on users' + + profile and their interactions on the site. This score quantifies the + probability of whether users will be + + interested in this product or not. + + + You can use the `fl` request argument to ask Miso to return more product + fields. For example, the following request + + asks Miso to additionally return the *title* and *category* fields of + every recommended product: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"] + } + + ``` + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 37, + "miso_id": "517452b0-0ccf-11eb-948d-66359cf29022", + "products": [ + { + "product_id": "tmdb-475557", + "categories": [ + [ + "Crime" + ], + [ + "Thriller" + ], + [ + "Drama" + ] + ], + "title": "Joker (2019)", + "_personalization_score": 0.91 + }, + { + "product_id": "tmdb-299534", + "categories": [ + [ + "Adventure" + ], + [ + "Science Fiction" + ], + [ + "Action" + ] + ], + "title": "Avengers: Endgame (2019)", + "_personalization_score": 0.89 + }, + ... + ] + } + } + + ``` + + ### Filtering and Boosting + + Like every other Miso API, `User To Products` API supports filter query + (`fq`) and boost query (`boost_fq`) to + + generate recommendations that meet your business needs. + + + #### Filter Query + + You can use filter query to filter recommendation results against + + arbitrary criteria, and Miso will *guarantee* to return sufficient + number of recommendation results that meet the + + criteria. For example, the following requests will limit the + recommendations to only `Drama` films: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "fq": "categories:Drama" + } + + ``` + + + For another example with `custom_attributes`, the following requests + will limit the recommendations to + only `Drama` films after `2010`: + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "fq": "categories:Drama AND custom_attributes.year:[2010 to *]" + } + + ``` + + + #### Latency Consideration + + Miso achieves **instant** recommendations by pre-computing a large pool + of candidates (N>1,000) + + for each user with the products they are mostly likely to be interested + in. However, when the given filter query do + + not match a sufficient number of + + candidates, Miso will fall back to Search API to find additional matches + to fill in the remaining + + slots. While falling back to Search API will increase the latency, the + latency increase is usually minimum if the + + same filter query is being used repeatedly due to Miso's caching + mechanism. + + + + #### Boost Query + + You can use `boost_fq` to boost Products with arbitrary criteria. The + relevant Products that match the `boost_fq` + + will be ranked at the top of the recommendations or at the positions + specified in the + + `boost_positions` parameter. Boosting is particularly useful for product + promotions (e.g. sponsored products) to + + highlight the Products you want more impression. + + + For example, the following request will boost the `Sci-Fi` films + directed by `Ridley Scott`: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "boost_fq": "categories:\"Sci-Fi\" AND custom_attributes.director:\"Ridley Scott\"" + } + + ``` + + The response will be like: + + + ```javascript + + { + "message": "success", + "data": { + "took": 83, + "miso_id": "54bf6d9a-dd32-11eb-99d6-a62d401473b5", + "products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)", + "_personalization_score": 0.5364759309088403, + "_boosted": true, + "categories": [ + [ + "Drama" + ], + [ + "Adventure" + ], + [ + "Science Fiction" + ] + ] + }, + ... + ] + } + } + + ``` + + The additional field **products[ ].boosted** is a boolean that indicates + whether the Product matches the `boost_fq`. + + + You can also use `boost_positions` to specify the positions in the + recommendation list you want the + + boosted Products to be placed. For example, the following request will + place the boosted Product at the second place, + + and the third place (the `boost_positions` are 0-based): + + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "boost_fq": "categories:\"Sci-Fi\" AND custom_attributes.director:\"Ridley Scott\"", + "boost_positions": [1, 2] + } + + ``` + + + ### Filtering "already seen" items + + Typically, the User to Products API is used to let users discover new + products they might be interested in. Therefore, + + it is important not to recommend products users have already interacted + with recently. By default, the User to Products + + API filters out the most recent 50 products users have had interactions + with (except for `impression` interactions) + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToItemsRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/RecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/recommendation/user_to_categories: + post: + tags: + - Recommendation APIs + summary: User to Categories API + operationId: RecommendationApIs_getUserCategories + security: + - Secret API Key: [] + description: >- + The User to Categories API returns the product categories that will + drive the conversion for the current user, + + along with the recommended products for each returned category. + + + ### Application scenarios + + This API is usually used in homepage recommendations, or category + recommendations + + where recommendations are organized by categories, + + such as Netflix's "*Action / Sci-Fi / Drama movies for you*" + + or Amazon's "*Recommendations for you in Grocery & Gourmet Food*". The + goal of such recommendations is to help + + users discover attractive products under the categories they + + have a high chance to be interested in. + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the + `user_id` or + + `anonymous_id` of the current users. Miso will return a list of top + categories along with the recommended + + Products under each of the categories. + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "fl": ["title"] + } + + ``` + + * **rows**: the number of categories to return + + * **products_per_category**: the number of Products to return per each + category + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response of this request will be like: + + ``` + + { + "message": "success", + "data": { + "took": 85, + "miso_id": "7cd6059c-dd54-11eb-8050-a62d401473b5", + "categories": [ + { + "category": [ + "Drama" + ], + "total": 61510, + "recommended_products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)" + }, + { + "product_id": "tmdb-281957", + "title": "The Revenant (2015)" + }, + { + "product_id": "tmdb-68718", + "title": "Django Unchained (2012)" + } + ] + }, + { + "category": [ + "Thriller" + ], + "total": 21870, + "recommended_products": [ + { + "product_id": "tmdb-11324", + "title": "Shutter Island (2010)" + }, + { + "product_id": "tmdb-1949", + "title": "Zodiac (2007)" + }, + { + "product_id": "tmdb-1422", + "title": "The Departed (2006)" + } + ] + } + ] + } + } + + ``` + + * **categories**: a list of categories recommended to the users. + + * **categories[].category**: the recommended category in the format of + category hierarchy. `["Sci-Fi"]` is a top level category, + + `["Sci-Fi", "Space Travel"]` is a second-level category under `Sci-Fi` + (a.k.a subcategory). + + * **categories[].total**: the total number of Products belonging to the + category + + * **categories[].recommended_products**: a list of Products (in that + category) recommended to the users + + + ### Root Category + + By default, `User To Categories` API recommends top level categories, + but you can change this behavior + + via `root_category` parameter. Miso will recommend the immediate + sub-categories of the given `root_category` + + For example, the following request will recommend sub-categories under + + `Science Fiction`, for example `["Science Fiction", "Space Travel"]` or + `["Science Fiction", "Steampunk"]`: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "test", + "root_category": ["Science Fiction"] + } + + ``` + + + In some cases, you may want to get recommendations from *any* + subcategories (regardless their parent category). + + In such case, you can use wildcard `*` to achieve such results. For + example, the following request will recommend + + any sub-categories regardless their parent category: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "test", + "root_category": ["*"] + } + + ``` + + ### Filter and boost query + + Like every Miso API, `User To Categories` supports `fq` for filtering, + and `boost_fq` for boosting. You can use + + these parameters to make the recommendation results meet your exact + business needs. For example, the following + + request will recommend categories + + that contain sufficient number of Products that meet the `fq` criteria + (i.e. films after 2010), and each Product + + returned in the `recommended_products` list will also meet the `fq` + criteria: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "fq": "custom_attributes.year: [2010 TO *]" + } + + ``` + + Similarly, you can use `boost_fq` to promote Products that meet your + business criteria in each category. For example, + + the following request will prioritize Products that are promoted + (indicated by `custom_attributes.promoted`): + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "boost_fq": "custom_attributes.promoted: true" + } + + ``` + + ### Latency considerations + + `User To Categories` API is one of more complex API because it needs to + first identify categories the user will be + + interested in, and then find the top Products in that categories. We + make this process real-time by pre-computing a + + large number of top Products users may find interesting in for each + category, therefore the end-to-end latency is + + usually under 100ms. To further reduce the latency, you can: + + * Use a smaller `products_per_category` to reduce number of products to + return, or set it to zeros if you don't need any. + + * Request only the necessary fields using `fl` parameters + + * Use a smaller `rows` to reduce number of categories to return + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToCategories' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CategoryRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/recommendation/user_to_attributes: + post: + tags: + - Recommendation APIs + summary: User to Attributes API + operationId: RecommendationApIs_getUserAttributes + security: + - Secret API Key: [] + description: >- + The `User to Attributes` API is a generalized version of `User to + Categories` API --- it returns the product + + attributes that Miso expects to drive a conversion for the current + + user. You specify a field in your Product catalog you want + recommendations for, e.g. the `brand` or a custom field like + + `custom_attributes.director`, and this API will return a list of values + from that fields Miso expects users will be most + + interested in, as well as a list of personalized product suggestions. + + + ### Applicable scenarios + + This API is usually used in homepage recommendations, where users can + interact with recommended attributes. + + For example, this API could generate suggestions for "the brands you may + like" or "the creators you may like." + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the + `user_id` or `anonymous_id`, and the `field` you + + want to get recommendations for. For example, the following request will + return the recommended `director` for + + the given users: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_attributes + + { + "user_id": "test", + "field": "custom_attributes.director", + "rows": 3, + "products_per_attribute": 2, + "fl": ["title"] + } + + ``` + + * **field**: the name of the field you want to get recommendation for + + * **rows**: the number of categories to return + + * **products_per_attribute**: the number of Products to return per each + attribute + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response of this request will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 296, + "miso_id": "9d7c8d9c-dd73-11eb-b20d-9a566192e5c6", + "attributes": [ + { + "value": "Christopher Nolan", + "total": 12, + "recommended_products": [ + { + "product_id": "tmdb-272", + "title": "Batman Begins (2005)" + }, + { + "product_id": "tmdb-77", + "title": "Memento (2000)" + } + ] + }, + { + "value": "Ridley Scott", + "total": 26, + "recommended_products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)" + }, + { + "product_id": "tmdb-4982", + "title": "American Gangster (2007)" + } + ] + }, + { + "value": "Quentin Tarantino", + "total": 13, + "recommended_products": [ + { + "product_id": "tmdb-680", + "title": "Pulp Fiction (1994)" + }, + { + "product_id": "tmdb-68718", + "title": "Django Unchained (2012)" + } + ] + } + ] + } + } + + + ``` + + * **attributes**: a list of attributes recommended to the users. + + * **attributes[ ].value**: the recommended attribute value (in this + case, director name) + + * **attributes[ ].total**: the total number of Products that have this + attribute + + * **attributes[ ].recommended_products**: a list of Products (with the + attribute) recommended to the users + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToAttributes' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/AttributeRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/recommendation/user_to_trending: + post: + tags: + - Recommendation APIs + summary: User to Trending API + operationId: RecommendationApIs_getUserTrending + security: + - Secret API Key: [] + description: >- + The User to Trending API returns the products that are currently + trending + + and are most likely to be of interest to this user. It's different from + the User to Products API because it will only + + recommend trending products. However, each user should still see unique + recommendations that are not only trending but + + also suit their interests. + + + ### Applicable scenarios + + This API is typically used to make homepage recommendations such as + "Trending products for users like you" or + + "Trending on Youtube". + + + ### Filtering "already seen" items + + The User to Trending API will not recommend products users have recently + interacted with. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToItemsRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/TrendRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/recommendation/product_to_products: + post: + tags: + - Recommendation APIs + summary: Product to Products API + operationId: RecommendationApIs_getRelatedProducts + security: + - Secret API Key: [] + description: >- + The Product to Products API returns the products that are related to an + anchor product (often the product the user + + is currently engaging with) and are also likely to drive conversions by + connecting with the user’s interests. It is + + different from the User to Products API as it not only considers the + user’s interests but also considers the + + recommended products' relevancy to the anchor product. + + + ### Applicable scenarios + + This API is frequently used in product detail page to show related + products that users can consume + + further, such as "Related products you may like" on Amazon or "Up next + video" on Youtube. It is one of Miso's best + + performing APIs. Our customers usually see more than 30% and some times + 110% relative lift in click-through rate after + + deploying this a feature using this API. + + + ### Basic usage + + To use this API, you just need to let Miso knows the `user_id` (or + `anonymous_id`) and the `product_id` you + + want to get related recommendations for. For example, the following + request will return the products that are + + related to the movie `Toy Story`. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"] + } + + ``` + + * **product_id**: the id of the anchor product + + * **rows**: the number of related products to return + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 56, + "miso_id": "f98b1904-ddce-11eb-be53-fa1729b23183", + "products": [ + { + "product_id": "toy-story-2-1999", + "title": "Toy Story 2 (1999)" + }, + { + "product_id": "toy-story-3-2010", + "title": "Toy Story 3 (2010)" + }, + { + "product_id": "the-lion-king-1994", + "title": "The Lion King (1994)" + } + ] + } + } + + ``` + + * **products**: a list of products related to the anchor product + + * **products[ ].product_id**: the id of the recommended product + + * **products[ ].title**: the title of the recommended product. You can + use `fl` parameter to make Miso return more fields + + + ### Boosting and filtering + + Like every Miso API, you can utilize `fq` and `boost_fq` to fine-tune + the recommendations returned by Miso, and + + Miso will guarantee to return the required number of recommendations + that meet the given criteria. + + + For example, the following request still recommends movies related to + "Toy Story" but limits the recommendations + + to only the movies released after year 2010. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"], + "fq": "custom_attributes.year: [2010 TO *]" + } + + ``` + + + For another example, the following request will *boost* the movies that + are acted by `Tom Hanks`. The boosting is + + different from filtering as it only prioritizes those products that + match the boosting criteria and are relevant to + + the anchor products, but it will not limit the results to only such + products. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"], + "boost_fq": "custom_attributes.actors:\"Tom Hanks\"" + } + + ``` + + + ### Multiple anchor products + + In the scenarios where you want to recommend products related to + **multiple** anchor products, for example, + + for shopping cart cross-sell or up-sell, you can utilize `product_ids` + + parameter and have multiple product ids in it. + + + For instance, the following request recommends products related to + movies "Toy Story" and "Monsters, Inc." + + that will be of interest to the the current user. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_ids": ["toy-story-1995", "monsters-inc-2001"], + "rows": 3, + "fl": ["title"] + } + + ``` + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/YMALRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductToProductsResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/qa/question_answering: + post: + tags: + - Q&A APIs + summary: Q&A API + operationId: QaApIs_extractAnswer + security: + - Secret API Key: [] + description: >- + Question Answering API analyzes each Product's `html` field and extracts + paragraphs that can answer users' + + questions. + + + For example, Miso can take question likes `What is python?`, and extract + an answer like + + `Python is an interpreted, object-oriented, high-level programming + language.` from a product's `html` field. + + + Each answer is assigned a `probability` score that determines how likely + a paragraph can accurately answer the + + question. A probability at least 0.7 is recommended, but you usually + will need to fine-tune + + this threshold to find the precision-and-recall sweet-spot for your + application. + + + ### Limitations + + Miso will only extract answers from the `html` field and from products + that have `enable_question_answering` set to `true`. Also, + + since Q&A is a much more complex search problem, the response time of + this API is usually between 1 to 2 seconds + + for a new question. For an old question this API has answered before, + the response time will be less than 75ms. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionAnsweringRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QAResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/qa/questions: + post: + tags: + - Q&A APIs + summary: Upload Question Bank API + operationId: QaApIs_uploadQuestionBank + security: + - Secret API Key: [] + description: >- + Question Bank API lets you upload your *question bank* to Miso. A + *question bank* is a list of questions that + + can be used for **Question Autocomplete** and **Similar Question + Search**. + + + This API follows a *replace-all* model, i.e. a successful upload request + will replace all the existing questions + + in the question bank. + + + For example, the following request will replace the existing question + bank with the given three questions: + + ``` + + POST /v1/qa/questions + + {"data": [ + {"question": "What is python?"}, + {"question": "What is list comprehension?"}, + {"question": "How to sort a list in Python?"} + ]} + + ``` + + + + + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PostQuestionRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BaseResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/qa/question_autocomplete: + post: + tags: + - Q&A APIs + summary: Question Autocomplete API + operationId: QaApIs_getAutocomplete + security: + - Secret API Key: [] + description: >- + Question Autocomplete is an important feature for Q&A applications. It + not only saves your users from typing + + the complete questions, but also showcases what questions your app is + capable answering. This is important because + + Q&A is an advanced search feature that not every user is familar with. + + + Miso generates autocomplete candidates from the question bank you + uploaded (see [Question Bank Upload API](...)). + + Given a partial question string, Question Autocomplete API will suggest + question candidates that match the query + + the user is typing. + + + + For example, let's first upload three questions to the question bank: + + ``` + + POST /v1/qa/questions + + {"data": [ + {"question": "What is python?"}, + {"question": "What is pypy?"}, + {"question": "How to sort a list in Python?"} + ]} + + ``` + + + Then, immediately after the above request finished, you can send the + request below to get autocompletion + + candidates for any partial query string. For example, if the query + string the user types so far is *"what is p"*: + + + ``` + + POST /v1/qa/question_autocomplete + + { + "q": "what is p", + "rows": 5 + } + + ``` + + + The API will respond the completion candidates like the following: + + ``` + + { + "data": + "completions": [ + {"question": "What is python?"}, + {"question": "What is pypy?"} + ] + } + } + + ``` + + + The API supports adaptive fuzzy matching such that even if there are + typos in the query string, the API + + is still able to return the question candidates with the correct + spellings. For example, if the query string is + + "*How to sorta*". The API is still able to match the completion + candidate: + + "*How to sort a list in Python?*" + + + The API is optimized for instant experience and has an average response + time lower than 50ms. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionAutocompleteRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QAAutocompleteResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/bulk: + post: + tags: + - Bulk API + summary: Bulk Request API + operationId: BulkApi_requestPost + security: + - Secret API Key: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BulkResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' +components: + schemas: + AddToCart: + title: add_to_cart + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used when a user adds a product into their shopping cart. This is a + strong + + positive signal of the user's interest in the product, and may + eventually lead to a purchase. + enum: + - add_to_cart + type: string + quantities: + title: Quantities + description: > + + The quantities of products the user adds to their cart or checks out + with. This field should be a list of positive values. + + Specifically, if `product_ids` is a list of N products, the + `quantities` needs to be a list with N numbers as well. + + If `quantities` are not specified, we will assume the quantity to be + 1 for every product. + + + Example: + + ``` + + {"quantities": [1, 2]} + + ``` + anyOf: + - type: array + items: + type: number + - type: number + example: + - 1 + - 2 + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + AddToCollection: + title: add_to_collection + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used when a user adds a product to their personal collection. This + is a strong + + signal of their interest in the product. + enum: + - add_to_collection + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + AnchoringEntry: + title: AnchoringEntry + required: + - product_id + - anchor_ids + type: object + properties: + product_id: + title: Product Id + description: Product to boost + type: string + anchor_ids: + title: Anchor Ids + description: A list of anchor products + minLength: 1 + type: array + items: + type: string + minLength: 1 + relative_position: + title: Relative Position + description: Relative position to the top anchor product + type: integer + default: -1 + start_time: + title: Start Time + description: When does the anchoring start. Leave it unset to start immediately + type: string + format: date-time + end_time: + title: End Time + description: When will the anchoring end. Leave it unset to not have an end time + type: string + format: date-time + Answer: + title: Answer + required: + - probability + - text + - css_selector + type: object + properties: + probability: + title: Probability + description: >- + The probability this paragraph can sufficiently answer the user's + question (from 0.0 to 1.0). + maximum: 1 + minimum: 0 + type: number + html: + title: Html + description: >- + The answer paragraph in its original html tag, i.e. or the + `outerHTML` of the + answer paragraph node. + + type: string + text: + title: Text + description: The plain text version of answer paragraph. + type: string + css_selector: + title: Css Selector + description: > + + The CSS selector that uniquely identifies the answer paragraph node + in the original HTML content. This css selector + + matches exactly one HTML node that contains the answer paragraph. In + order to be as unambiguous as possible, + + the returned CSS selector is in the form of a series of nth-child + selectors starting from `:root` node + + (which is usually the ``). For example, + + ``` + + :root > div:nth-child(1) > p:nth-child(2) + + ``` + + . This selector means the answer paragraph is a `

` tag that is + the second child of a `

` node, which is in turn, the + + first child of the `:root` node. + + + This CSS selector is useful when you want to make the answer + paragraph stand out from the + + rest of the document. For example, + + the following JQuery code turns the background color of the answer + paragraph to yellow: + + + ``` + + $(answer.css_selector).css("background-color", "yellow"); + + ``` + type: string + AnswerBlock: + title: AnswerBlock + required: + - html + - css_selector + - relevant_children_slice + - answer_css_selector + - title + type: object + properties: + title: + title: Title + description: >- + The relevant title to the answer paragraph. This title is extracted + from a header node close + to the answer paragraph. If there is no such node, the title will be an empty string + type: string + html: + title: Html + description: The HTML content of the answer block + type: string + css_selector: + title: Css Selector + description: >- + The CSS selector that uniquely identifies the answer block from the + HTML root + type: string + relevant_children_slice: + title: Relevant Children Slice + description: >- + The range of children nodes inside the *answer block* that is + relevant to the selected answer. + type: array + items: + - type: integer + - type: integer + answer_css_selector: + title: Answer Css Selector + description: |2- + + The CSS selector to the selected answer paragraph inside the answer block. You can use this selector to select + the answer from the answer block (as supposed to selecting from the HTML root) + + type: string + AnswerData: + title: AnswerData + required: + - question + - question_id + type: object + properties: + question: + title: Question + description: The question given by the user + type: string + question_id: + title: Question Id + description: The UUID of the question for which the latest answer is requested. + type: string + format: uuid + parent_question_id: + title: Parent Question Id + description: >- + The UUID of the parent question if the current question is a + follow-up to a previous question. + type: string + format: uuid + answer_stage: + title: Answer Stage + description: The status of the answer generating process. + type: string + default: '' + finished: + title: Finished + description: Whether the answer generating process is finished. + type: boolean + default: false + answer: + title: Answer + description: The latest answer for the given question. + type: string + default: '' + sources: + title: Sources + description: A list of sources related to the answer. + type: array + items: + type: object + default: [] + related_resources: + title: Related Resources + description: A list of related resources relevant to the question and answer. + type: array + items: + type: object + default: [] + followup_questions: + title: Followup Questions + description: A list of suggested follow-up questions. + type: array + items: + type: string + affiliation_products: + title: Affiliation Products + description: A list of suggested affiliation products. + type: array + items: + type: object + AttributeRecRecord: + title: AttributeRecRecord + required: + - value + - total + - recommended_products + type: object + properties: + value: + title: Value + description: The attribute we recommend to the user in their textual form. + type: string + example: Miso T-Shirt Shop + total: + title: Total + description: The total number of products that have this attribute. + type: integer + example: 1000 + recommended_products: + title: Recommended Products + description: Top personalized recommendations of products have this attribute. + type: array + items: + $ref: '#/components/schemas/Record' + example: 1000 + AttributeRecResponse: + title: AttributeRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/AttributeResponseBody' + AttributeResponseBody: + title: AttributeResponseBody + required: + - attributes + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + attributes: + title: Attributes + description: The attribute recommendation results. + type: array + items: + $ref: '#/components/schemas/AttributeRecRecord' + AutocompleteRequest: + title: AutocompleteRequest + required: + - q + type: object + properties: + engine_id: + title: Engine Id + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + type: string + user_id: + title: User Id + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + type: string + anonymous_id: + title: Anonymous Id + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + type: string + user_hash: + title: User Hash + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + type: string + user_cohort: + title: User Cohort + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + rows: + title: Rows + description: Number of search results to return. + type: integer + default: 5 + type: + title: Type + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + type: string + dedupe_product_group_id: + title: Dedupe Product Group Id + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + type: boolean + default: true + additional_interactions: + title: Additional Interactions + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + default: [] + fq: + title: Fq + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + type: string + boost_fq: + title: Boost Fq + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + type: string + boost_positions: + title: Boost Positions + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + type: array + items: + type: integer + boost_rules: + title: Boost Rules + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + default: [] + geo: + $ref: '#/components/schemas/GeoQuery' + q: + title: Q + description: > + + The search query users typed so far. Please keep the trailing spaces + (if any) intact so that we + + know whether the user has finished typing the last word or is still + typing it. For example, the following query + + means the user has finished typing the word *Fight*: + + ``` + + {"q": "Fight "} + + ``` + + On the other hand, the following query means the user has not + finished typing the last word *Clu*: + + ``` + + {"q": "Fight Clu"} + + ``` + minLength: 0 + type: string + language: + title: Language + description: > + + Two-letter (639-1) language code of the search query. If given, the + autocomplete results will be from + + that specific language. If not given, the autocomplete results will + be from the primary language + + of the environment. Example query: + + ``` + + {"language": "en"} + + ``` + type: string + min_query_users: + title: Min Query Users + description: > + + Limits the query completion results to *historical queries* that + have been made by at + + least this number of unique users. This parameter has no effect when + `completion_fields` does not include + + `historical_queries`. We do not recommend setting `min_query_users` + lower than 5. When + + `min_query_users` is too small, we might risk showing queries that + contain typos or are too personal to the + + users who made the query. + type: integer + default: 5 + completion_fields: + title: Completion Fields + description: >+ + + + Controls the sources of autocompletion candidates. Miso performs + autocompletion by matching + + what the user has typed so far to either the *title* of products or + to other *attributes*. + + + By default, we only autocomplete against the value in the `title` + field. The `completion_fields` parameter lets you + + specify the attributes you want to perform autocompletion against. + For example, the following + + query will limit the autocompletion candidates to the `title` and + `tags` of products: + + + ``` + + {"completion_fields": ["title", "tags"]} + + ``` + + + Autocompletion also works on *custom attributes*. For example, if + you have a custom attribute for the + + `designer_name` of the product, the following query limits + autocompletion candidates to only the designer names: + + + ``` + + {"candidates": ["custom_attributes.designer_name"]} + + ``` + + type: array + items: + type: string + default: + - title + fl: + title: Fl + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + type: array + items: + type: string + default: [] + x-konfig-properties: + geo: + title: Geo + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + AutocompleteResponse: + title: AutocompleteResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/AutocompleteResponseBody' + AutocompleteResponseBody: + title: AutocompleteResponseBody + description: |- + autocomplete api response body: + { + "completions": [{"text": "", "source": ""}] + } + required: + - completions + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + completions: + title: Completions + description: Autocompletion results. + type: object + additionalProperties: + type: array + items: + anyOf: + - $ref: '#/components/schemas/TitleCompletion' + - $ref: '#/components/schemas/Completion' + example: + title: + - text: Miso Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + type: title + product: + product_id: 123ABC-S-Black + brand: + - text: Miso + type: brand + - text: Mitsui + type: brand + BaseBody: + title: BaseBody + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + BaseGeo: + title: BaseGeo + required: + - lat + - lon + type: object + properties: + lat: + title: Lat + description: Latitude of the center point, should between 90 and -90 + maximum: 90 + minimum: -90 + type: number + lon: + title: Lon + description: Longitude of the center point, should between 180 and -180 + maximum: 180 + minimum: -180 + type: number + BaseResponse: + title: BaseResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/BaseBody' + BaseResponseBody: + title: BaseResponseBody + required: + - products + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + description: The recommendation results. + type: array + items: + $ref: '#/components/schemas/Record' + Bookmark: + title: bookmark + required: + - type + type: object + properties: + type: + title: Type + description: | + + Used when a user bookmarks a product. + enum: + - bookmark + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + BoostItem: + title: BoostItem + required: + - field + - option + - query + type: object + properties: + field: + title: Field + description: The boosting field of the rule. + type: string + option: + title: Option + description: The boosting option of the field. + enum: + - contains + - not_contain + - is + - is_not + type: string + query: + title: Query + description: The boosting query of the field. + type: string + action: + title: Action + description: The boosting action of the field. + enum: + - pin + - bury + - remove + type: string + pin_position: + title: Pin Position + description: >- + This field is a 1-based integer to describe the position. This field + is only used when action is "pin". + minimum: 1 + exclusiveMinimum: 0 + type: integer + example: 1 + example: + field: title + option: contains + query: iphone + BoostingFilterBase: + title: BoostingFilterBase + type: object + properties: + boost_fq: + title: Boost Fq + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + type: string + boost_positions: + title: Boost Positions + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + type: array + items: + type: integer + BulkIndividualResponse: + title: BulkIndividualResponse + description: 'Individual response in a bulk API request ' + required: + - error + - status_code + - body + type: object + properties: + error: + title: Error + description: Whether there is an error + type: boolean + status_code: + title: Status Code + description: Status code of the response + type: integer + body: + $ref: '#/components/schemas/GeneralBody' + x-konfig-properties: + body: + title: Body + description: The response body + BulkRequest: + title: BulkRequest + description: Bulk API request + required: + - requests + type: object + properties: + requests: + title: Requests + description: An array of request objects + maxItems: 100 + minItems: 1 + type: array + items: + $ref: '#/components/schemas/EngineAPIRequest' + BulkResponse: + title: BulkResponse + description: 'Bulk API response ' + required: + - data + - errors + type: object + properties: + data: + title: Data + description: The bulk request results + type: array + items: + $ref: '#/components/schemas/BulkIndividualResponse' + errors: + title: Errors + description: Whether there is any errors in the responses + type: boolean + Campaign: + title: Campaign + type: object + properties: + name: + title: Name + description: >- + Name of the campaign. Identifies a specific product promotion or + strategic campaign. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + type: string + example: spring_sale + source: + title: Source + description: >- + Source of the campaign. Identifies which site sent the traffic. (see + [UTM parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + type: string + example: Google + medium: + title: Medium + description: >- + Medium of the campaign that identifies what type of link was used, + such as cost per click or email. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + type: string + example: cpc + term: + title: Term + description: >- + Term of the campaign that identifies search terms. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + type: string + example: running+shoes + content: + title: Content + description: >- + Content of the campaign that identifies what specifically was + clicked to bring the user to the site, such as a banner ad or a text + link. It is often used for A/B testing and content-targeted ads. + Identifies search terms. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + type: string + example: textlink + CategoryPageView: + title: category_page_view + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used when a user views a category page for a specific “family” or + “group” or products or content. + + This is a strong indicator of what types category of products or + content the user is interested in. + enum: + - category_page_view + type: string + duration: + title: Duration + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + type: number + example: 61.5 + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + category: + title: Category + description: > + + Categories usually fall in a hierarchy, such as *Home & Garden > + Kitchen & Dining > Kitchen Tools & Utensils > + + Sushi Mats* Use this field to specify the full hierarchical list + describing the category the user is viewing. + + + The levels should be listed from broad to narrow: + + `["TOP_LEVEL_CATEGORY", "SUBCATEGORY_1", "SUBCATEGORY_2", ...]`. + + This field is only used by the category_page_view interaction type, + but this data is very useful for + + determining the user’s interests. + + Example: + + ``` + + [ + "Home & Garden", // TOP_LEVEL_CATEGORY + "Kitchen & Dining", // SUBCATEGORY_1 + "Kitchen Tools & Utensils", // SUBCATEGORY_2 + "Sushi Mats" // SUBCATEGORY_3 + ] + + ``` + type: array + items: + type: string + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + CategoryRecRecord: + title: CategoryRecRecord + required: + - category + - total + - recommended_products + type: object + properties: + category: + title: Category + description: The attribute we recommend to the user in their textual form + type: array + items: + type: string + example: + - Miso T-Shirt Shop + total: + title: Total + description: The total number of products that are associated with this category. + type: integer + example: 1000 + recommended_products: + title: Recommended Products + description: >- + Top personalized recommendations for the user of products that are + associated with this category. + type: array + items: + $ref: '#/components/schemas/Record' + example: 1000 + CategoryRecResponse: + title: CategoryRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/CategoryResponseBody' + CategoryResponseBody: + title: CategoryResponseBody + required: + - categories + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + categories: + title: Categories + description: The category recommendation results. + type: array + items: + $ref: '#/components/schemas/CategoryRecRecord' + CheckProductExistence: + title: CheckProductExistence + required: + - product_ids + type: object + properties: + product_ids: + title: Product Ids + description: >- + A list of product ids to be checked if they will be returned in the + search results + minLength: 1 + type: array + items: + type: string + minLength: 1 + Checkout: + title: checkout + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used when a user enters checks out with a set of products. For an + eCommerce site, this is the strongest signal of the user's + + interest and has a high probability of leading to an eventual + purchase. + enum: + - checkout + type: string + revenue: + title: Revenue + description: > + + Total revenue associated with the checkout. The revenue should + include generally shipping, tax, etc. that you + + want to include as part of your revenue calculations. + type: number + example: 23.32 + quantities: + title: Quantities + description: > + + The quantities of products the user adds to their cart or checks out + with. This field should be a list of positive values. + + Specifically, if `product_ids` is a list of N products, the + `quantities` needs to be a list with N numbers as well. + + If `quantities` are not specified, we will assume the quantity to be + 1 for every product. + + + Example: + + ``` + + {"quantities": [1, 2]} + + ``` + anyOf: + - type: array + items: + type: number + - type: number + example: + - 1 + - 2 + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + ChildrenObject: + title: ChildrenObject + required: + - id + type: object + properties: + title: + title: Title + type: string + description: + title: Description + type: string + id: + title: Id + type: string + url: + title: Url + type: string + html: + title: Html + type: string + headers: + title: Headers + type: array + items: + type: string + custom_attributes: + title: Custom Attributes + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + Click: + title: click + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used when user clicked on something, and does not belong to any + other interaction type. + enum: + - click + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + Complete: + title: complete + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used when a user "complete" a product (e.g. complete a course or a + video). + enum: + - complete + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + Completion: + title: Completion + description: 'basic completion response only has `text` ' + required: + - text + - text_with_markups + - text_with_inverted_markups + type: object + properties: + text: + title: Text + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_markups: + title: Text With Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_inverted_markups: + title: Text With Inverted Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + CreateResponse: + title: CreateResponse + required: + - message + - data + type: object + properties: + message: + title: Message + description: Human-readable message + type: string + example: success + data: + $ref: '#/components/schemas/TaskId' + Custom: + title: custom + required: + - type + - custom_action_name + type: object + properties: + type: + title: Type + description: > + + Used when you want to record any other kinds of interactions between + users and products. + enum: + - custom + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + custom_action_name: + title: Custom Action Name + description: | + + The name of the custom interaction that you have defined. + type: string + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + DeleteResponse: + title: DeleteResponse + required: + - message + - data + type: object + properties: + message: + title: Message + description: Human-readable message + type: string + example: success + data: + $ref: '#/components/schemas/TaskId' + Dislike: + title: dislike + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used when a user indicates a `dislike` for a product or indicates + + they would like to not be recommended content or products like this + in the future. + enum: + - dislike + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + DiversifyField: + title: DiversifyField + type: object + properties: + minimum_distance: + title: Minimum Distance + description: Minimum distance between two products that have the same value + type: integer + default: 1 + always_together: + title: Always Together + description: >- + If always_together=true, all the products that have the same value + for this field, will be put side-by-side. + type: boolean + default: false + EngineAPIRequest: + title: EngineAPIRequest + description: Engine API request + required: + - api_name + - body + type: object + properties: + api_name: + title: Api Name + description: > + + The name of the API. An API name should contain one slash. For + example: `search/search` or `recommendation/user_to_products` + type: string + body: + title: Body + description: | + + The request body to the API. + type: object + ExperimentRequest: + title: ExperimentRequest + type: object + properties: + user_id: + title: User Id + description: Identifies the signed-in user who performed the interaction. + type: string + example: '2179873' + anonymous_id: + title: Anonymous Id + description: A pseudo-unique substitute for the User Id + type: string + example: 403fb18e-98ff-434d-8585-726fabf5ed37 + variant_name: + title: Variant Name + description: >- + Set the variant_name if you want to assign a user to a specific + variant. Most of the time, you don't need to pass this field. + Instead, the system will automatically assign a variant for this + user. + type: string + example: Treatment_Group + timestamp: + title: Timestamp + description: >- + The time the user is assigned to the variant group. If not set, + current time will be used. + type: string + format: date-time + example: '2022-01-23T12:34:56-08:00' + FacetCounts: + title: FacetCounts + type: object + properties: + facet_fields: + title: Facet Fields + description: Facet counts of each facet field + type: object + additionalProperties: + type: array + items: + type: array + items: + - type: string + - type: integer + default: {} + FacetDefinition: + title: FacetDefinition + required: + - field + type: object + properties: + field: + title: Field + description: >+ + + The field name to create a facet against. For example, the following + query will create a facet against + + the `custom_attributes.director` field, and return the ten most + common facet values of this field + + (for Products that match the search query): + + ``` + + { + "field": "custom_attributes.director", + "size": 10 + } + + ``` + + type: string + size: + title: Size + description: > + + Number of facet values to return. The facet values are sort + descendingly by the number of Products + + that have these values (and match the search query). + type: integer + default: 10 + include: + title: Include + description: > + + Filter facet values based on a regular expression. For example, the + following query will return only the facet + + values that start with `Steven` (case-sensitive): + + ``` + + { + "field": "custom_attributes.director", + "size": 10, + "include": "Steven.*" + } + + ``` + + You can escape a special character with a preceding backslash `\` or + surround it with double quotes. + + For example, the following query will only return the facet values + starting with `St.`: + + + ``` + + { + "field": "custom_attributes.place_name", + "size": 10, + "include": "\"St.\".*" + } + + ``` + + + Note that, the `include` parameter will only affect the facet + values, and will not affect the search result itself. + type: string + ranges: + title: Ranges + description: > + + Facet ranges for numeric fields or date-like string fields. For + example, the following query groups the products + + into fours buckets against on their `original_price` ranges, each of + which has a user-friendly "key": + + ``` + + { + "field": "original_price", + "ranges": [ + {"to": 10, "key": "Less than 10 dollars"}, + {"from": 10, "to": 100, "key": "10 to 100 dollars"}, + {"from": 100, "to": 1000, "key": "100 to 1,000 dollars"}, + {"from": 1000, "key": "More than 1,000 dollars"} + ] + } + + ``` + + + For each range object, you need to at least specify one of the `to` + or `from` values (or both). `from` + + is always **inclusive**, and `to` is always **exclusive**. In the + response, Miso refers to each bucket by their `key`. + + For example, the above request will have the following response: + + ``` + + { + "facet_counts": { + "facet_fields": { + "original_price": [ + [ + "Less than 10 dollars", 1987 + ], + [ + "10 to 100 dollars", 109 + ], + [ + "100 to 1,000 dollars", 123 + ], + [ + "More than 1,000 dollars", 5 + ] + ] + } + } + } + + ``` + type: array + items: + $ref: '#/components/schemas/RangeRequireKey' + queries: + title: Queries + description: > + + Facet queries that support facet counts for any arbitrary Lucene + queries, + + each of which is labeled by a user-friendly "key": + + ``` + + { + "field": "my_custom_facet", + "queries": [ + { + "query": "price: [* TO 10] AND size:"Small"", + "key": "Less than 10 dollars / Small size" + }, + { + "query": "price: [10 TO 100] AND size:"Medium"", + "key": "10 to 100 dollars / Medium size" + }, + { + "query": "price: [100 TO *] AND size:"Large"", + "key": "More than 100 dollars / Large size" + } + ] + } + + ``` + + + In the response, Miso refers to the query result by their `key`. + + For example, the above request will have the following response: + + ``` + + { + "facet_counts": { + "facet_fields": { + "my_custom_facet": [ + [ + "Less than 10 dollars / Small size", 1987 + ], + [ + "10 to 100 dollars / Medium size", 109 + ], + [ + "More than 100 dollars / Large size", 123 + ] + ] + } + } + } + + ``` + type: array + items: + $ref: '#/components/schemas/QueryFilterRequireKey' + Feedback: + title: feedback + required: + - type + type: object + properties: + type: + title: Type + description: | + + Used when a user sends feedback on provided results. + enum: + - feedback + type: string + question_id: + title: Question Id + description: > + + A unique identifier representing the specific question for which + feedback is being provided. + maxLength: 512 + type: string + example: question_123 + result_type: + title: Result Type + description: > + + Indicates the type of result the provided feedback is associated + with, e.g., an answer or a suggestion. + type: string + example: answer + value: + title: Value + description: > + + Specifies the user's perspective on the provided result, with + possible values being helpful, not helpful, + + or unselected if the user has not provided any feedback. + type: string + example: helpful + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + Filter: + title: Filter + type: object + properties: + terms: + title: Terms + type: array + items: + type: string + ranges: + title: Ranges + type: array + items: + $ref: '#/components/schemas/Range' + queries: + title: Queries + type: array + items: + $ref: '#/components/schemas/QueryFilter' + FilterQueryItem: + title: FilterQueryItem + required: + - option + - query + type: object + properties: + option: + title: Option + description: The filter query option of the boosting rule. + enum: + - overlap_with + type: string + query: + title: Query + description: The filter query of the boosting rule. + type: string + GeneralBody: + title: GeneralBody + description: 'Allow any json body ' + type: object + properties: {} + GeoDistanceQuery: + title: GeoDistanceQuery + required: + - lat + - lon + - distance + type: object + properties: + lat: + title: Lat + description: Latitude of the center point, should between 90 and -90 + maximum: 90 + minimum: -90 + type: number + lon: + title: Lon + description: Longitude of the center point, should between 180 and -180 + maximum: 180 + minimum: -180 + type: number + field: + title: Field + description: >- + Name of the field in product data that holds geographic coordinate. + Defaults to `location` + type: string + default: location + distance: + title: Distance + description: >- + Distance to center point, in kilometer or mile (according to + `distance_unit`) + type: number + distance_unit: + title: Distance Unit + description: Unit of distance(`km` or `mile`). Defaults to `mile` + enum: + - km + - mile + default: mile + type: string + GeoDistanceQueryBoost: + title: GeoDistanceQueryBoost + required: + - lat + - lon + - distance + type: object + properties: + lat: + title: Lat + description: Latitude of the center point, should between 90 and -90 + maximum: 90 + minimum: -90 + type: number + lon: + title: Lon + description: Longitude of the center point, should between 180 and -180 + maximum: 180 + minimum: -180 + type: number + field: + title: Field + description: >- + Name of the field in product data that holds geographic coordinate. + Defaults to `location` + type: string + default: location + distance: + title: Distance + description: >- + Distance to center point, in kilometer or mile (according to + `distance_unit`) + type: number + distance_unit: + title: Distance Unit + description: Unit of distance(`km` or `mile`). Defaults to `mile` + enum: + - km + - mile + default: mile + type: string + boost_positions: + title: Boost Positions + description: |2- + + Defines a list of 0-based positions you want to place the boosted products at. + + If `boost_positions` is not specified (which is the default behavior), all the boosted products will be ranked + higher than the rest of the products. + + type: array + items: + type: integer + GeoQuery: + title: GeoQuery + type: object + properties: + filter: + title: Filter + description: >- + When set, filter result to include only products within certain + geographic range from given point. + type: array + items: + $ref: '#/components/schemas/GeoDistanceQuery' + default: [] + boost: + title: Boost + description: >- + When set, boost products within certain geographic range from given + point. + type: array + items: + $ref: '#/components/schemas/GeoDistanceQueryBoost' + default: [] + HTTPValidationError: + title: HTTPValidationError + type: object + properties: + detail: + title: Detail + type: array + items: + $ref: '#/components/schemas/ValidationError' + HomePageView: + title: home_page_view + required: + - type + type: object + properties: + type: + title: Type + description: | + + Used when a user views your home page. + enum: + - home_page_view + type: string + duration: + title: Duration + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + type: number + example: 61.5 + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + Impression: + title: impression + required: + - type + type: object + properties: + type: + title: Type + description: >- + + Used to record when a user saw or was presented with a product or + content asset. + + An impression does not mean a user is interested: for example, if + there is an impression for a + + certain product, but no further interaction occurs with that + product, we assume the user is probably not + + interested in it. + + + For an impression that was generated by Miso's search results or + recommendations results, it is important to + + include the `miso_id` associated with the results so that we know + the impression is from Miso + enum: + - impression + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + InteractionBulkIn: + title: InteractionBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + InteractionCreateOut: + title: InteractionCreateOut + required: + - message + type: object + properties: + message: + title: Message + description: Human-readable message + type: string + example: success + InteractionDeleteIn: + title: InteractionDeleteIn + required: + - user_ids + type: object + properties: + user_ids: + title: User Ids + type: array + items: + type: string + InteractionDeleteOut: + title: InteractionDeleteOut + required: + - message + type: object + properties: + message: + title: Message + description: Human-readable message + type: string + example: success + Like: + title: like + required: + - type + type: object + properties: + type: + title: Type + description: | + + Used to record when a user indicates a `like` for a product. + enum: + - like + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + Listen: + title: listen + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used to record when and for how long a user listens to content that + is of an audio format. + enum: + - listen + type: string + duration: + title: Duration + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + type: number + example: 61.5 + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + LocationInformation: + title: LocationInformation + required: + - lat + - lon + type: object + properties: + lat: + title: Lat + type: number + example: 40.74844 + lon: + title: Lon + type: number + example: -73.985664 + MultipleGetRequest: + title: MultipleGetRequest + required: + - product_ids + type: object + properties: + engine_id: + title: Engine Id + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + type: string + user_id: + title: User Id + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + type: string + anonymous_id: + title: Anonymous Id + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + type: string + user_hash: + title: User Hash + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + type: string + product_ids: + title: Product Ids + description: > + + List of product_ids to retrieve. Products will be returned in the + same order as they are given in this list. + type: array + items: + type: string + fl: + title: Fl + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product + along with the `product_id`, which is always returned. + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields (which is the + default): + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field. + + ``` + + {"fl": []} + + ``` + type: array + items: + type: string + default: + - '*' + MultipleGetResponse: + title: MultipleGetResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/MultipleGetResponseBody' + MultipleGetResponseBody: + title: MultipleGetResponseBody + description: >- + Return a list of Product records. Some or all of them are potentially + not found + required: + - products + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/RecordWithFound' + OrderByDefinition: + title: OrderByDefinition + required: + - field + type: object + properties: + field: + title: Field + description: >+ + + Name of the field to order by. You can sort by any numeric and + boolean fields in your Product catalog, or use one of any special + fields: + * **_personalization_score**: the score that rates the degree of + affinity between + + a pair of user and product from Miso's personalization algorithm. + + * **_search_score**: the score that rates the degree of search + keyword matches to a product's catalog. + + * **_boosting_score**: the score that rates the degree a Product is + boosted by your boosting query. + + type: string + tie_breaker: + $ref: '#/components/schemas/TieBreakDefinition' + default_value: + title: Default Value + description: The default value to use when the scores do not exist for a Product + type: number + default: 0 + geo: + $ref: '#/components/schemas/BaseGeo' + order: + title: Order + enum: + - desc + - asc + default: desc + type: string + x-konfig-properties: + tie_breaker: + title: Tie Breaker + default: + type: relative_difference + threshold: 0 + geo: + title: Geo + description: >- + The geo point to compute the `_geo_distance` variable against. This + is only required if + `_geo_distance` is present in the formula. + Page: + title: Page + required: + - url + type: object + properties: + title: + title: Title + description: Title of the page + type: string + example: My Product Page + url: + title: Url + description: Url of the page + type: string + example: https://example.com/miso-tshirt-123ABC + referrer: + title: Referrer + description: Url of the referrer page + type: string + example: https://example.com/ + PartialMatchedRecord: + title: PartialMatchedRecord + required: + - product_id + type: object + properties: + product_id: + title: Product Id + description: |2- + + The unique identifier for the product. + + maxLength: 512 + type: string + example: 123ABC-S-Black + PollAnswerResponse: + title: PollAnswerResponse + required: + - data + type: object + properties: + message: + title: Message + description: >- + The status of the API response ('success' or other human readable + api status). + type: string + default: success + data: + $ref: '#/components/schemas/AnswerData' + x-konfig-properties: + data: + title: Data + description: >- + The answer data containing the latest answer, sources, and related + resources. + PostQuestionRequest: + title: PostQuestionRequest + description: Post questions request + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/app__schemas__engine_api__request__Question' + ProductBulkDeleteIn: + title: ProductBulkDeleteIn + required: + - data + type: object + properties: + data: + $ref: '#/components/schemas/ProductIdList' + ProductBulkIn: + title: ProductBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/ProductRecord' + ProductDetailPageView: + title: product_detail_page_view + required: + - type + type: object + properties: + type: + title: Type + description: >- + Used when a user views the detail page of a product. Viewing a + product + detail page usually indicates a user is interested in the product to certain degree, especially, + when the `duration` of the page view is long. When `duration` of the page view is very short (< 5 seconds), + `product_detail_page_view` may indicate neural or negative interest in the product. + enum: + - product_detail_page_view + type: string + duration: + title: Duration + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + type: number + example: 61.5 + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + ProductIdList: + title: ProductIdList + required: + - product_ids + type: object + properties: + product_ids: + title: Product Ids + type: array + items: + type: string + ProductIds: + title: ProductIds + required: + - ids + type: object + properties: + ids: + title: Ids + type: array + items: + type: string + ProductImageView: + title: product_image_view + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used when a user views the image of a product (e.g. to enlarge a + product photo). + enum: + - product_image_view + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + ProductListOut: + title: ProductListOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + data: + $ref: '#/components/schemas/ProductIds' + ProductReadOut: + title: ProductReadOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + data: + $ref: '#/components/schemas/ProductRecord' + ProductRecord: + title: ProductRecord + required: + - product_id + type: object + properties: + tags: + title: Tags + description: | + + The tags that have been associated with the product. + + For example: + ``` + {"tags": ["TAG_1", "TAG_2", ...]} + ``` + type: array + items: + type: string + example: + - cute + - anime + - dogs + - t-shirt + title: + title: Title + description: > + + The title of the product. During a search, Miso will put predictive + weight behind the title, + + because it is often the main way users identify a product. + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + description: + title: Description + description: > + + The `description` text of the product. Miso assumes `description` + contains longer textual content than other + + string-based fields. For example, term frequency matters more here + than in a field like the title. Miso’s + + semantic understanding can extract a lot of valuable information + from having a product description that is + + plain-spoken and detailed. + type: string + example: >- + This cute Shiba inu dog eating Miso soup is perfect for those who + love Japanese culture. + product_id: + title: Product Id + description: > + + The unique identifier for this product. The Id can be in any format + you use in your product + + database (e.g. the product's SKU, UPC, or UUID or serial number). We + will use this Id to track how users + + interact with products and content in the Interactions records you + upload to Miso. It is important to keep the Id + + consistent between two datasets. For products that have multiple + variants, you should have a unique + + `product_id` for each variant, and use `product_group_id` to group + them together. + + + For example, for a T-shirt with SKU `123ABC` that comes in 4 sizes: + `S`, `M`, `L`, `XL`, we should create four different + + products: + + + ``` + + { + "product_id": "123ABC-S", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-M", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-L", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-XL", + "product_group_id" "123ABC" + } + + ``` + + * Constraints + * Can't contain `,` + * Can't start with `_` + * Length <= 512 + maxLength: 512 + minLength: 1 + type: string + example: 123ABC-S-Black + product_group_id: + title: Product Group Id + description: > + + The `product_group_id` is used to prevent the same product (but a + different variant) from showing multiple + + times in the search or recommendation results. When one product has + multiple variants (for example, different + + sizes, colors, or materials), you should assign a unique product_id + to each variant, but assign the same + + `product_group_id` to all of them. If `product_group_id` is not + given, we default to the value of `product_id`. + type: string + example: 123ABC + parent_id: + title: Parent Id + description: >+ + + The `parent_id` is used to declare a parent-child relationship + between two "Products". + + Such relationships are common in marketplaces and content media + sites with user generated contents. + + For example, an E-commerce marketplace (such as E-bay or Amazon) + + may have "Shops" (as parents) and "Merchandises" + + (as children), and a social streaming site, such as YouTube, may + have "Channel" (as parents) and "Video" (as children). In these + sites, both entities can be modeled as "Products", and can both be + returned in Search and Recommendation APIs. + + + Declaring the parent-child relationships allows Miso to + automatically propagate interactions from one product to the other. + + For example, when a user "watch" a + + Video, Miso will propagate this signal to the + + Channel which publishes this Video, even if users do not directly + interact with the Channel page. Such implicit + + interactions + + are particularly useful when making recommendations for Channel + because it gives Miso much more information + + about users' interests to different Channels than solely relying on + users' direct interactions with the + + them, which happens less often. + + + `parent_id` needs to be a non-empty string referring to the + `product_id` of the parent product. + + The parent product can be uploaded in a separate batch, and does not + need to exist before its children products. + + + The implicit interactions will only exist during Miso's training + process, and will not show up in the + + Interaction dataset. + + type: string + example: Nike_Shop_123 + related_ids: + title: Related Ids + description: >- + The product_id or product_group_id of other products that are + related to this Product + type: array + items: + type: string + type: + title: Type + description: > + + The `type` of product. This is for sites that have more than one + type of product or content that they want their users + + to interact with. If your site has only one type of product, you can + leave this field out. + + A classic example is travel sites, which have both *hotel* and + *flight* sales. It is also useful for sites that let + + users interact with products as well as *product bundles*. For + example, on YouTube, each video is a product that users + + can watch, while each channel, containing multiple videos, is also a + product that users can subscribe to. + + + For model quality, it is preferable to model all these distinct + product types in the same data set, so that a user's + + interests for one type of product can inform their interests in + another type of products. The `type` field helps Miso + + make these distinctions. + type: string + example: clothes + language: + title: Language + description: > + + The `language` of the product description and content in [two-letter + ISO 639-1 code](https://en.wikipedia.org/wiki/ISO_639-1). For + example, English = `en`, Chinese = `zh`. + + Miso will use this field to determine the proper way to index the + product description. If this field is not specified, + + we will determine the language automatically. + + + We also use the language field to determine users’ interests in + content of different languages. This is particularly + + important for content media sites that have different languages of + content. + + + * Constraints: + * [Two-letter ISO 639-1 code](https://en.wikipedia.org/wiki/ISO_639-1). + For example, English = `en`, Chinese = `zh`. + minLength: 2 + type: string + example: en + created_at: + title: Created At + description: > + + The time when the product was first created or became available on + your site as an ISO-8601 date or datetime string. + anyOf: + - type: string + format: date-time + - type: string + format: date + published_at: + title: Published At + description: > + + The time when the product was published as an ISO-8601 date or + datetime string. + anyOf: + - type: string + format: date-time + - type: string + format: date + updated_at: + title: Updated At + description: > + + The time when the product was updated as an ISO-8601 date or + datetime string. + anyOf: + - type: string + format: date-time + - type: string + format: date + categories: + title: Categories + description: > + + In Miso, you describe a product or content category as a + hierarchical list of strings from broad to narrow, + + called a `category`. (See the `category_page_view` interaction.) + + + Use the `categories` field of products to specify the hierarchical + category or categories that the product + + belongs to. A product may belong to only a single `category`, or + multiple. + + + For example, a product could be in both: + * *Toys & Games > Toys > Dolls, Playsets & Toy Figures > Stuffed Animals*, and + * *Arts & Entertainment > Hobbies & Creative Arts > Collectibles*. + + This field should be a list of a list of strings, where category levels go from broad to narrow, such as: + + ``` + + {"categories": + [ + // the first category the product belongs to + ["TOYS & GAMES", "TOYS", "DOLLS, PLAYSETS & TOY FIGURES", "STUFFED ANIMALS"], + // the second category the product belongs to + ["ARTS & ENTERTAINMENT", "HOBBIES & CREATIVE ARTS", "COLLECTIBLES"] + ] + } + + ``` + + + If your product taxonomy has only one single level, that is not an + issue: + + ``` + + {"categories": + [ + // the first category the product belongs to + ["Toys"], + // the second category the product belongs to + ["Collectibles"] + ] + } + + ``` + + + The categories are optional, but very important for profiling the + products and tracking users' preferences. + + (See also the `category_page_view` interaction) + type: array + items: + type: array + items: + type: string + example: + - - Clothing, Shoes & Jewelry + - Women + - T-Shirts + - - Novelty + - Tops & Tees + - T-Shirts + url: + title: Url + description: > + + Url to the product detail page. This is for displaying the product + in your Dojo Sandboxes and is not used for Engine training. + + It is optional, but strongly recommended for a better Sandbox + experience. + maxLength: 65536 + minLength: 1 + type: string + format: uri + example: https://example.com/miso-tshirt-123ABC + cover_image: + title: Cover Image + description: > + + The URL of the cover image of the product. This is for displaying + the product in your Dojo Sandboxes and + + is not used for Engine training. It is optional, but strongly + recommended for a better Sandbox experience. + maxLength: 65536 + minLength: 1 + type: string + format: uri + example: https://example.com/miso-tshirt-123ABC.jpg + original_price: + title: Original Price + description: > + + The (original) price of the product. We only use this number to + calculate the amount of discount, and use that + + to profile user behaviors. + + + * Constraints: + * Need to be a number, but no constraint on the range of the number + type: number + example: 20 + sale_price: + title: Sale Price + description: | + + The sale price of the product. + + * Constraints: + * Need to be a number, but no constraint on the range of the number + type: number + example: 15 + margin: + title: Margin + description: > + + The margin of the product. Note that for our margin optimization + algorithm to work, the margin you specify here + does not need to be the actual dollar amount, but it needs to be something in proportion to that. + + * Constraints: + * Need to be a number, but no constraint on the range of the number + type: number + example: 15 + size: + title: Size + description: > + + The size of the product. For example, for an eCommerce site that + sells T-shirts, each T-shirt might come in + + several different sizes. In this case, we recommend that you should + create one product entry for + + each size variant. When Miso generate search or recommendation + results, we use the `product_group_id` to remove + + different variants of the same product, and only show the variant + that the user is most likely to buy. + type: string + example: S + color: + title: Color + description: > + + The color of the products. Similarly to `size`, when `color` of the + products matters, it is recommended to create + + one product for each color variant of a product. When Miso generate + search or recommendation results, + + we use the `product_group_id` to remove variants of the same + product, and only show the + + variant that the user is most likely to buy. + type: string + example: Black + material: + title: Material + description: > + + The material of the products. Similarly to `size` and `color`, if + `material` of the product matters and there + + are multiple material variants, we should create one product for + each material variant. When Miso generates search or + + recommendation results, we use the `product_group_id` to remove + variants of the same product, and only show the + + variant that the user is most likely to buy. + type: string + example: Cotton + condition: + title: Condition + description: > + + The condition of the product. By default, we assume `condition`= + `NEW` + enum: + - NEW + - USED + - REFURBISHED + type: string + default: NEW + brand: + title: Brand + description: | + + The brand of the product. + type: string + example: Miso Corp. + authors: + title: Authors + description: > + + The author(s) of the product or content asset. This field needs to + be an array of strings. + type: array + items: + type: string + example: + - Andy Hsieh + publishers: + title: Publishers + description: > + + The publisher(s) of the product or content asset. This field needs + to be an array of strings. + type: array + items: + type: string + example: + - O'Reilly Media + collections: + title: Collections + description: | + + The collection(s) the product belongs to. + type: array + items: + type: string + example: + - Anime T-Shirt Collection + - Superhero T-Shirt Collection + availability: + title: Availability + description: > + + The availability of the product. Miso mainly uses `availability` to + filter `OUT_OF_STOCK` items out of its recommendations. + + As a default, we assume the product is `IN_STOCK`. + enum: + - IN_STOCK + - OUT_OF_STOCK + - PRE_ORDER + type: string + location: + title: Location + description: > + + The location information of the product (e.g. for hotels or + restaurants). We support geolocation filtering + + and sorting when creating search and recommendation results if + location information is given. + anyOf: + - type: array + items: + $ref: '#/components/schemas/LocationInformation' + - $ref: '#/components/schemas/LocationInformation' + rating: + title: Rating + description: > + + The overall rating of the product in the range of [0, 5]. If you use + a different rating scale, please convert it + + to the range of [0, 5]. + type: number + example: 5 + html: + title: Html + description: > + + The HTML content of the product. Miso will search against this field + and apply semantic understanding in a way that is + + similar to the `description` field, but with HTML tags removed. + type: string + subtitle: + title: Subtitle + description: | + + The subtitle of the product (usually for contents). + type: string + headers: + title: Headers + description: > + + The headers in the content. This usually corresponds to `

`, + `

`, `

` ... tags in HTML. This field need to be an array of + strings + type: array + items: + type: string + paragraphs: + title: Paragraphs + description: > + + The text paragraphs in the content. This usually corresponds to + `

` tags in HTML. This field need to be an array of strings + type: array + items: + type: string + anchors: + title: Anchors + description: > + + The anchor texts paragraphs in the content. This usually corresponds + to `` tags in HTML. This field need to be an array of strings + type: array + items: + type: string + children: + title: Children + description: > + + Children objects of the product, such as chapters of a book, or + sections of a podcast. + + Children are only useful for long-form contents, and are only used + for snippet extraction purpose. + type: array + items: + $ref: '#/components/schemas/ChildrenObject' + enable_question_answering: + title: Enable Question Answering + description: > + + Whether to enable question answering capability against the `html` + field. + type: boolean + default: false + custom_attributes: + title: Custom Attributes + description: > + + Dictionary of custom attributes for the product. You can specify + attributes specific to your business + + in a `{"KEY":VALUE}` format, where `KEY` must be a string, and + `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + + + For example, a video streaming site using Miso may have the movie + *Jumanji* with the following custom attributes: + + + ``` + + { + "custom_attributes": { + "cast": [ + "Robin Williams", "Jonathan Hyde", ... + ], + "director": "Joe Johnston", + "genres": [ + "Adventure", "Fantasy", "Family" + ], + "filming_locations": [ + {"country": "USA", "state": "New Hampshire", "city": "Keene"}, + {"country": "Canada", "state": "British Columbia", "city": "Vancouver"} + ], + "popularity": 7.439, + "adult": false + } + } + + ``` + + + **The custom attribute types need to be consistent across every + record in the dataset**. + + For instance, in the example above, the **cast** attribute needs to + be a `string` or `an array of string` or `null` + + for every record in the dataset that specify **cast** attribute. + + + + Similarly, the popularity attribute needs to be a `number`, `an + array of numbers`, or `null` for every record in the + + dataset that specifies the popularity attribute. If you try to + insert a record with an incompatible data type, the + + insertion for that record will fail. + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: string + - type: array + items: + type: number + example: + cast: + - Robin Williams + - Jonathan Hyde + director: Joe Johnston + genres: + - Adventure + - Fantasy + - Family + popularity: 7.439 + adult: false + ProductToProductsResponse: + title: ProductToProductsResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/ProductToProductsResponseBody' + ProductToProductsResponseBody: + title: ProductToProductsResponseBody + required: + - products + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + description: Product recommendation results. + type: array + items: + $ref: '#/components/schemas/Record' + PromoPageView: + title: promo_page_view + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used when a user views a specific promotional or curated marketing + page about certain products or content. + enum: + - promo_page_view + type: string + duration: + title: Duration + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + type: number + example: 61.5 + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + QAAutocompleteResponse: + title: QAAutocompleteResponse + description: Autocomplete Response + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/QAAutocompleteResponseBody' + QAAutocompleteResponseBody: + title: QAAutocompleteResponseBody + description: Autocomplete Response + required: + - completions + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + completions: + title: Completions + type: array + items: + $ref: '#/components/schemas/app__schemas__engine_api__response__Question' + QAResponse: + title: QAResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/QAResponseBody' + QAResponseBody: + title: QAResponseBody + required: + - total + - spellcheck + - answers + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + total: + title: Total + description: Total number of Question-Answer hits. + type: integer + example: 1000 + spellcheck: + $ref: '#/components/schemas/SpellCheckResponse' + answers: + title: Answers + description: The Question-Answer results. + type: array + items: + $ref: '#/components/schemas/RecordWithAnswer' + x-konfig-properties: + spellcheck: + title: Spellcheck + description: >- + Spellcheck results. You can use the information in this object to + prompt users with the correct spelling. + QueryFilter: + title: QueryFilter + required: + - query + type: object + properties: + query: + title: Query + description: Query in Lucene syntax + type: string + key: + title: Key + description: User friendly label of the query result + type: string + QueryFilterRequireKey: + title: QueryFilterRequireKey + required: + - query + - key + type: object + properties: + query: + title: Query + description: Query in Lucene syntax + type: string + key: + title: Key + description: User friendly label of the query result + type: string + QuestionAnsweringRequest: + title: QuestionAnsweringRequest + required: + - q + - min_probability + type: object + properties: + version: + title: Version + description: > + + The model version to use. + + * **v1.2**: First stable version + + * **v1.3**: Improve keyword extraction that make answers more + precise + enum: + - v1.2 + - v1.3 + default: v1.2 + example: v1.2 + type: string + q: + title: Q + description: The question user has entered. + minLength: 1 + type: string + example: what is gradient descent + min_probability: + title: Min Probability + description: > + + Minimum acceptable probability (between 0.0 and 1.0). The answers + whose probability is lower than this number will be excluded + + from the response. + maximum: 1 + minimum: 0 + type: number + example: 0.7 + rows: + title: Rows + description: Number of search results to return. + type: integer + default: 1 + fl: + title: Fl + description: > + + List of fields to retrieve. Each Q&A response, by default, return + two fields `answer` and `product_id`, where + + `answer` is an object with the information about the answer + paragraph while + + `product_id` identifies the *Product* from which the answer is + extracted. + + + For example, the following is a sample response from the API: + + ``` + + { + "product_id": "ABC-123", + "answer": + { + "html": "

Python is an interpreted programming language

", + "text": "Python is an interpreted programming language", + "css_selector": ":root > div:nth-child(1) > p:nth-child(2)", + "probability": 0.99 + } + } + + ``` + + + You can use `fl` parameter to retrieve additional product fields. + For example, the following request + + additionally retrieves the `title` field for each product along + + with the `product_id` and `answer`, which are always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and all the `custom_attributes` fields. + + + ``` + + {"fl": ["title", "custom_attributes.*"]} + + ``` + + + The following request retrieves all the available product fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array (which is the default) to + retrieve just the `product_id` and `answer` fields. + + ``` + + {"fl": []} + + ``` + type: array + items: + type: string + default: [] + spellcheck: + $ref: '#/components/schemas/SpellCheckRequest' + enable_answer_html: + title: Enable Answer Html + description: >- + Whether to return HTML of the answer paragraph. If you don't need + the HTML content of the + answer paragraph, setting this parameter to `false` will reduce the response size and lower the + response latency. + type: boolean + default: false + enable_answer_block: + title: Enable Answer Block + description: > + + Whether to return *answer block*. + + In addition to answer paragraph, Miso can additionally return + *answer block*. + + Answer block is an ancestor HTML node of the answer paragraph that + contains the relevant context. + + The answer block is particularly useful for applications that not + only want to show + + the answer itself but also the **context** surrounding the answer. + + + Answer block is the smallest HTML element that contains the relevant + context. However, not all the content + + inside this node is relevant. You can use the returned + `relevant_children_slice` field + + to identify a portion of this node that is relevant to the answer. + type: boolean + default: false + fq: + title: Fq + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + type: string + boost_fq: + title: Boost Fq + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + type: string + boost_positions: + title: Boost Positions + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + type: array + items: + type: integer + boost_rules: + title: Boost Rules + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + default: [] + geo: + $ref: '#/components/schemas/GeoQuery' + boost_probability_threshold: + title: Boost Probability Threshold + description: > + + Minimum probability required for an answer to be boosted. If not + specified, the `min_probability` will be used. + type: number + x-konfig-properties: + spellcheck: + title: Spellcheck + description: Spellcheck configuration + default: + enable_auto_spelling_correction: true + geo: + title: Geo + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + QuestionAutocompleteRequest: + title: QuestionAutocompleteRequest + description: Post question autocomplete request + required: + - q + type: object + properties: + q: + title: Q + description: The query user has entered so far + minLength: 1 + type: string + example: what is g + rows: + title: Rows + description: Number of autocomplete results to return. + type: integer + default: 5 + QuestionRequest: + title: QuestionRequest + required: + - question + type: object + properties: + user_id: + title: User Id + description: >- + The user who made the query. For an anonymous visitor, use + `anonymous_id` instead. + type: string + anonymous_id: + title: Anonymous Id + description: The anonymous visitor who made this query. + type: string + fq: + title: Fq + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + type: string + question: + title: Question + description: The question for which an answer is requested. + type: string + parent_question_id: + title: Parent Question Id + description: >- + The UUID of the parent question if the current question is a + follow-up to a previous question. + type: string + format: uuid + yearly_decay: + title: Yearly Decay + description: The yearly decay rate for the answer score. + type: number + default: 0.93 + source_fl: + title: Source Fl + description: >+ + + A list of fields to be returned for the `sources`. Any fields in + uploaded product can be assigned, including fields in + `custom_attributes`. + + + If specificed field does not exist, that field will not be included + in the result. + + If you use different schema for `custom_attributes` across different + products, it is possible that not all returned sources has the some + fields. + + + For example, if you include `published_at` and `custom_attributes` + in `source_fl`: + + + ```json + + { + "question":"Explain Python GIL", + "source_fl":["published_at", "custom_attributes.rating"] + } + + ``` + + + The answer will contain `published_at` field for each source: + + + ```json + + { + "message": "success", + "data": { + "question": "Explain Python GIL", + "question_id": "57aeb083-b943-43b1-86ab-b6108788dd50", + "parent_question_id": null, + "answer_stage": "Generating summary", + "finished": true, + "answer": "# Explain Python GIL\n\n## Why do we need the GIL? [1]\n\nThe GIL is currently an essential part of the CPython...[omitted for simplicity]", + "sources": [ + { + "published_at": "2022-05-20T00:00:00+00:00", + "custom_attributes": { + "rating": 4.7 + }, + "product_id": "9781800207721", + "title": "Multiprocessing – When a Single CPU Core Is Not Enough", + "child_title": "Multiprocessing – When a Single CPU Core Is Not Enough", + "child_id": "16", + "snippet": "Remember the segmentation faults we saw in Chapter 11, ...[omitted]" + }, + { + "published_at": "2015-02-26T00:00:00+00:00", + "custom_attributes": { + "rating": 4.3 + }, + "product_id": "9780134034416", + "title": "5. Concurrency and Parallelism", + "child_title": "5. Concurrency and Parallelism", + "child_id": "12", + "snippet": "Click here to view code image\n...[omitted]" + }, + { + "published_at": "2020-04-30T00:00:00+00:00", + "custom_attributes": { + "rating": 3.5 + }, + "product_id": "9781492055013", + "title": "1. Understanding Performant Python", + "child_title": "1. Understanding Performant Python", + "child_id": "2", + "snippet": "Although it still locks Python into running ...[omitted]" + }, + { + "published_at": "2019-11-15T00:00:00+00:00", + "custom_attributes": { + "rating": 4.2 + }, + "product_id": "9780134854717", + "title": "7. Concurrency and Parallelism", + "child_title": "7. Concurrency and Parallelism", + "child_id": "16", + "snippet": "Although Python supports multiple threads of execution...[omitted]" + } + ], + "related_resources": [] + } + } + + ``` + + type: array + items: + type: string + default: + - title + related_resource_fl: + title: Related Resource Fl + description: >- + A list of fields to be returned for the `related_resources`. + Example: `['title', 'url']`. + type: array + items: + type: string + default: + - title + cite_start: + title: Cite Start + description: 'The citation start marker. Example: `[` or `{`' + type: string + cite_end: + title: Cite End + description: 'The citation end marker. Example: `]` or `}`' + type: string + QuestionResponse: + title: QuestionResponse + required: + - data + type: object + properties: + data: + $ref: '#/components/schemas/QuestionResponseData' + message: + title: Message + description: Human-readable message. + type: string + default: success + x-konfig-properties: + data: + title: Data + description: Question response data. + QuestionResponseData: + title: QuestionResponseData + required: + - question_id + type: object + properties: + question_id: + title: Question Id + description: The UUID for the submitted question. + type: string + format: uuid + Range: + title: Range + type: object + properties: + to: + title: To + description: End of the range (exclusive). + anyOf: + - type: string + - type: number + from: + title: From + description: Start of the range (inclusive). + anyOf: + - type: string + - type: number + key: + title: Key + description: User friendly label of the range + type: string + RangeRequireKey: + title: RangeRequireKey + required: + - key + type: object + properties: + to: + title: To + description: End of the range (exclusive). + anyOf: + - type: string + - type: number + from: + title: From + description: Start of the range (inclusive). + anyOf: + - type: string + - type: number + key: + title: Key + description: User friendly label of the range + type: string + Rate: + title: rate + required: + - type + type: object + properties: + type: + title: Type + description: | + + Used when a user gives a rating to a product or piece of content. + enum: + - rate + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + rating: + title: Rating + description: > + + The rating the user gave in the range of [0, 5]. This field is only + required by the `rate` interaction. As a + + convention in the RecSys community, a rating >= 3.5 is considered + positive, a rating <= 2 is negative, + + and otherwise a rating is neutral. If you use any other rating + scale, please normalize it to a [0, 5] scale. + type: number + example: 5 + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + Read: + title: read + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used to record when and for how long a user reads a piece of written + content. + enum: + - read + type: string + duration: + title: Duration + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + type: number + example: 61.5 + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + RecResponse: + title: RecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/BaseResponseBody' + Record: + title: Record + required: + - product_id + type: object + properties: + product_id: + title: Product Id + description: |2- + + The unique identifier for the product. + + maxLength: 512 + type: string + example: 123ABC-S-Black + RecordWithAnswer: + title: RecordWithAnswer + required: + - product_id + - answer + type: object + properties: + product_id: + title: Product Id + description: >- + The unique identifier of the product whose content contains the + answer. + maxLength: 512 + type: string + answer: + $ref: '#/components/schemas/Answer' + answer_block: + $ref: '#/components/schemas/AnswerBlock' + x-konfig-properties: + answer: + title: Answer + description: >- + The answer paragraph (i.e. a `

` node) whose text content can + answer users' question. + answer_block: + title: Answer Block + description: |2- + + In addition to the answer paragraph, we also return the **answer block**. + Answer block is the ancestor node of the answer paragraph that cover not only the answer, but also the relevant + context. This is particularly useful for applications that want to show + the answer itself but also the relevant context surrounding the answer. + + Answer block is the smallest HTML element that contains the relevant context. However, not all the content + inside this node is relevant. You can use the `relevant_children_slice` to identify a portion inside this + block that is relevant to the answer. + + RecordWithFound: + title: RecordWithFound + description: >- + Product record but support `_found=true / false` field. When + _found=false, + + the product_id will not be available. + required: + - product_id + type: object + properties: + product_id: + title: Product Id + description: |2- + + The unique identifier for the product. + + maxLength: 512 + type: string + example: 123ABC-S-Black + Refund: + title: refund + required: + - type + type: object + properties: + type: + title: Type + description: | + + Used when a user requests a refund of products they bought. + enum: + - refund + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + RemoveFromCart: + title: remove_from_cart + required: + - type + type: object + properties: + type: + title: Type + description: | + + Used when a user removes a product from their shopping cart. + enum: + - remove_from_cart + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + RemoveFromCollection: + title: remove_from_collection + required: + - type + type: object + properties: + type: + title: Type + description: | + + Used when a user removes a product from their personal collection. + enum: + - remove_from_collection + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + Search: + title: search + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used to record a search event with the keywords and filters the user + used. What a user searches for + + is a very powerful signal about their interests and what they will + eventually buy or consume, so it is important + + to capture this information with high fidelity. + enum: + - search + type: string + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + search: + $ref: '#/components/schemas/SearchInformation' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + search: + title: Search + description: > + + The search keywords and filters the user uses. This is only required + by `search` interaction. + SearchInformation: + title: SearchInformation + type: object + properties: + keywords: + title: Keywords + description: > + + The search keywords user use. Search keywords are strong signals to + users' interests. + type: string + default: '' + filters: + title: Filters + description: > + + Dictionary of filters users apply to the search results in the + following format: + `{"FIELD": ["SELECTION_1", "SELECTION_2"]}`. + type: object + additionalProperties: + type: array + items: + type: string + SearchRequest: + title: SearchRequest + type: object + properties: + engine_id: + title: Engine Id + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + type: string + user_id: + title: User Id + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + type: string + anonymous_id: + title: Anonymous Id + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + type: string + user_hash: + title: User Hash + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + type: string + user_cohort: + title: User Cohort + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + rows: + title: Rows + description: Number of search results to return. + type: integer + default: 5 + type: + title: Type + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + type: string + dedupe_product_group_id: + title: Dedupe Product Group Id + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + type: boolean + default: true + additional_interactions: + title: Additional Interactions + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + default: [] + fl: + title: Fl + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + type: array + items: + type: string + default: [] + exclude: + title: Exclude + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + type: array + items: + type: string + q: + title: Q + description: > + + The search query the user has entered. Miso will perform full-text + search and find any Products + + that contain every word in this query. You can also set `q="*"` to + match all Products, which is commonly used along + + with Product filtering query `fq` to implement Category Pages. + + + *(to make a search request, You need to specify either `q` or + `advanced_q`)* + minLength: 1 + type: string + advanced_q: + title: Advanced Q + description: > + + Like Google's Advanced Search, the `advanced_q` parameter let you + define query beyond simple full-text + + search. For one, you can use double-quotes to indicate a phrase + search. + + + For example, the following query will + + only match Products that contain the *phrase* "Toy Story 4", and + will not match Products like "4 Toy Story" + + (because the word order is not the same as the given query). + + ``` + + {"advanced_q": "full_text:\"Toy Story 4\""} + + ``` + + + If you don't want phrase search, you can enclose the search terms + with parenthesis to indicate regular full-text query. + + For example: + + ``` + + {"advanced_q": "full_text:(Toy Story 4)"} + + ``` + + + You can also use AND/OR boolean operators to combine multiple + full-text queries. For example, the following query will match + + Products with phrases "Toy Story 4" and Products with phrases "Toy + Story 3", and will not match "Toy Story 2" or "Toy Story 1": + + ``` + + {"advanced_q": + + "full_text:\"Toy Story 4\" OR full_text:\"Toy Story 3\""} + + ``` + + + Finally, you can use AND/OR boolean operators to combine full-text + search with metadata filtering. + + For example, the following example will find Products with phrase + "Toy Story" OR Products which have Tom Hanks as an actor. + + ``` + + {"advanced_q": + + "full_text:\"Toy Story\" OR + custom_attributes.actors:\"Tom Hanks\""} + ``` + + + *(to make a search request, You need to specify either `q` or + `advanced_q`)* + minLength: 1 + type: string + boosting_tags: + title: Boosting Tags + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + type: array + items: + type: string + default: [] + example: + - tag-1 + - quetag-2 + enable_boosting_campaigns: + title: Enable Boosting Campaigns + description: > + + When set to true, enable user defined boosting campaigns. + + + By default boosting campaigns are enabled. But you can explicitly + set this to false to disable + + boosting campaigns. + type: boolean + default: true + custom_context: + title: Custom Context + description: > + + Dictionary of custom context variables for the current browsing + session. You can specify context variables + + specific to your websites or apps in a `{"KEY":VALUE}` format, where + `KEY` must be a string, and `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + Miso will take these variables into account when generating + recommendations. + type: object + example: + session_variable_1: + - value_1 + - value_2 + language: + title: Language + description: > + + Two-letter (639-1) language code of the search query. This parameter + is useful when you have a multilingual + product catalog that contains product metadata in different languages. + If given, the search results will prioritize the products that have that specific language and match the search + query. Example query: + ``` + + {"language": "fr"} + + ``` + + + If not given, Miso will search against all the languages in the + catalog. + type: string + like: + title: Like + description: >- + The text snippet that we want to find products that are similar to + it + type: string + category: + title: Category + description: > + + `category` parameter limits the search results to a particular + category or sub-category. + + This is particularly suitable for implementing Category Pages where + + you want to show personalized ranking of Products under a specific + category. Other filters, such as `q`, + + `fq`, `boost_fq` will be applied on top of the category filter. + + + A category is represented by a list of strings that correspond to + its category hierarchy. + + For example, the following query returns Products under `Snacks` + category: + + ``` + + { + "q": "*", + "category": ["Snacks"] + } + + ``` + + And the following request returns Products under `Snacks -> Chips` + subcategory: + + ``` + + { + "q": "*", + "category": ["Snacks", "Chips"] + } + + ``` + type: array + items: + type: string + spellcheck: + $ref: '#/components/schemas/SpellCheckRequest' + start: + title: Start + description: > + + Specifies an offset from which Miso will begin returning results. + + + The default value is `0`. Setting the start parameter to some other + number, such as 3, causes Miso to skip over the + + preceding products and start from the product identified by the + offset. + type: integer + default: 0 + order_by: + title: Order By + description: > + + A list of fields that Miso should use to sort the result, instead of + Miso's default ranking order. + + + For example, the following query returns all the Products (because + `q=*`), ranked by the `_personalization_score` + + first, and then by the values in the + `custom_attributes.promote_score` field in the Product catalog, then + the + + distance between the product and New York city. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.05" + }, + "order": "desc" + }, + { + "field": "custom_attributes.promote_score", + "order": "desc" + }, + { + "field": "_geo_distance", + "geo": { + "lat": 40.711967, + "lon": -74.006076, + } + "order": "asc" + } + ] + } + + ``` + type: array + items: + $ref: '#/components/schemas/OrderByDefinition' + default: [] + facets: + title: Facets + description: > + + Specifies a list of fields to create facet search against. You can + specify `facets` in a string array. + + For example, the following query return the facet counts for + `categories`, `tags`, and `custom_attributes.director`: + + ``` + + { + "facets": [ + "categories", + "tags", + "custom_attributes.director" + ] + } + + ``` + + + The response will be like: + + ``` + + { + "facet_counts": { + "facet_fields": { + "categories": [ + [ + "Drama", 20 + ], + [ + "Action", 10 + ], ... + ], + "tags": [ + [ + "based on novel or book", 5 + ], + [ + "android", 4 + ], ... + ], + "custom_attributes.director": [ + [ + "Ridley Scott", 26 + ], + [ + "Andrew Abbott", 1 + ], ... + } + } + ``` + + + You can also specify `facets` with an object array to configure each + facet individually. + + For example, the following query will return 20 most common facet + values for `tags` + + and `custom_attributes.director` fields, + + and only the directors whose names start with `Ridley` will be + included in the director facet results. + + ``` + + { + "facets": [ + { + "field": "tags", + "size": 20 + }, + { + "field": "custom_attributes.director", + "size": 20, + "include": "Ridley.*" + } + ] + } + + ``` + type: array + items: + anyOf: + - $ref: '#/components/schemas/FacetDefinition' + - type: string + default: [] + facet_filters: + title: Facet Filters + description: >+ + + Specifies filters to the search results based on users' selections + in a faceted search UI. + + + For example, assume you have two facets in your faceted search UI: + `genres` and `custom_attributes.director`. + + When the user selects two options in the + `custom_attributes.director` facet, you should send the following + query to + + filter the search results for those two options (i.e. `Ridley Scott` + or `Denis Villeneuve`). + + + ``` + + { + "facets": [ + { + "field": "genres", + "size": 5 + }, + { + "field": "custom_attributes.director", + "size": 20 + } + ], + "facet_filters": { + "custom_attributes.director": { + "terms": [ + "Ridley Scott", + "Denis Villeneuve" + ] + } + }, + } + + ``` + + + While you can use `fq` parameter to achieve the same filtering + capability, + + you should use `facet_filters` to get the correct facet counts. + + + In a typical faceted search UI, the facet counts reflect the search + result after applying + + filters from **all but the current facets**. For example, in the + query below, + + the *directors* facet counts + should reflect the search result after applying the filter from the *genres* facet, i.e. `genres:Sci-Fi`. + Similarly, *genres* facet counts should reflect the search result after applying the filter from the *directors* facet. + + `facet_filters` will make the resulting `facet_counts` follow this + *all but except itself* convention, which is rather + tricky to implement with `fq`. + ``` + "facets": [ + { + "field": "genres", + "size": 5 + }, + { + "field": "custom_attributes.director", + "size": 20 + } + ], + "facet_filters": { + "custom_attributes.director": { + "terms": [ + "Ridley Scott", + "Denis Villeneuve" + ] + } + }, + } + + ``` + + type: object + additionalProperties: + $ref: '#/components/schemas/Filter' + default: {} + anchoring_settings: + title: Anchoring Settings + description: > + + Promote a product to a position relative to the highest-ranked + anchor product. + + + A common use-case is promoting a private-label good by anchoring it + to a name-brand counterpart. When the name-brand good (the anchor) + appears in a search result, the private-label good also appears in + the result (at a specified distance from the anchor product). + + + The `anchoring_settings` object has the following fields: + + * **product_id** - The `product_id` of the product you want to + promote. + + * **anchor_ids** - The array of `product_ids` that act as the + anchors. + + * **relative_position** *(optional)* - The position that the + promoted product will be returned in the search results, relative to + the highest-ranked anchor product. For example, setting this + parameter to `1` will place the promoted product directly after the + anchor product. The default value is `-1`, which will place the + promoted product directly before the anchor product. + + * **start_time** *(optional)* - An ISO-8601 timestamp indicating + when to start the product anchoring. Ex: `2022-01-29T00:00:00Z` + + * **end_time** *(optional)* - An ISO-8601 timestamp indicating when + to end the product anchoring. Ex: `2022-05-31T23:59:59Z` + + + For example, if a user searches for "cookies", the API request might + look like this: + + + ``` + + POST v1/search/search + + { + "q":"cookies", + "anchoring_settings": [ + { + "product_id": "private_label_cookies", + "anchor_ids": [ + "name_brand_cookies_1", + "name_brand_cookies_2" + ], + "relative_position": -1, + "start_time": "2022-01-01T00:00:00Z", + "end_time": "2022-12-31T23:59:59Z" + } + } + ] + } + + ``` + type: array + items: + $ref: '#/components/schemas/AnchoringEntry' + default: [] + enable_partial_match: + title: Enable Partial Match + description: > + + Enable *partial match* to return products that match only *some* of + the keywords in a user's search query. By default, + + Miso's Search API only returns products that contain *all* the + keywords in the search query (i.e. an AND operator over + + keywords). This strategy usually leads to highly relevant results. + However, when we don't have enough search results to + + return to the users, enabling partial match allows the Search API to + relax the criteria and return products that match + + only some of the keywords. + + + This strategy is particularly useful to prevent users from seeing an + empty search result page and abandoning their + + search. + + + For example, let's consider the query request below: + + ``` + + { + "query": "Toy story 5", + "enable_partial_match": true + } + + ``` + + Since there is no movie called "Toy story 5", we have zero products + to return by default. However, because we set `enable_partial_match` + to `true`, we will return other products that partially match the + query: + + ``` + + { + + "data": { + "products": [ + { + "title": "Toy Story", + "_missing_keywords": ["5"] + }, + { + "title": "Toy story 2", + "_missing_keywords": ["5"] + }, + ... + ], + "total": 4 + } + + } + + ``` + + As you can see from the result above, when we don't have the exact + product that the user is looking for, enabling partial match is a + helpful strategy to let users know what alternatives are available, + and prevent them from seeing an empty search result page. + type: boolean + default: false + partial_match_mode: + title: Partial Match Mode + description: > + + Determine which partial match mode to enable: + * **blended** (default): When `partial_match_mode` is `blended`, keyword-matched items and semantically-matched items will + be returned in the same, rank-sorted array. + * **separated**: When `partial_match_mode` is `separated`, keyword-matched items will be returned in the `products` array + and partially-matched or semantically-matched items will be returned + in the `partially_matched_products` array. + enum: + - blended + - separated + default: blended + type: string + enable_partial_match_threshold: + title: Enable Partial Match Threshold + description: > + + If `partial_match_mode=separated`, you need to provide a value for + `enable_partial_match_threshold`. + + This parameter, which accepts an integer (*n*), creates a condition + for Miso’s Search Engine to only provide partially + + matched results if there are *n* or fewer exact keyword matches. For + example, if we set `enable_partial_match_threshold=3`, + + partially matched results will *only* be returned when there are + three or fewer exact keyword matches. + type: integer + enable_semantic_search: + title: Enable Semantic Search + description: > + + Enable *semantic search* to return products that are semantically + relevant to the search query. + + Semantic search is a powerful tool that further improves the partial + match results. It finds products that might not contain + + any of the search keywords, but are highly relevant to users' search + intent. + + + For example, consider the query: `rubbing alcohol`, which is a + household cleaning product. When `enable_semantic_search=true`, + + even if we do not have any products that match `rubbing alcohol`, + Miso is still able to return results like the + + following: + + ``` + + { + + "data": { + "products": [], + "total": 0, + "partially_matched_products": [ + { + "title": "Clorox Disinfecting Wipes Multi-Surface Cleaning", + "_missing_keywords": ["rubbing", "alcohol"] + }, + { + "title": "Purell Advanced Hand Sanitizer Refreshing Gel", + "_missing_keywords": ["rubbing", "alcohol"] + }, + ... + ] + } + + } + + ``` + + Note that, these two products from Clorox or Purell do not contain + any of the search keywords, + + Miso's semantic search functionality, however, is still able to + identify them as good matches based on their semantic + + relevancy to the query `rubbing alcohol`. + + + Similarly, consider a single word search query: `aspirin`. Normally, + a single-word query will lead to an empty search + + page if we don't have products containing that word. However, when + `enable_semantic_search=true`, + + even if we do not directly have `aspirin` in the product catalog, + Miso is still able to return results that are highly + + relevant to users' search intent, such as: + + ``` + + { + + "data": { + "products": [], + "total": 0, + "partially_matched_products": [ + { + "title": "Advil Pain Reliever and Fever Reducer", + "_missing_keywords": ["aspirin"] + }, + { + "title": "Tylenol Extra Strength Caplets", + "_missing_keywords": ["aspirin"] + }, + ... + ] + } + + } + + ``` + type: boolean + default: false + semantic_search_threshold: + title: Semantic Search Threshold + description: > + + Determine the threshold for semantic search. Only the products with + a semantic similarity score higher than the + + threshold will be returned. Setting this too low (e.g. < 0.3) will + result in less relevant results being returned. + type: number + default: 0.5 + enable_matched_fields: + title: Enable Matched Fields + description: >+ + + Determine whether to return `_matched_fields` in the search response + (default: false). + + If `enable_matched_fields=true`, + + each returned product will have an `_matched_fields` array that + shows which parts of the product catalog match + the search query. + + For example, the following request will return `_matched_fields`: + ``` + + { + "q": "toy story", + "enable_matched_fields": true + } + + ``` + + The response will be like: + + ``` + + { + "data": { + "products": [ + { + "title": "Toy Story", + "_matched_fields": ["title", "metadata"] + }, + ... + ] + } + } + + ``` + + Currently, `_matched_fields` only contain three kinds of fields: + * `title` + * `description` + * `metadata`, including all the fields beyond title or description in the product catalog. + + type: boolean + default: false + query_product_existence: + $ref: '#/components/schemas/CheckProductExistence' + personalization_weight: + title: Personalization Weight + description: Determines how much personalization will affect the search ranking. + maximum: 5 + minimum: 0 + type: integer + default: 5 + fq: + title: Fq + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + type: string + boost_fq: + title: Boost Fq + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + type: string + boost_positions: + title: Boost Positions + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + type: array + items: + type: integer + boost_rules: + title: Boost Rules + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + default: [] + geo: + $ref: '#/components/schemas/GeoQuery' + diversification: + title: Diversification + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + x-konfig-properties: + spellcheck: + title: Spellcheck + description: Spellcheck configuration + default: + enable_auto_spelling_correction: true + query_product_existence: + title: Query Product Existence + description: >- + Additionally check if certain products will be in the search result + at all (regardless of `start` and `rows` parameters) + geo: + title: Geo + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + SearchResponse: + title: SearchResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/SearchResponseBody' + SearchResponseBody: + title: SearchResponseBody + required: + - products + - total + - start + - spellcheck + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + description: The search results. + type: array + items: + $ref: '#/components/schemas/PartialMatchedRecord' + total: + title: Total + description: Total number of search hits. + type: integer + example: 1000 + start: + title: Start + description: Starting offset of the search results. + type: integer + example: 0 + spellcheck: + $ref: '#/components/schemas/SpellCheckResponse' + product_existence: + title: Product Existence + description: Product existence query result + type: object + additionalProperties: + type: boolean + partially_matched_products: + title: Partially Matched Products + description: The search results that only partially match the search query. + type: array + items: + $ref: '#/components/schemas/PartialMatchedRecord' + facet_counts: + $ref: '#/components/schemas/FacetCounts' + custom_assets: + title: Custom Assets + description: Custom JSON assets uploaded in Dojo. + type: array + items: + type: object + default: [] + x-konfig-properties: + spellcheck: + title: Spellcheck + description: >- + Spellcheck results. You can use the information in this object to + prompt users with the correct spelling. + facet_counts: + title: Facet Counts + description: Facet counts + default: {} + SendExperimentResponse: + title: SendExperimentResponse + required: + - took + - in_experiment + - variant + type: object + properties: + took: + title: Took + description: >- + The amount of time (in milliseconds) Miso took to answer this + request. + type: integer + example: 50 + in_experiment: + title: In Experiment + description: To show whether the experiment is active or not. + type: boolean + variant: + $ref: '#/components/schemas/VariantObject' + Share: + title: share + required: + - type + type: object + properties: + type: + title: Type + description: | + + Used when a user shares a product or piece of content. + enum: + - share + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + SpellCheckRequest: + title: SpellCheckRequest + type: object + properties: + enable_auto_spelling_correction: + title: Enable Auto Spelling Correction + description: > + + This parameter controls whether to automatically correct a misspell + search query. + + If set to `true`, when Miso detects spelling errors, the search + results will be based on the + **corrected** spelling suggested by Miso. + + You call tell if Miso made any correction to the search query by + checking the + + `spellcheck.auto_spelling_correction` field in the + + API response. When this field is `true`, the search results are + based on the suggested spelling + + as opposed to the users' original query. + + + You can opt-out the spelling correction by setting this parameter to + `false`. In such cases, + + Miso will still detect spelling errors, + + but the search results will be always based on users' original + spelling. + type: boolean + default: true + SpellCheckResponse: + title: SpellCheckResponse + required: + - spelling_errors + - auto_spelling_correction + - original_query + - original_query_with_markups + - corrected_query + - corrected_query_with_markups + type: object + properties: + spelling_errors: + title: Spelling Errors + description: Whether Miso detects any spelling errors. + type: boolean + auto_spelling_correction: + title: Auto Spelling Correction + description: >- + Whether Miso has automatically corrected the misspelled search + query. When this field is `true`, the search result is based on the + corrected spelling in the `corrected_query` field instead of users' + original search query. + type: boolean + original_query: + title: Original Query + description: Original query string + type: string + example: what is pythn + original_query_with_markups: + title: Original Query With Markups + description: >- + Original query with the spelling errors (if any) surrounded by the + tags + type: string + example: what is pythn + corrected_query: + title: Corrected Query + description: >- + The corrected spelling suggested by Miso. If no spelling error is + detected, this will be the same as `original_query` + type: string + example: what is python + corrected_query_with_markups: + title: Corrected Query With Markups + description: >- + The corrected spelling suggested by Miso where the revised tokens + are surrounded by the tags. + type: string + example: what is python + Subscribe: + title: subscribe + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used when a user subscribes a product, for example to receive alerts + when the product comes back in stock or if the price drops. + enum: + - subscribe + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + TaskId: + title: TaskId + required: + - task_id + type: object + properties: + task_id: + title: Task Id + type: string + TieBreakDefinition: + title: TieBreakDefinition + type: object + properties: + type: + title: Type + enum: + - relative_difference + default: relative_difference + type: string + threshold: + title: Threshold + type: number + default: 0 + TitleCompletion: + title: TitleCompletion + description: title completion additionally has the `product` the title belongs to. + required: + - text + - text_with_markups + - text_with_inverted_markups + - product + type: object + properties: + text: + title: Text + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_markups: + title: Text With Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_inverted_markups: + title: Text With Inverted Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + product: + $ref: '#/components/schemas/Record' + x-konfig-properties: + product: + title: Product + example: + product_id: 123ABC-S-Black + TrendRecResponse: + title: TrendRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/TrendResponseBody' + TrendResponseBody: + title: TrendResponseBody + required: + - products + type: object + properties: + took: + title: Took + description: Number of milliseconds Miso took to retrieve the results. + type: integer + default: 0 + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + description: Trending product results. + type: array + items: + $ref: '#/components/schemas/Record' + UserBulkDeleteIn: + title: UserBulkDeleteIn + required: + - data + type: object + properties: + data: + $ref: '#/components/schemas/UserIdList' + UserBulkIn: + title: UserBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/UserRecord' + UserIdList: + title: UserIdList + required: + - user_ids + type: object + properties: + user_ids: + title: User Ids + type: array + items: + type: string + UserReadOut: + title: UserReadOut + required: + - message + - data + type: object + properties: + message: + title: Message + description: Human-readable message + type: string + example: success + data: + $ref: '#/components/schemas/UserRecord' + UserRecord: + title: UserRecord + required: + - user_id + type: object + properties: + description: + title: Description + description: > + + Text description of the user. This can be the user's own bio or the + internal notes about the user. If available, + + Miso will analyze this description to better profile a user. + type: string + example: Engineer from Northwind Corp + user_id: + title: User Id + description: > + + Unique identifier for a user who has signed in. `user_id` can be in + any format (e.g. users' email, internal user + + UUID or serial ID). The only restriction is that the first character + must not be an underline `_`. Miso will use + + this id to cross-reference your User records with your Interaction + records. + maxLength: 512 + minLength: 1 + type: string + example: user_1234 + created_at: + title: Created At + description: > + + The date the user’s account was created as an ISO-8601 date or + datetime string. + anyOf: + - type: string + format: date-time + - type: string + format: date + updated_at: + title: Updated At + description: > + + The date the user’s account was updated as an ISO-8601 date or + datetime string. + anyOf: + - type: string + format: date-time + - type: string + format: date + name: + title: Name + description: The user's full name. + type: string + example: John Doe + profile_image: + title: Profile Image + description: URL to the profile image of the user. + maxLength: 65536 + minLength: 1 + type: string + format: uri + age: + title: Age + description: Age of the user. We will internally convert it to year of birth. + type: integer + example: 33 + gender: + title: Gender + description: The user's gender. + type: string + example: M + city: + title: City + description: City or zipcode the user is based in. + type: string + example: Mountain View + state: + title: State + description: State the user is based in. + type: string + example: California + country: + title: Country + description: Country the user is based in. + type: string + example: US + group_id: + title: Group Id + description: > + + Group or Account ID from your CRM. This is useful in B2B scenarios. + For example, you can use `group_id` to + + associate a user with their company or account. We will use this + information to infer the user's interests and + + fine-tune their personalization and search results. For example, + users from the same group might have similar + + interests on the site, and we can improve their user experience + accordingly + type: string + example: Northwind Corp + custom_attributes: + title: Custom Attributes + description: > + + Dictionary of custom attributes about the user. As with the [Product + API](#operation/content_write_api_v1_products_post), you can specify + attributes specific to your business in a `{"KEY" : VALUE}` format, + where `KEY` must be a string, and + `VALUE` can be: + * a `string` or `an array of strings` + + * a `number` or `an array of numbers` + + * an `array of objects` + + * a `bool` + + * `null` + + + * Example: + + ``` + + { + "custom_attributes": { + "acquisition_channel": "Facebook Campaign 2020", + "declared_interests": ["Drama", "Romance"] + } + } + + ``` + + These custom attributes types must be consistent across all User + records in your data set. + + Records with inconsistent types will fail to be inserted. + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + example: + acquisition_channel: Facebook Campaign 2020 + declared_interests: + - Drama + - Romance + UserToAttributes: + title: UserToAttributes + description: >- + User to attributes recommendations. Given a user, recommend + + product attributes the user will be interested in as well as products in + those attributes + required: + - field + type: object + properties: + boosting_tags: + title: Boosting Tags + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + type: array + items: + type: string + default: [] + example: + - tag-1 + - quetag-2 + field: + title: Field + description: > + + + The attribute you want to make recommendations for. For example, the + following + + query will recommend values from the `brand` field that Miso thinks + the user will be interested in: + + + ``` + + {"field": "brand"} + + ``` + + + This API also works for custom attributes you define. For example, + + if you provide a `designer` custom attribute, then, you can make + `designer` recommendations with the following query. + + ``` + + {"field": "custom_attributes.designer"} + + ``` + type: string + boost_attributes: + title: Boost Attributes + description: |+ + + + The attributes to boost to the top of the recommendations + + type: array + items: + type: string + default: [] + exclude_attributes: + title: Exclude Attributes + description: |+ + + + The attributes to remove from the recommendations + + type: array + items: + type: string + default: [] + rows: + title: Rows + description: Number of product recommendations to return + type: integer + default: 5 + products_per_attribute: + title: Products Per Attribute + description: > + + Number of personalized product recommendations to make for **each** + recommended attribute. For example, the following + + query will return 5 products for each *brand* we recommend: + + ``` + + { + "field": "brand", + "products_per_attribute": 2 + } + + ``` + + + Note that a large number of `products_per_attribute` will increase + latency slightly because we need to + + perform more computation for each of the recommended attributes. If + you only need attribute + + recommendations, you can set + + `products_per_attribute=0` to reduce latency. + type: integer + default: 2 + engine_id: + title: Engine Id + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + type: string + user_id: + title: User Id + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + type: string + anonymous_id: + title: Anonymous Id + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + type: string + user_hash: + title: User Hash + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + type: string + user_cohort: + title: User Cohort + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + type: + title: Type + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + type: string + dedupe_product_group_id: + title: Dedupe Product Group Id + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + type: boolean + default: true + additional_interactions: + title: Additional Interactions + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + default: [] + fl: + title: Fl + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + type: array + items: + type: string + default: [] + exclude: + title: Exclude + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + type: array + items: + type: string + fq: + title: Fq + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + type: string + boost_fq: + title: Boost Fq + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + type: string + boost_positions: + title: Boost Positions + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + type: array + items: + type: integer + boost_rules: + title: Boost Rules + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + default: [] + geo: + $ref: '#/components/schemas/GeoQuery' + x-konfig-properties: + geo: + title: Geo + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + UserToCategories: + title: UserToCategories + description: Attributes for recommendation boosting + type: object + properties: + engine_id: + title: Engine Id + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + type: string + user_id: + title: User Id + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + type: string + anonymous_id: + title: Anonymous Id + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + type: string + user_hash: + title: User Hash + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + type: string + user_cohort: + title: User Cohort + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + rows: + title: Rows + description: Number of recommended categories to return + type: integer + default: 5 + type: + title: Type + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + type: string + dedupe_product_group_id: + title: Dedupe Product Group Id + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + type: boolean + default: true + additional_interactions: + title: Additional Interactions + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + default: [] + fl: + title: Fl + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + type: array + items: + type: string + default: [] + exclude: + title: Exclude + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + type: array + items: + type: string + boosting_tags: + title: Boosting Tags + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + type: array + items: + type: string + default: [] + example: + - tag-1 + - quetag-2 + products_per_category: + title: Products Per Category + description: >- + + + Number of products to return for **each** category. For example, the + following + + query will return 5 products for each category we recommend: + + ``` + + {"products": 5} + + ``` + + Note that, a large number of `products_per_category` (say >= 20) + will increase query latency (up to around 200ms) + + because we need to perform more computation for each of the + recommended categories. If you + + only need category recommendations, you should set + `products_per_category` to 0 to reduce latency. + type: integer + default: 5 + root_category: + title: Root Category + description: >- + + If `root_category` is specified, we will only recommend categories + that are direct children of each of the root + + category. For example, the following query will recommend the + products of category that is under `["Clothes"]` category: + + ``` + + {"root_category": ["Clothes"]} + + ``` + + For another example, the following query will recommend the products + of category that is under `["Clothes", "Dresses"]` category + + ``` + + {"root_category": ["Clothes", "Dresses"]} + + ``` + + If `root_category` is not specified, we will recommend the *top + level* categories. + type: array + items: + type: string + default: [] + fq: + title: Fq + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + type: string + boost_fq: + title: Boost Fq + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + type: string + boost_positions: + title: Boost Positions + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + type: array + items: + type: integer + boost_rules: + title: Boost Rules + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + default: [] + geo: + $ref: '#/components/schemas/GeoQuery' + x-konfig-properties: + geo: + title: Geo + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + UserToItemsRequest: + title: UserToItemsRequest + description: Attributes for recommendation boosting + type: object + properties: + engine_id: + title: Engine Id + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + type: string + user_id: + title: User Id + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + type: string + anonymous_id: + title: Anonymous Id + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + type: string + user_hash: + title: User Hash + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + type: string + user_cohort: + title: User Cohort + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + rows: + title: Rows + description: Number of product recommendations to return + type: integer + default: 5 + type: + title: Type + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + type: string + dedupe_product_group_id: + title: Dedupe Product Group Id + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + type: boolean + default: true + additional_interactions: + title: Additional Interactions + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + default: [] + fl: + title: Fl + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + type: array + items: + type: string + default: [] + exclude: + title: Exclude + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + type: array + items: + type: string + boosting_tags: + title: Boosting Tags + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + type: array + items: + type: string + default: [] + example: + - tag-1 + - quetag-2 + fq: + title: Fq + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + type: string + boost_fq: + title: Boost Fq + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + type: string + boost_positions: + title: Boost Positions + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + type: array + items: + type: integer + boost_rules: + title: Boost Rules + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + default: [] + geo: + $ref: '#/components/schemas/GeoQuery' + diversification: + title: Diversification + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + pagination_id: + title: Pagination Id + description: > + + A unique identifier to enable pagination in Recommendation APIs. By + default, Recommendation APIs do not support + + pagination because the results from Miso, by its natural, will + change in real-time with new user interactions. + + `pagination_id` allows you to implement pagination more easily by + memorize what products we have + + returned to the current user with the same `pagination_id`. + + + To enable pagination, you generate a `pagination_id` and set it in + the first and subsequent requests in the same browsing session + + where you want to enable pagination. With `pagination_id` set, you + can access recommendations + + in different pages using the combination of `start` and `rows` + parameters, and Miso will ensure that no duplicated + + recommendation will be returned in different pages. + + + For example, assuming you are implementing an infinite scroll with + Miso Recommendation APIs. Before you make the first request, + + you generate a `pagination_id` using the `current datetime` or + `uuid` like the following: + + ```javascript + + // current datetime + + var my_pagination_id = Date.now().toString() + + // OR uuid + + const uuidv4 = require("uuid/v4") + + var my_pagination_id = uuidv4() + + ``` + + You can then request the first page of results with + `my_pagination_id` like the following: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 0, + "rows": 10 + } + + ``` + + Then, you can request the next page of results with the same + `my_pagination_id`, and Miso will ensure + + that no duplicated result is returned: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 10, + "rows": 10 + } + + ``` + + + Note that, a `pagination_id` will timeout if there is no further + request associated with it for 30 minutes. + + Also, `pagination_id` is scoped by individual users: i.e. different + users' results will not be affected + + even if they use the same `pagination_id`. + maxLength: 512 + type: string + start: + title: Start + description: > + + The start of the page you want to access. Combine this with `rows` + to implement pagination. You can only set it when `pagination_id` is + given. + type: integer + default: 0 + x-konfig-properties: + geo: + title: Geo + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + ValidationError: + title: ValidationError + required: + - loc + - msg + - type + type: object + properties: + loc: + title: Location + type: array + items: + type: string + msg: + title: Message + type: string + type: + title: Error Type + type: string + VariantObject: + title: VariantObject + required: + - id + - name + - slug + - status + type: object + properties: + id: + title: Id + description: The UUID of this variant. + type: string + example: 59769b89-5f1f-46d5-a4fa-a583ebd2f7fd + name: + title: Name + description: The name of this variant. + type: string + example: Treatment_Group + slug: + title: Slug + description: The slug name of this variant. + type: string + example: Treatment_Group + configuration: + title: Configuration + description: The configuration of this variant. + anyOf: + - type: object + - type: array + items: {} + - type: string + example: + model: A + status: + title: Status + description: The current status for this variant. + enum: + - Draft + - Scheduled + - Active + - Completed + - Archived + type: string + example: Active + ViewableImpression: + title: viewable_impression + required: + - type + type: object + properties: + type: + title: Type + description: > + + When a product or content asset is presented to the user, it is not + guarantee that the user will see it. + + + An viewable impression is an impression that is "viewable" by the + user. + + Usually, content asset is considered viewable if more than 50% of + its area is visible on screen. + + + You can also use different definition for what is considered + viewable. + + Miso will automatically find the best recommendation as long as the + difference between + + viewable and non-viewable impression is consistant. + enum: + - viewable_impression + type: string + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + Watch: + title: watch + required: + - type + type: object + properties: + type: + title: Type + description: > + + Used to record when and for how long a user watches content that is + of a video format. + enum: + - watch + type: string + duration: + title: Duration + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + type: number + example: 61.5 + product_ids: + title: Product Ids + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + type: array + items: + type: string + maxLength: 512 + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + type: array + items: + type: string + maxLength: 512 + example: + - 123ABC + user_id: + title: User Id + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + maxLength: 512 + type: string + example: user_1234 + anonymous_id: + title: Anonymous Id + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + maxLength: 1024 + type: string + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + type: string + format: date-time + miso_id: + title: Miso Id + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + type: string + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + $ref: '#/components/schemas/WebBasedContext' + x-konfig-properties: + context: + title: Context + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + WebBasedContext: + title: WebBasedContext + type: object + properties: + campaign: + $ref: '#/components/schemas/Campaign' + truncated_ip: + title: Truncated Ip + description: > + + User's truncated IP address. We use IP address to determine the + country of the users. + type: string + format: ipv4 + example: 1.1.1.0 + locale: + title: Locale + description: Locale string of the current session, for example en-US. + type: string + example: en-US + region: + title: Region + description: > + + The region/location of the site the user is visiting. This is for + sites that serve different regions or + + markets. You can define your own region keywords, for example, `US + East`, `Europe`, `LATM`, etc. + type: string + example: US East + page: + $ref: '#/components/schemas/Page' + user_agent: + title: User Agent + description: > + + User agent of the device making the request. We use this to + determine if a user is browsing the site on + + mobile or desktop, and tailor the recommendations and search results + accordingly. + + + Example: + + ``` + + {"user_agent": + "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"} + ``` + type: string + example: >- + Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 + Firefox/47.0 + custom_context: + title: Custom Context + description: > + + Dictionary of custom context variables for the current browsing + session. You can specify context variables + + specific to your websites or apps in a `{"KEY":VALUE}` format, where + `KEY` must be a string, and `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + Miso will take these variables into account when generating + recommendations. + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + example: + session_variable_1: + - value_1 + - value_2 + x-konfig-properties: + campaign: + title: Campaign + description: > + + The campaign that resulted in the interaction. Campaign dictionary + contains standard UTM parameters: `name`, + + `source`, `medium`, `term`, `content`. We use campaign information + to infer users' interests and fine-tune the + + personalization and search results based on the current user's + campaign information. + page: + title: Page + description: >- + The current page in the browser. Page dictionary containing + referrer, title and url. we will use page view + as a pseudo interaction to infer users' interest. + YMALRequest: + title: YMALRequest + description: Attributes for recommendation boosting + type: object + properties: + product_id: + title: Product Id + description: > + + The `product_id` of the *anchor* product. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor product. + minLength: 1 + type: string + product_ids: + title: Product Ids + description: > + + The `product_ids` of a **list** of *anchor* products. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like these anchor products. For example, + + you can use the products in a user's shopping cart as the anchor + products to make purchase recommendations + + for this user. + minLength: 1 + type: array + items: + type: string + minLength: 1 + product_group_id: + title: Product Group Id + description: > + + The `product_group_id` of the *anchor* product group. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor *product group*. + + + You should use `product_group_id` on a *product + + group* page, before users select a specific product variant. For + example, you should use `product_group_id` + + on the product group page of a T-shirt, and use `product_id`, once + user choose any specific size or color + + variants of the T-shirt. + minLength: 1 + type: string + product_group_ids: + title: Product Group Ids + description: > + + The `product_group_ids` of the *anchor* product groups. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor *product groups*. + + + You should use `product_group_ids` in pages you want to recommend + products related to multiple product groups. + type: array + items: + type: string + buy_together: + title: Buy Together + description: >+ + + Whether to focus on the Products that are frequently *bought + together*. `buy_together` parameter is by default `false`, + + which make the *Product To Products API* focus on Products that are + related to the anchor products, e.g. the products + + with similar contents or frequently attract the interests of the + same group of users. + + + When `buy_together=true`, the ProductToProducts API will focus on + the type of Products that are more frequently bought + + together along with the anchor product(s) in the same transactions + or session. + + type: boolean + default: false + engine_id: + title: Engine Id + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + type: string + user_id: + title: User Id + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + type: string + anonymous_id: + title: Anonymous Id + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + type: string + user_hash: + title: User Hash + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + type: string + user_cohort: + title: User Cohort + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + rows: + title: Rows + description: Number of product recommendations to return + type: integer + default: 5 + type: + title: Type + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + type: string + dedupe_product_group_id: + title: Dedupe Product Group Id + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + type: boolean + default: true + additional_interactions: + title: Additional Interactions + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + default: [] + fl: + title: Fl + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + type: array + items: + type: string + default: [] + exclude: + title: Exclude + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + type: array + items: + type: string + boosting_tags: + title: Boosting Tags + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + type: array + items: + type: string + default: [] + example: + - tag-1 + - quetag-2 + fq: + title: Fq + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + type: string + boost_fq: + title: Boost Fq + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + type: string + boost_positions: + title: Boost Positions + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + type: array + items: + type: integer + boost_rules: + title: Boost Rules + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + default: [] + geo: + $ref: '#/components/schemas/GeoQuery' + diversification: + title: Diversification + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + pagination_id: + title: Pagination Id + description: > + + A unique identifier to enable pagination in Recommendation APIs. By + default, Recommendation APIs do not support + + pagination because the results from Miso, by its natural, will + change in real-time with new user interactions. + + `pagination_id` allows you to implement pagination more easily by + memorize what products we have + + returned to the current user with the same `pagination_id`. + + + To enable pagination, you generate a `pagination_id` and set it in + the first and subsequent requests in the same browsing session + + where you want to enable pagination. With `pagination_id` set, you + can access recommendations + + in different pages using the combination of `start` and `rows` + parameters, and Miso will ensure that no duplicated + + recommendation will be returned in different pages. + + + For example, assuming you are implementing an infinite scroll with + Miso Recommendation APIs. Before you make the first request, + + you generate a `pagination_id` using the `current datetime` or + `uuid` like the following: + + ```javascript + + // current datetime + + var my_pagination_id = Date.now().toString() + + // OR uuid + + const uuidv4 = require("uuid/v4") + + var my_pagination_id = uuidv4() + + ``` + + You can then request the first page of results with + `my_pagination_id` like the following: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 0, + "rows": 10 + } + + ``` + + Then, you can request the next page of results with the same + `my_pagination_id`, and Miso will ensure + + that no duplicated result is returned: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 10, + "rows": 10 + } + + ``` + + + Note that, a `pagination_id` will timeout if there is no further + request associated with it for 30 minutes. + + Also, `pagination_id` is scoped by individual users: i.e. different + users' results will not be affected + + even if they use the same `pagination_id`. + maxLength: 512 + type: string + start: + title: Start + description: > + + The start of the page you want to access. Combine this with `rows` + to implement pagination. You can only set it when `pagination_id` is + given. + type: integer + default: 0 + x-konfig-properties: + geo: + title: Geo + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + app__schemas__engine_api__request__PreviewBoosting: + title: PreviewBoosting + description: Properties to receive on Boosting creation + required: + - query_option + - boost_match_type + - boost + - position + type: object + properties: + query: + title: Query + description: The boosting rule query. + type: string + queries: + title: Queries + description: Multiple query of the boosting rule. + type: array + items: + type: string + query_option: + title: Query Option + description: >- + The options of the query. Please fill this field with contains, + not_contain, is, and is_not value. + enum: + - contains + - not_contain + - is + - is_not + type: string + filter_query: + title: Filter Query + description: The filter queries of the boosting rule. + type: array + items: + $ref: '#/components/schemas/FilterQueryItem' + boost_match_type: + title: Boost Match Type + description: Type of the query. Please fill this field with any or all. + enum: + - any + - all + type: string + boost: + title: Boost + description: The items of the boosting rule. + type: array + items: + $ref: '#/components/schemas/BoostItem' + position: + title: Position + description: The position of the boosting rule should occur. + type: array + items: + type: integer + json_asset: + title: Json Asset + description: The boosting json asset. + type: string + example: + CO: + - product-name: name + product-image-url: url + boosting_tags: + title: Boosting Tags + description: The comma-separated boosting tags. + type: array + items: + type: string + example: + - tag-1 + - tag-2 + app__schemas__engine_api__request__Question: + title: Question + description: Question object + required: + - question + type: object + properties: + question: + title: Question + description: The text of question. + minLength: 1 + type: string + weight: + title: Weight + description: The weight of question. + type: number + default: 1 + app__schemas__engine_api__response__Question: + title: Question + description: 'Question object ' + required: + - question + type: object + properties: + question: + title: Question + minLength: 1 + type: string + weight: + title: Weight + type: number + default: 1 + app__schemas__rec_boosting__PreviewBoosting: + title: PreviewBoosting + description: Attributes of boosting + required: + - api_names + - boost_match_type + - boost + - position + type: object + properties: + api_names: + title: Api Names + description: The api_names values + type: array + items: + type: string + anchor_products: + title: Anchor Products + description: The anchor products ids + type: array + items: + type: string + default: [] + module_names: + title: Module Names + description: The module name + type: array + items: + type: string + boost_match_type: + title: Boost Match Type + description: Type of the query. Please fill this field with any or all. + enum: + - any + - all + type: string + boost: + title: Boost + description: The items of the boosting rule. + type: array + items: + $ref: '#/components/schemas/BoostItem' + position: + title: Position + description: 1-based index of the position of the boosting rule should occur. + type: array + items: + type: integer + example: + - 1 + - 2 + boosting_tags: + title: Boosting Tags + description: The comma-separated boosting tags. + type: array + items: + type: string + example: + - tag-1 + - tag-2 + ExperimentApIsSendEventResponse: + type: object + properties: + message: + type: string + example: api_key is invalid. Please check your api_key in Dojo. + example: + message: api_key is invalid. Please check your api_key in Dojo. + ExperimentApIsSendEvent404Response: + type: object + properties: + message: + type: string + example: Variant is not found. Please check your variant_name. + example: + message: Variant is not found. Please check your variant_name. + ExperimentApIsSendEvent422Response: + type: object + properties: + message: + type: string + example: Request schema error. See "data.errors" for details + data: + type: object + properties: + errors: + type: array + items: + type: object + properties: + loc: + type: array + items: + oneOf: + - type: string + example: body + - type: number + example: 35 + example: 35 + msg: + type: string + example: 'Expecting '','' delimiter: line 3 column 5 (char 35)' + type: + type: string + example: value_error.jsondecode + example: + message: Request schema error. See "data.errors" for details + data: + errors: + - loc: + - body + - 35 + msg: 'Expecting '','' delimiter: line 3 column 5 (char 35)' + type: value_error.jsondecode + InteractionApIsInsertRecordsResponse: + type: object + properties: + message: + type: string + example: invalid api key. + example: + message: invalid api key. + InteractionApIsInsertRecords403Response: + type: object + properties: + message: + type: string + example: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + example: + message: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + InteractionApIsInsertRecords422Response: + type: object + properties: + errors: + type: boolean + example: true + message: + type: string + example: >- + None of the records were inserted because at least one of them + contained schema errors. Please see the `data` field for details. + data: + type: array + items: + type: string + example: >- + data.0.product_ids is invalid. The attribute was expected to be of + type ''array', 'null'' but type 'string' was given. + example: + errors: true + message: >- + None of the records were inserted because at least one of them + contained schema errors. Please see the `data` field for details. + data: + - >- + data.0.product_ids is invalid. The attribute was expected to be of + type ''array', 'null'' but type 'string' was given. + - >- + data.0.timestamp is invalid. The attribute should match the + 'date-time' format. + ProductContentApIsBulkInsertResponse: + type: object + properties: + 'message:': + type: string + example: Request timeout. + example: + 'message:': Request timeout. + ProductContentApIsBulkInsert401Response: + type: object + properties: + message: + type: string + example: invalid api key. + example: + message: invalid api key. + ProductContentApIsBulkInsert403Response: + type: object + properties: + message: + type: string + example: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + example: + message: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + ProductContentApIsBulkInsert422Response: + type: object + properties: + errors: + type: boolean + example: true + message: + type: string + example: >- + None of the records are inserted, because at least one of them + contain schema errors. Please see `data` field for details. + data: + type: array + items: + type: string + example: >- + data.0.product_id is invalid. The attribute expected to be of type + 'string', but 'array' is given. + example: + errors: true + message: >- + None of the records are inserted, because at least one of them contain + schema errors. Please see `data` field for details. + data: + - >- + data.0.product_id is invalid. The attribute expected to be of type + 'string', but 'array' is given. + - >- + data.0.created_at is invalid. The attribute should match 'date-time' + format. + ProductContentApIsBulkInsert500Response: + type: object + properties: + message: + type: string + example: Something went wrong. Please contact miso product team. + example: + message: Something went wrong. Please contact miso product team. + ProductContentApIsDeleteProductContentResponse: + type: object + properties: + 'message:': + type: string + example: Request timeout. + example: + 'message:': Request timeout. + ProductContentApIsDeleteProductContent401Response: + type: object + properties: + message: + type: string + example: invalid api key. + example: + message: invalid api key. + ProductContentApIsDeleteProductContent403Response: + type: object + properties: + message: + type: string + example: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + example: + message: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + ProductContentApIsDeleteProductContent500Response: + type: object + properties: + message: + type: string + example: Something went wrong. Please contact miso product team. + example: + message: Something went wrong. Please contact miso product team. + ProductContentApIsGetProductDetailsResponse: + type: object + properties: + message: + type: string + example: invalid api key. + example: + message: invalid api key. + ProductContentApIsGetProductDetails404Response: + type: object + properties: + message: + type: string + example: not found + example: + message: not found + ProductContentApIsGetProductDetails500Response: + type: object + properties: + message: + type: string + example: Something went wrong. Please contact miso product team. + example: + message: Something went wrong. Please contact miso product team. + ProductContentApIsGetProductIdsResponse: + type: object + properties: + message: + type: string + example: invalid api key. + example: + message: invalid api key. + ProductContentApIsGetProductIds500Response: + type: object + properties: + message: + type: string + example: Something went wrong. Please contact miso product team. + example: + message: Something went wrong. Please contact miso product team. + ProductContentApIsBulkDeleteResponse: + type: object + properties: + 'message:': + type: string + example: Request timeout. + example: + 'message:': Request timeout. + ProductContentApIsBulkDelete401Response: + type: object + properties: + message: + type: string + example: invalid api key. + example: + message: invalid api key. + ProductContentApIsBulkDelete403Response: + type: object + properties: + message: + type: string + example: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + example: + message: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + ProductContentApIsBulkDelete500Response: + type: object + properties: + message: + type: string + example: Something went wrong. Please contact miso product team. + example: + message: Something went wrong. Please contact miso product team. + UserApIsBulkUploadResponse: + type: object + properties: + 'message:': + type: string + example: Request timeout. + example: + 'message:': Request timeout. + UserApIsBulkUpload401Response: + type: object + properties: + message: + type: string + example: invalid api key. + example: + message: invalid api key. + UserApIsBulkUpload403Response: + type: object + properties: + message: + type: string + example: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + example: + message: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + UserApIsBulkUpload422Response: + type: object + properties: + errors: + type: boolean + example: true + message: + type: string + example: >- + None of the records are inserted, because at least one of them + contain schema errors. Please see `data` field for details. + data: + type: array + items: + type: string + example: >- + data.0.user_id is invalid. The attribute expected to be of type + 'string', but 'array' is given. + example: + errors: true + message: >- + None of the records are inserted, because at least one of them contain + schema errors. Please see `data` field for details. + data: + - >- + data.0.user_id is invalid. The attribute expected to be of type + 'string', but 'array' is given. + - >- + data.0.created_at is invalid. The attribute should match 'date-time' + format. + UserApIsBulkUpload500Response: + type: object + properties: + message: + type: string + example: Something went wrong. Please contact miso product team. + example: + message: Something went wrong. Please contact miso product team. + UserApIsDeleteUserResponse: + type: object + properties: + 'message:': + type: string + example: Request timeout. + example: + 'message:': Request timeout. + UserApIsDeleteUser401Response: + type: object + properties: + message: + type: string + example: invalid api key. + example: + message: invalid api key. + UserApIsDeleteUser403Response: + type: object + properties: + message: + type: string + example: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + example: + message: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + UserApIsDeleteUser500Response: + type: object + properties: + message: + type: string + example: Something went wrong. Please contact miso product team. + example: + message: Something went wrong. Please contact miso product team. + UserApIsGetUserDetailsResponse: + type: object + properties: + message: + type: string + example: invalid api key. + example: + message: invalid api key. + UserApIsGetUserDetails403Response: + type: object + properties: + message: + type: string + example: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + example: + message: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + UserApIsGetUserDetails404Response: + type: object + properties: + message: + type: string + example: not found + example: + message: not found + UserApIsGetUserDetails500Response: + type: object + properties: + message: + type: string + example: Something went wrong. Please contact miso product team. + example: + message: Something went wrong. Please contact miso product team. + UserApIsBulkUserDeleteResponse: + type: object + properties: + 'message:': + type: string + example: Request timeout. + example: + 'message:': Request timeout. + UserApIsBulkUserDelete401Response: + type: object + properties: + message: + type: string + example: invalid api key. + example: + message: invalid api key. + UserApIsBulkUserDelete403Response: + type: object + properties: + message: + type: string + example: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + example: + message: >- + Request is denied due to bot blocking. Please only access this API + from a real browser or use Secret API Key instead. + UserApIsBulkUserDelete500Response: + type: object + properties: + message: + type: string + example: Something went wrong. Please contact miso product team. + example: + message: Something went wrong. Please contact miso product team. + securitySchemes: + Secret API Key: + description: >+ + + Your secret API key is used to access every Miso API endpoint. You + should secure this key and only use it on a backend + + server. Never leave this key in your client-side JavaScript code. If the + private key is compromised, you can revoke it + + in [Dojo](https://dojo.askmiso.com/docs/api-browser) and get a new one. + + + Specify your secret key in the `api_key` query parameter. For example: + + ``` + + POST /v1/users?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17 + + ``` + + type: apiKey + in: query + name: api_key + Publishable API Key: + description: > + + Your publishable API key is used to call Miso's APIs from your front-end + code. It can be used to stream interactions from the browser using + Miso's Interactions Upload API or to access read-only search and + recommendation results for a given user. When using the publishable API + key, the requested user_id will need to be hashed to maintain the + necessary security compliance. + + + Specify your publishable key in the `api_key` query parameter. For + example: + + ``` + + POST /v1/interactions?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17 + + ``` + type: apiKey + in: query + name: api_key +x-tagGroups: + - tags: + - Interaction APIs + - Product / Content APIs + - User APIs + name: Data APIs + - tags: + - Search APIs + - Recommendation APIs + - Ask APIs + - Signal API + - Bulk API + name: Engine APIs + - tags: + - Experiment APIs + name: Experiment APIs + - tags: + - Q&A APIs + name: Q&A API diff --git a/sdks/db/generate-repository-description-cache/baserow.json b/sdks/db/generate-repository-description-cache/baserow.json new file mode 100644 index 0000000000..263afccbcf --- /dev/null +++ b/sdks/db/generate-repository-description-cache/baserow.json @@ -0,0 +1,3 @@ +{ + "Baserow is the most flexible platform for creating databases and applications—without coding.\n\nGet all the power of a database with the familiarity of a spreadsheet. Organize your data and build applications faster, with greater security and at any scale. Only Baserow has self-hosting, real-time collaboration, APIs, plugins, and no vendor lock-in. \n\nCreate Kanban boards, calendars, forms, integrate with other tools, and more to provide the best representation of your data. Today, thousands of customers around the world use our powerful and easy-to-use tools as their CRM, project management systems, or to power websites.\n\nWe live by open source principles: our code, product, and community are all open for everyone to join and contribute to. We're looking for passionate individuals to join us: baserow.io/jobs": "Baserow: The most flexible no-code platform for building databases and applications. Self-hosted, collaborative, secure, and scalable with Kanban boards, calendars, forms, and more. Embracing open-source principles. Join us at baserow.io/jobs. Baserow's {language} SDK generated by Konfig (https://konfigthis.com/)." +} \ No newline at end of file diff --git a/sdks/db/generate-repository-description-cache/beam.json b/sdks/db/generate-repository-description-cache/beam.json index 79483bbb80..e8f0d370e1 100644 --- a/sdks/db/generate-repository-description-cache/beam.json +++ b/sdks/db/generate-repository-description-cache/beam.json @@ -1,3 +1,4 @@ { - "Beam is the intelligent way to manage risk with laser precision in real time.\n\nBeam's state-of-the-art software solution sources traditional and alternative data to give you a real-time affordability analysis of your customer and makes manual analysis, fragmented data sources, high costs and slow processes a thing of the past so that you and your team get better data with sharper insight.\n\nBeam makes it easy and seamless to access multiple data sources like bank statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated credit decisions. \n\nOur completely digital customer onboarding process allows for near-instant credit approval.\n\nBeam's API-first solution reduces credit decision-making time from days to seconds while helping you forecast your customer's income and expenses instantly. Beam Console's audit-ready reporting dashboard lets your admin, risk and underwriting teams easily and efficiently manage your customer data from one place.": "Beam offers an intelligent risk management software solution that provides real-time affordability analysis by sourcing traditional and alternative data. Access multiple data sources, make accelerated credit decisions, and reduce decision-making time with Beam's API-first solution." + "Beam is the intelligent way to manage risk with laser precision in real time.\n\nBeam's state-of-the-art software solution sources traditional and alternative data to give you a real-time affordability analysis of your customer and makes manual analysis, fragmented data sources, high costs and slow processes a thing of the past so that you and your team get better data with sharper insight.\n\nBeam makes it easy and seamless to access multiple data sources like bank statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated credit decisions. \n\nOur completely digital customer onboarding process allows for near-instant credit approval.\n\nBeam's API-first solution reduces credit decision-making time from days to seconds while helping you forecast your customer's income and expenses instantly. Beam Console's audit-ready reporting dashboard lets your admin, risk and underwriting teams easily and efficiently manage your customer data from one place.": "Beam offers an intelligent risk management software solution that provides real-time affordability analysis by sourcing traditional and alternative data. Access multiple data sources, make accelerated credit decisions, and reduce decision-making time with Beam's API-first solution.", + "Beam is the intelligent way to manage risk with laser precision in real time.\n\nBeam's state-of-the-art software solution sources traditional and alternative data to give you a real-time affordability analysis of your customer and makes manual analysis, fragmented data sources, high costs and slow processes a thing of the past so that you and your team get better data with sharper insight.\n\nBeam makes it easy and seamless to access multiple data sources like bank statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated credit decisions.\n\nOur completely digital customer onboarding process allows for near-instant credit approval.\n\nBeam's API-first solution reduces credit decision-making time from days to seconds while helping you forecast your customer's income and expenses instantly. Beam Console's audit-ready reporting dashboard lets your admin, risk and underwriting teams easily and efficiently manage your customer data from one place.": "Beam provides real-time risk management with affordable affordability analysis, easy access to multiple data sources, near-instant credit approval, and audit-ready reporting dashboard. Beam's {language} SDK generated by Konfig (https://konfigthis.com/)." } \ No newline at end of file diff --git a/sdks/db/generate-repository-description-cache/browse-ai.json b/sdks/db/generate-repository-description-cache/browse-ai.json new file mode 100644 index 0000000000..2390549a5e --- /dev/null +++ b/sdks/db/generate-repository-description-cache/browse-ai.json @@ -0,0 +1,3 @@ +{ + "We're creating the easiest way to scrape and monitor any website with no code. \n\nOur mission is to give every individual and business equal opportunity to benefit from information on the internet.": "We're creating the easiest way to scrape and monitor any website with no code. Our mission is to give every individual and business equal opportunity to benefit from information on the internet. Browse AI's {language} SDK generated by Konfig (https://konfigthis.com/)." +} \ No newline at end of file diff --git a/sdks/db/generate-repository-description-cache/chat-kitty.json b/sdks/db/generate-repository-description-cache/chat-kitty.json new file mode 100644 index 0000000000..bd629ff63b --- /dev/null +++ b/sdks/db/generate-repository-description-cache/chat-kitty.json @@ -0,0 +1,3 @@ +{ + "ChatKitty gives you the tools to build real-time chat for web and mobile apps, complete with advanced features like moderation, offline messaging and analytics.": "ChatKitty gives you the tools to build real-time chat for web and mobile apps, complete with advanced features like moderation, offline messaging and analytics. ChatKitty's {language} SDK generated by Konfig (https://konfigthis.com/)." +} \ No newline at end of file diff --git a/sdks/db/generate-repository-description-cache/miso.json b/sdks/db/generate-repository-description-cache/miso.json new file mode 100644 index 0000000000..4d08c32027 --- /dev/null +++ b/sdks/db/generate-repository-description-cache/miso.json @@ -0,0 +1,3 @@ +{ + "Miso’s simple APIs empower product teams to realize unlimited personalization opportunities. Leading brands are using Miso’s semantic intelligence and real-time clickstream analysis to drive a new generation of personalized experiences and lift revenues sitewide. And unlike traditional solutions, Miso can personalize 100% anonymously — no tracking users or mining data.": "Miso offers simple APIs for unlimited personalization opportunities. Leading brands use Miso's intelligence for personalized experiences and revenue growth, all done anonymously without tracking or mining data. Miso's {language} SDK generated by Konfig (https://konfigthis.com/)." +} \ No newline at end of file diff --git a/sdks/db/generate-repository-description-cache/telintel-sms-gateway.json b/sdks/db/generate-repository-description-cache/telintel-sms-gateway.json index a4e1b59bd7..51f0a08c02 100644 --- a/sdks/db/generate-repository-description-cache/telintel-sms-gateway.json +++ b/sdks/db/generate-repository-description-cache/telintel-sms-gateway.json @@ -1,3 +1,4 @@ { - "With +20 years of experience in the market, Telintel makes the experience of communicating with your clients easier. We are leaders on technological solutions that makes the interaction with any user simpler no matter neither the business size nor the industrial sector at hand. Our products based on SMS and VoIP (SMS 2-Way, Landing Pages, RoboCall, Text2Speech, IVR, SMS2Call & Click2Call) allow us to offer a vast service spectrum for any need including reminders, alerts, promotions and client loyalty, along with commercial presence on any the continents around the world.\n\nOur Go4Clients and TestMySMS platforms will allow you to enhance your user experience, centralize operational processes and improve your response times with the best service quality and 24/7 technical support, 365 days a year. These are smart solutions that will allow you to have infinite possibilities at your hands reach.\n\nWe count on our strategic allies and important customers satisfied with our services. Be one of them today and contact us at social@telintel.net or give us a call at +1 786-871-6540.\n\nCon más de 20 años de experiencia en el mercado, Telintel hace más sencilla la manera de comunicarse con sus clientes. Somos líderes en soluciones tecnológicas que hacen más simple la interacción con cualquier usuario sin importar el tamaño de su organización o la industria a la que se dedique. Nuestros productos basados en SMS y VoIP (SMS 2way, Landing Page, Robocall, Text2Speech, IVR, SMS2Call y Click2Call) nos permiten ofrecer una amplia gama de servicios para cualquier necesidad incluyendo recordatorios, alertas, promociones y fidelización de clientes en todo el mundo, con presencia comercial en los 5 continentes. \n\nNuestras plataformas Go4Clients y TestmySMS le permitirán mejorar la experiencia de sus usuarios con el mejor servicio y soporte 24/7 los 365 días del año, centralizar procesos operativos y mejorar sus tiempo de respuesta.": "Telintel simplifies client communication with 20+ years of experience. Leaders in SMS and VoIP solutions for all business sizes and industries. Enhance user experience, centralize operations, and improve response times with smart solutions. Contact us for 24/7 support." + "With +20 years of experience in the market, Telintel makes the experience of communicating with your clients easier. We are leaders on technological solutions that makes the interaction with any user simpler no matter neither the business size nor the industrial sector at hand. Our products based on SMS and VoIP (SMS 2-Way, Landing Pages, RoboCall, Text2Speech, IVR, SMS2Call & Click2Call) allow us to offer a vast service spectrum for any need including reminders, alerts, promotions and client loyalty, along with commercial presence on any the continents around the world.\n\nOur Go4Clients and TestMySMS platforms will allow you to enhance your user experience, centralize operational processes and improve your response times with the best service quality and 24/7 technical support, 365 days a year. These are smart solutions that will allow you to have infinite possibilities at your hands reach.\n\nWe count on our strategic allies and important customers satisfied with our services. Be one of them today and contact us at social@telintel.net or give us a call at +1 786-871-6540.\n\nCon más de 20 años de experiencia en el mercado, Telintel hace más sencilla la manera de comunicarse con sus clientes. Somos líderes en soluciones tecnológicas que hacen más simple la interacción con cualquier usuario sin importar el tamaño de su organización o la industria a la que se dedique. Nuestros productos basados en SMS y VoIP (SMS 2way, Landing Page, Robocall, Text2Speech, IVR, SMS2Call y Click2Call) nos permiten ofrecer una amplia gama de servicios para cualquier necesidad incluyendo recordatorios, alertas, promociones y fidelización de clientes en todo el mundo, con presencia comercial en los 5 continentes. \n\nNuestras plataformas Go4Clients y TestmySMS le permitirán mejorar la experiencia de sus usuarios con el mejor servicio y soporte 24/7 los 365 días del año, centralizar procesos operativos y mejorar sus tiempo de respuesta.": "Telintel simplifies client communication with 20+ years of experience. Leaders in SMS and VoIP solutions for all business sizes and industries. Enhance user experience, centralize operations, and improve response times with smart solutions. Contact us for 24/7 support.", + "With +20 years of experience in the market, Telintel makes the experience of communicating with your clients easier. We are leaders on technological solutions that makes the interaction with any user simpler no matter neither the business size nor the industrial sector at hand. Our products based on SMS and VoIP (SMS 2-Way, Landing Pages, RoboCall, Text2Speech, IVR, SMS2Call & Click2Call) allow us to offer a vast service spectrum for any need including reminders, alerts, promotions and client loyalty, along with commercial presence on any the continents around the world.\n\nOur Go4Clients and TestMySMS platforms will allow you to enhance your user experience, centralize operational processes and improve your response times with the best service quality and 24/7 technical support, 365 days a year. These are smart solutions that will allow you to have infinite possibilities at your hands reach.\n\nWe count on our strategic allies and important customers satisfied with our services. Be one of them today and contact us at social@telintel.net or give us a call at +1 786-871-6540.\n\nCon más de 20 años de experiencia en el mercado, Telintel hace más sencilla la manera de comunicarse con sus clientes. Somos líderes en soluciones tecnológicas que hacen más simple la interacción con cualquier usuario sin importar el tamaño de su organización o la industria a la que se dedique. Nuestros productos basados en SMS y VoIP (SMS 2way, Landing Page, Robocall, Text2Speech, IVR, SMS2Call y Click2Call) nos permiten ofrecer una amplia gama de servicios para cualquier necesidad incluyendo recordatorios, alertas, promociones y fidelización de clientes en todo el mundo, con presencia comercial en los 5 continentes.\n\nNuestras plataformas Go4Clients y TestmySMS le permitirán mejorar la experiencia de sus usuarios con el mejor servicio y soporte 24/7 los 365 días del año, centralizar procesos operativos y mejorar sus tiempo de respuesta.": "Telintel simplifies client communication with 20+ years of tech leadership. SMS & VoIP solutions for reminders, alerts, promotions. Go4Clients & TestMySMS enhance user experience with 24/7 support. Reach us at social@telintel.net or +1 786-871-6540. Telintel's {language} SDK for SMS Gateway API generated by Konfig (https://konfigthis.com/)." } \ No newline at end of file diff --git a/sdks/db/intermediate-fixed-specs/baserow/openapi.yaml b/sdks/db/intermediate-fixed-specs/baserow/openapi.yaml new file mode 100644 index 0000000000..7dd5ac2f7c --- /dev/null +++ b/sdks/db/intermediate-fixed-specs/baserow/openapi.yaml @@ -0,0 +1,49457 @@ +openapi: 3.0.3 +info: + title: Baserow API spec + version: 1.23.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://gitlab.com/baserow/baserow/-/blob/master/LICENSE +paths: + /api/_health/email/: + post: + operationId: email_tester + description: >- + Sends a test email to the provided email address. Useful for testing + Baserow's email configuration as errors are clearly returned. + tags: + - Health + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/EmailTesterRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EmailTesterResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/_health/full/: + get: + operationId: full_health_check + description: >- + Runs a full health check testing as many services and systems as + possible. These health checks can be expensive operations such as + writing files to storage etc. + tags: + - Health + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FullHealthCheck' + description: '' + /api/admin/audit-log/: + get: + operationId: audit_log_list + description: |- + Lists all audit log entries for the given workspace id. + + This is a **enterprise** feature. + parameters: + - in: query + name: action_type + schema: + type: string + description: Filter the audit log entries by action type. + - in: query + name: from_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries from. + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: size + schema: + type: integer + description: Defines how many audit log entries should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `user, workspace, + type, timestamp, ip_address`. For example `sorts=-user,-workspace` + will sort the audit log entries first by descending user and then + ascending workspace. A sortparameter with multiple instances of the + same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + - in: query + name: to_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries to. + - in: query + name: user_id + schema: + type: integer + description: Filter the audit log entries by user id. + - in: query + name: workspace_id + schema: + type: integer + description: >- + Filter the audit log entries by workspace id. This filter works only + for the admin audit log. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLog' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/audit-log/action-types/: + get: + operationId: audit_log_action_types + description: |- + List all distinct action types related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: search + schema: + type: string + description: >- + If provided only action_types with name that match the query will be + returned. + - in: query + name: workspace_id + schema: + type: integer + description: Return action types related to the workspace. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AuditLogActionType' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/audit-log/export/: + post: + operationId: async_audit_log_export + description: |- + Creates a job to export the filtered audit log to a CSV file. + + This is a **enterprise** feature. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Audit log + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_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/admin/audit-log/users/: + get: + operationId: audit_log_users + description: |- + List all users that have performed an action in the audit log. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only users with email that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + - in: query + name: workspace_id + schema: + type: integer + description: Return users belonging to the given workspace_id. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/audit-log/workspaces/: + get: + operationId: audit_log_workspaces + description: |- + List all distinct workspace names related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only workspaces with name that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many workspaces should be returned per page. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/auth-provider/: + get: + operationId: list_auth_providers + description: List all the available authentication providers. + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + post: + operationId: create_auth_provider + description: >- + Creates a new authentication provider. This can be used to enable + authentication with a third party service like Google or Facebook. + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/admin/auth-provider/{auth_provider_id}/: + get: + operationId: get_auth_provider + description: Get an authentication provider. + parameters: + - in: path + name: auth_provider_id + schema: + type: integer + description: The authentication provider id to fetch. + required: true + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_AUTH_PROVIDER_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: '' + patch: + operationId: update_auth_provider + description: >- + Updates a new authentication provider. This can be used to enable + authentication with a third party service like Google or Facebook. + parameters: + - in: path + name: auth_provider_id + schema: + type: integer + description: The authentication provider id to update. + required: true + tags: + - Auth + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Authentication_ProviderAuthProvider' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_AUTH_PROVIDER_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: '' + delete: + operationId: delete_auth_provider + description: Delete an authentication provider. + parameters: + - in: path + name: auth_provider_id + schema: + type: integer + description: The authentication provider id to delete. + required: true + tags: + - Auth + security: + - JWT: [] + responses: + '204': + description: No response body + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_AUTH_PROVIDER_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/admin/dashboard/: + get: + operationId: admin_dashboard + description: >- + Returns the new and active users for the last 24 hours, 7 days and 30 + days. The `previous_` values are the values of the period before, so for + example `previous_new_users_last_24_hours` are the new users that signed + up from 48 to 24 hours ago. It can be used to calculate an increase or + decrease in the amount of signups. A list of the new and active users + for every day for the last 30 days is also included. + + + This is a **premium** feature. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDashboard' + description: '' + '401': + description: No response body + /api/admin/groups/: + get: + operationId: admin_list_groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [admin_list_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns all groups with detailed information on each group, if the requesting user is staff. + + This is a **premium** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only groups with id or name that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many groups should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, name, + application_count, created_on, row_count, storage_usage`. For + example `sorts=-id,-name` will sort the groups first by descending + id and then ascending name. A sortparameter with multiple instances + of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + tags: + - Admin + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWorkspacesAdminResponse + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/groups/{group_id}/: + delete: + operationId: admin_delete_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [admin_delete_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes the specified group and the applications inside that group, if the requesting user is staff. + + This is a **premium** feature. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The id of the group to delete + required: true + tags: + - Admin + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + /api/admin/users/: + get: + operationId: admin_list_users + description: >- + Returns all users with detailed information on each user, if the + requesting user is staff. + + + This is a **premium** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only users with username that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, is_active, + name, username, date_joined, last_login`. For example + `sorts=-id,-is_active` will sort the users first by descending id + and then ascending is_active. A sortparameter with multiple + instances of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerUserAdminResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + post: + operationId: admin_create_user + description: >- + Creates and returns a new user if the requesting user is staff. This + works even if new signups are disabled. + + + This is a **premium** feature. + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/UserAdminCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/UserAdminCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_FEATURE_NOT_AVAILABLE + - USER_ADMIN_ALREADY_EXISTS + 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/admin/users/{user_id}/: + patch: + operationId: admin_edit_user + description: >- + Updates specified user attributes and returns the updated user if the + requesting user is staff. You cannot update yourself to no longer be an + admin or active. + + + This is a **premium** feature. + parameters: + - in: path + name: user_id + schema: + type: integer + description: The id of the user to edit + required: true + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUserAdminUpdate' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserAdminResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - USER_ADMIN_CANNOT_DEACTIVATE_SELF + - USER_ADMIN_UNKNOWN_USER + - USER_ADMIN_ALREADY_EXISTS + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + delete: + operationId: admin_delete_user + description: >- + Deletes the specified user, if the requesting user has admin + permissions. You cannot delete yourself. + + + This is a **premium** feature. + parameters: + - in: path + name: user_id + schema: + type: integer + description: The id of the user to delete + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - USER_ADMIN_CANNOT_DELETE_SELF + - USER_ADMIN_UNKNOWN_USER + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + /api/admin/users/impersonate/: + post: + operationId: admin_impersonate_user + description: >- + This endpoint allows staff to impersonate another user by requesting a + JWT token and user object. The requesting user must have staff access in + order to do this. It's not possible to impersonate a superuser or staff. + + + This is a **premium** feature. + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + multipart/form-data: + schema: + $ref: '#/components/schemas/BaserowImpersonateAuthToken' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + description: '' + /api/admin/workspaces/: + get: + operationId: admin_list_workspaces + description: >- + Returns all workspaces with detailed information on each workspace, if + the requesting user is staff. + + + This is a **premium** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only workspaces with id or name that match the query + will be returned. + - in: query + name: size + schema: + type: integer + description: Defines how many workspaces should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `id, name, + application_count, created_on, row_count, storage_usage`. For + example `sorts=-id,-name` will sort the workspaces first by + descending id and then ascending name. A sortparameter with multiple + instances of the same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWorkspacesAdminResponse + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/admin/workspaces/{workspace_id}/: + delete: + operationId: admin_delete_workspace + description: >- + Deletes the specified workspace and the applications inside that + workspace, if the requesting user is staff. + + + This is a **premium** feature. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The id of the workspace to delete + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_FEATURE_NOT_AVAILABLE + 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: '' + '401': + description: No response body + /api/application/{application_id}/integrations/: + get: + operationId: list_application_integrations + description: >- + Lists all the integrations of the application related to the provided + parameter if the user has access to the related application's workspace. + If the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - in: path + name: application_id + schema: + type: integer + description: >- + Returns only the integrations of the application related to the + provided Id. + required: true + tags: + - Integrations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_APPLICATION_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: '' + post: + operationId: create_application_integration + description: Creates a new integration + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: application_id + schema: + type: integer + description: >- + Creates an integration for the application related to the provided + value. + required: true + tags: + - Integrations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/IntegrationCreateIntegration' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/application/{application_id}/list-user-source-users/: + get: + operationId: list_application_user_source_users + description: List per user sources the first 5 users available. + parameters: + - in: path + name: application_id + schema: + type: integer + description: The application we want the users for. + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UsersPerUserSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_APPLICATION_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/application/{application_id}/user-sources/: + get: + operationId: list_application_user_sources + description: >- + Lists all the user_sources of the application related to the provided + parameter if the user has access to the related application's workspace. + If the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - in: path + name: application_id + schema: + type: integer + description: >- + Returns only the user_sources of the application related to the + provided Id. + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_APPLICATION_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: '' + post: + operationId: create_application_user_source + description: Creates a new user_source + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: application_id + schema: + type: integer + description: >- + Creates an user_source for the application related to the provided + value. + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/User_SourceCreateUserSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/applications/: + get: + operationId: list_all_applications + description: >- + Lists all the applications that the authorized user has access to. The + properties that belong to the application can differ per type. An + application always belongs to a single workspace. All the applications + of the workspaces that the user has access to are going to be listed + here. + tags: + - Applications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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 + 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/applications/{application_id}/: + get: + operationId: workspace_get_application + description: >- + Returns the requested application if the authorized user is in the + application's workspace. The properties that belong to the application + can differ per type. + parameters: + - in: path + name: application_id + schema: + type: integer + description: Returns the application related to the provided value. + required: true + tags: + - Applications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_APPLICATION_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: '' + patch: + operationId: update_application + description: >- + Updates the existing application related to the provided + `application_id` param if the authorized user is in the application's + workspace. It is not possible to change the type, but properties like + the name can be changed. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: application_id + schema: + type: integer + description: Updates the application related to the provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedApplicationBaseApplicationUpdatePolymorphic + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_APPLICATION_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: '' + delete: + operationId: delete_application + description: >- + Deletes an application if the authorized user is in the application's + workspace. All the related children are also going to be deleted. For + example in case of a database application all the underlying tables, + fields, views and rows are going to be deleted. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: application_id + schema: + type: integer + description: Deletes the application related to the provided value. + required: true + tags: + - Applications + security: + - JWT: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_APPLICATION_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/applications/{application_id}/duplicate/async/: + post: + operationId: duplicate_application_async + description: >- + Duplicate an application if the authorized user is in the application's + workspace. All the related children are also going to be duplicated. For + example in case of a database application all the underlying tables, + fields, views and rows are going to be duplicated. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: application_id + schema: + type: integer + description: The id of the application to duplicate. + required: true + tags: + - Applications + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateApplicationJobType' + 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_APPLICATION_NOT_IN_GROUP + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_APPLICATION_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/applications/group/{group_id}/: + get: + operationId: group_list_applications + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_list_applications](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the applications of the group related to the provided `group_id` parameter if the authorized user is in that group. If the group is related to a template, then this endpoint will be publicly accessible. The properties that belong to the application can differ per type. An application always belongs to a single group. + parameters: + - in: path + name: group_id + schema: + type: integer + description: >- + Returns only applications that are in the group related to the + provided value. + required: true + tags: + - Applications + security: + - JWT: [] + - {} + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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 + 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_GROUP_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: '' + post: + operationId: group_create_application + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_create_application](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new application based on the provided type. The newly created application is going to be added to the group related to the provided `group_id` parameter. If the authorized user does not belong to the group an error will be returned. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: Creates an application for the group related to the provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + multipart/form-data: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_GROUP_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/applications/group/{group_id}/order/: + post: + operationId: group_order_applications + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_order_applications](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Changes the order of the provided application ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order of the not provided tables will be set to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: >- + Updates the order of the applications in the group related to the + provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderApplications' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderApplications' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderApplications' + required: true + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + 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_GROUP_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/applications/workspace/{workspace_id}/: + get: + operationId: workspace_list_applications + description: >- + Lists all the applications of the workspace related to the provided + `workspace_id` parameter if the authorized user is in that workspace. If + theworkspace is related to a template, then this endpoint will be + publicly accessible. The properties that belong to the application can + differ per type. An application always belongs to a single workspace. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: >- + Returns only applications that are in the workspace related to the + provided value. + required: true + tags: + - Applications + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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 + 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_GROUP_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: '' + post: + operationId: workspace_create_application + description: >- + Creates a new application based on the provided type. The newly created + application is going to be added to the workspace related to the + provided `workspace_id` parameter. If the authorized user does not + belong to the workspace an error will be returned. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: >- + Creates an application for the workspace related to the provided + value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + multipart/form-data: + schema: + $ref: '#/components/schemas/ApplicationBaseApplicationCreatePolymorphic' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationApplication' + 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_REQUEST_BODY_VALIDATION + 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_GROUP_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/applications/workspace/{workspace_id}/order/: + post: + operationId: workspace_order_applications + description: >- + Changes the order of the provided application ids to the matching + position that the id has in the list. If the authorized user does not + belong to the workspace it will be ignored. The order of the not + provided tables will be set to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: >- + Updates the order of the applications in the workspace related to + the provided value. + required: true + tags: + - Applications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderApplications' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderApplications' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderApplications' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + 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_GROUP_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/audit-log/: + get: + operationId: audit_log_list_2 + description: |- + Lists all audit log entries for the given workspace id. + + This is a **enterprise** feature. + parameters: + - in: query + name: action_type + schema: + type: string + description: Filter the audit log entries by action type. + - in: query + name: from_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries from. + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: size + schema: + type: integer + description: Defines how many audit log entries should be returned per page. + - in: query + name: sorts + schema: + type: string + description: >- + A comma separated string of attributes to sort by, each attribute + must be prefixed with `+` for a descending sort or a `-` for an + ascending sort. The accepted attribute names are: `user, workspace, + type, timestamp, ip_address`. For example `sorts=-user,-workspace` + will sort the audit log entries first by descending user and then + ascending workspace. A sortparameter with multiple instances of the + same sort attribute will respond with the + ERROR_INVALID_SORT_ATTRIBUTE error. + - in: query + name: to_timestamp + schema: + type: string + description: The ISO timestamp to filter the audit log entries to. + - in: query + name: user_id + schema: + type: integer + description: Filter the audit log entries by user id. + - in: query + name: workspace_id + schema: + type: integer + description: >- + Filter the audit log entries by workspace id. This filter works only + for the admin audit log. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLog' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/audit-log/action-types/: + get: + operationId: audit_log_action_types_2 + description: |- + List all distinct action types related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: search + schema: + type: string + description: >- + If provided only action_types with name that match the query will be + returned. + - in: query + name: workspace_id + schema: + type: integer + description: Return action types related to the workspace. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AuditLogActionType' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/audit-log/export/: + post: + operationId: async_audit_log_export_2 + description: |- + Creates a job to export the filtered audit log to a CSV file. + + This is a **enterprise** feature. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Audit log + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobRequest' + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleAuditLogExportJobResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_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/audit-log/users/: + get: + operationId: audit_log_users_2 + description: |- + List all users that have performed an action in the audit log. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only users with email that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + - in: query + name: workspace_id + schema: + type: integer + description: Return users belonging to the given workspace_id. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/audit-log/workspaces/: + get: + operationId: audit_log_workspaces_2 + description: |- + List all distinct workspace names related to an audit log entry. + + This is a **enterprise** feature. + parameters: + - in: query + name: page + schema: + type: integer + description: Defines which page should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided only workspaces with name that match the query will be + returned. + - in: query + name: size + schema: + type: integer + description: Defines how many workspaces should be returned per page. + tags: + - Audit log + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerAuditLogWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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: '' + '401': + description: No response body + /api/auth-provider/login-options/: + get: + operationId: list_auth_providers_login_options + description: >- + Lists the available login options for the configured authentication + providers. + tags: + - Auth + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + additionalProperties: {} + description: Unspecified response body + description: '' + /api/builder/{builder_id}/domains/: + get: + operationId: get_builder_domains + description: Gets all the domains of a builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: Gets all the domains for the specified builder + required: true + tags: + - Builder domains + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Domain_TypeDomain' + 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 + 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_APPLICATION_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: '' + post: + operationId: create_builder_domain + description: Creates a new domain for an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: >- + Creates a domain for the application builder related tothe provided + value + required: true + tags: + - Builder domains + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + multipart/form-data: + schema: + $ref: '#/components/schemas/Domain_TypeCreateDomain' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeDomain' + 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_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/builder/{builder_id}/domains/order/: + post: + operationId: order_builder_domains + description: Apply a new order to the domains of a builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: The builder the domain belongs to + required: true + tags: + - Builder domains + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderDomains' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderDomains' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderDomains' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_DOMAIN_NOT_IN_BUILDER + 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_APPLICATION_DOES_NOT_EXIST + - ERROR_DOMAIN_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/builder/{builder_id}/pages/: + post: + operationId: create_builder_page + description: Creates a new page for an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: >- + Creates a page for the application builder related to the provided + value. + required: true + tags: + - Builder pages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreatePage' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreatePage' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreatePage' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Page' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NAME_NOT_UNIQUE + - ERROR_PAGE_PATH_NOT_UNIQUE + - ERROR_PATH_PARAM_NOT_IN_PATH + - ERROR_PATH_PARAM_NOT_DEFINED + 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_APPLICATION_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/builder/{builder_id}/pages/order/: + post: + operationId: order_builder_pages + description: Apply a new order to the pages of a builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: The builder the page belongs to + required: true + tags: + - Builder pages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderPages' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderPages' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderPages' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NOT_IN_BUILDER + 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_APPLICATION_DOES_NOT_EXIST + - ERROR_PAGE_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/builder/{builder_id}/theme/: + patch: + operationId: update_builder_theme + description: Updates the theme properties for the provided id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: builder_id + schema: + type: integer + description: >- + Updates the theme for the application builder related to the + provided value. + required: true + tags: + - Builder theme + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedCombinedThemeConfigBlocks' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CombinedThemeConfigBlocks' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/builder/data-source/{data_source_id}/: + patch: + operationId: update_builder_page_data_source + description: Updates an existing builder data_source. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source + required: true + tags: + - Builder data sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedIntegration_ServiceUpdateDataSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_DATA_SOURCE_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: '' + delete: + operationId: delete_builder_page_data_source + description: Deletes the data_source related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source + required: true + tags: + - Builder data sources + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_DATA_SOURCE_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/builder/data-source/{data_source_id}/dispatch/: + post: + operationId: dispatch_builder_page_data_source + description: >- + Dispatches the service of the related data_source and returns the + result. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source you want to call the dispatch for + required: true + tags: + - Builder data sources + security: + - JWT: [] + - {} + responses: + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_DATA_SOURCE_DOES_NOT_EXIST + - ERROR_DATA_SOURCE_IMPROPERLY_CONFIGURED + - ERROR_IN_DISPATCH_CONTEXT + - ERROR_DATA_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/builder/data_source/{data_source_id}/move/: + patch: + operationId: move_builder_page_data_source + description: >- + Moves the data_source in the page before another data_source or at the + end of the page if no before data_source is given. The data_sources must + belong to the same page. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: data_source_id + schema: + type: integer + description: The id of the data_source to move + required: true + tags: + - Builder data sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveDataSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_DATA_SOURCE_NOT_IN_SAME_PAGE + 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_DATA_SOURCE_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/builder/domains/{domain_id}/: + patch: + operationId: update_builder_domain + description: Updates an existing domain of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: domain_id + schema: + type: integer + description: The id of the domain + required: true + tags: + - Builder domains + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateDomain' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Domain_TypeDomain' + 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_REQUEST_BODY_VALIDATION + 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_DOMAIN_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: '' + delete: + operationId: delete_builder_domain + description: Deletes an existing domain of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: domain_id + schema: + type: integer + description: The id of the domain + required: true + tags: + - Builder domains + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + 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_DOMAIN_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/builder/domains/{domain_id}/publish/async/: + post: + operationId: publish_builder_domain + description: >- + This endpoint starts an asynchronous job to publish the builder. The job + clones the current version of the given builder and publish it for the + given domain. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: domain_id + schema: + type: integer + description: The builder application id the user wants to publish. + required: true + tags: + - Builder domains + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_APPLICATION_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/builder/domains/ask-public-domain-exists/: + get: + operationId: ask_public_builder_domain_exists + description: >- + This endpoint can be used to check whether a domain exists for SSL + certificate purposes. It's compatible with the Caddy on_demand TLS as + described here: + https://caddyserver.com/docs/json/apps/tls/automation/on_demand/ask/. It + will respond with a 200 status code if it exists or a 404 if it doesn't + exist. + parameters: + - in: query + name: domain + schema: + type: integer + description: The domain name for which + tags: + - Builder domains + security: + - JWT: [] + - {} + responses: + '200': + description: No response body + '404': + description: No response body + /api/builder/domains/published/by_id/{builder_id}/: + get: + operationId: get_public_builder_by_id + description: >- + Returns the public serialized version of the builder and its pages for + the given builder id. + parameters: + - in: path + name: builder_id + schema: + type: integer + description: Returns the builder related to the provided Id and its pages. + required: true + tags: + - Builder public + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicBuilder' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_BUILDER_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/builder/domains/published/by_name/{domain_name}/: + get: + operationId: get_public_builder_by_domain_name + description: >- + Returns the public serialized version of the builder for the given + domain name and its pages . + parameters: + - in: path + name: domain_name + schema: + type: string + description: Returns the builder published for the given domain name. + required: true + tags: + - Builder public + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicBuilder' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_BUILDER_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/builder/domains/published/page/{page_id}/data_sources/: + get: + operationId: list_public_builder_page_data_sources + description: >- + Lists all the data_sources of the page related to the provided parameter + if the builder is public. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the data_sources of the page related to the provided Id + if the related builder is public. + required: true + tags: + - Builder data sources + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Integration_ServicePublicDataSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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/builder/domains/published/page/{page_id}/elements/: + get: + operationId: list_public_builder_page_elements + description: >- + Lists all the elements of the page related to the provided parameter. If + the user is Anonymous, the page must belong to a published builder + instance to being accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: Returns the elements of the page related to the provided Id. + required: true + tags: + - Builder elements + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Element_TypePublicElement' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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/builder/domains/published/page/{page_id}/workflow_actions/: + get: + operationId: list_public_builder_page_workflow_actions + description: >- + Lists all the workflow actions with their public accessible data. Some + configuration might be omitted for security reasons such as passwords or + PII. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the public workflow actions of the page related to the + provided Id. + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: >- + #/components/schemas/public_Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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/builder/element/{element_id}/: + patch: + operationId: update_builder_page_element + description: Updates an existing builder element. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element + required: true + tags: + - Builder elements + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedElement_TypeUpdateElement' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_ELEMENT_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: '' + delete: + operationId: delete_builder_page_element + description: Deletes the element related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element + required: true + tags: + - Builder elements + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_ELEMENT_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/builder/element/{element_id}/duplicate/: + post: + operationId: duplicate_builder_page_element + description: >- + Duplicates an element and all of the elements children and the + associated workflow actions as well. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element to duplicate + required: true + tags: + - Builder elements + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DuplicateElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_ELEMENT_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/builder/element/{element_id}/move/: + patch: + operationId: move_builder_page_element + description: >- + Moves the element in the page before another element or at the end of + the page if no before element is given. The elements must belong to the + same page. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: element_id + schema: + type: integer + description: The id of the element to move + required: true + tags: + - Builder elements + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveElement' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_ELEMENT_NOT_IN_SAME_PAGE + 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_ELEMENT_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/builder/page/{page_id}/data-sources/: + get: + operationId: list_builder_page_data_sources + description: >- + Lists all the data_sources of the page related to the provided parameter + if the user has access to the related builder's workspace. If the + workspace is related to a template, then this endpoint will be publicly + accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the data_sources of the page related to the provided + Id. + required: true + tags: + - Builder data sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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: '' + post: + operationId: create_builder_page_data_source + description: Creates a new builder data_source + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: >- + Creates a data_source for the builder page related to the provided + value. + required: true + tags: + - Builder data sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/Integration_ServiceCreateDataSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Integration_ServiceDataSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/page/{page_id}/dispatch-data-sources/: + post: + operationId: dispatch_builder_page_data_sources + description: Dispatches the service of the related page data_sources + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The page we want to dispatch the data source for. + required: true + tags: + - Builder data sources + security: + - JWT: [] + - {} + responses: + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_DATA_SOURCE_IMPROPERLY_CONFIGURED + - ERROR_IN_DISPATCH_CONTEXT + - ERROR_DATA_DOES_NOT_EXIST + - ERROR_PAGE_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/builder/page/{page_id}/elements/: + get: + operationId: list_builder_page_elements + description: >- + Lists all the elements of the page related to the provided parameter if + the user has access to the related builder's workspace. If the workspace + is related to a template, then this endpoint will be publicly + accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: Returns only the elements of the page related to the provided Id. + required: true + tags: + - Builder elements + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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: '' + post: + operationId: create_builder_page_element + description: Creates a new builder element + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: >- + Creates an element for the builder page related to the provided + value. + required: true + tags: + - Builder elements + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + multipart/form-data: + schema: + $ref: '#/components/schemas/Element_TypeCreateElement' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Element_TypeElement' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/page/{page_id}/workflow_actions/: + get: + operationId: list_builder_page_workflow_actions + description: >- + Lists all the workflow actions of the page related to the provided + parameter if the user has access to the related builder's workspace. If + the workspace is related to a template, then this endpoint will be + publicly accessible. + parameters: + - in: path + name: page_id + schema: + type: integer + description: >- + Returns only the workflow actions of the page related to the + provided Id. + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_PAGE_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: '' + post: + operationId: create_builder_page_workflow_action + description: Creates a new builder workflow action + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: >- + Creates a workflow action for the builder page related to the + provided value. + required: true + tags: + - Builder workflow actions + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + multipart/form-data: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeCreateBuilderWorkflowAction + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/page/{page_id}/workflow_actions/order/: + post: + operationId: order_builder_workflow_actions + description: Apply a new order to the workflow actions of a page + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The page the workflow actions belong to + required: true + tags: + - Builder workflow actions + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkflowActions' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + 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_PAGE_DOES_NOT_EXIST + - ERROR_WORKFLOW_ACTION_DOES_NOT_EXIST + - ERROR_WORKFLOW_ACTION_NOT_IN_ELEMENT + 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/builder/pages/{page_id}/: + patch: + operationId: update_builder_page + description: Updates an existing page of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The id of the page + required: true + tags: + - Builder pages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdatePage' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Page' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_PAGE_NAME_NOT_UNIQUE + - ERROR_PAGE_PATH_NOT_UNIQUE + - ERROR_PATH_PARAM_NOT_IN_PATH + - ERROR_PATH_PARAM_NOT_DEFINED + 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_PAGE_DOES_NOT_EXIST + - ERROR_APPLICATION_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: '' + delete: + operationId: delete_builder_page + description: Deletes an existing page of an application builder + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The id of the page + required: true + tags: + - Builder pages + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_PAGE_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/builder/pages/{page_id}/duplicate/async/: + post: + operationId: duplicate_builder_page_async + description: >- + Start a job to duplicate the page with the provided `page_id` parameter + if the authorized user has access to the builder's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: page_id + schema: + type: integer + description: The page to duplicate. + required: true + tags: + - Builder pages + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicatePageJobType' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_PAGE_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/builder/workflow_action/{workflow_action_id}/: + patch: + operationId: update_builder_page_workflow_action + description: Updates an existing builder workflow action. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workflow_action_id + schema: + type: integer + description: The id of the workflow action + required: true + tags: + - Builder workflow actions + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Builder_Workflow_Action_TypeBuilderWorkflowAction + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_WORKFLOW_ACTION_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: '' + delete: + operationId: delete_builder_page_workflow_action + description: Deletes the workflow action related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workflow_action_id + schema: + type: integer + description: The id of the workflow action + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_WORKFLOW_ACTION_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/builder/workflow_action/{workflow_action_id}/dispatch/: + post: + operationId: dispatch_builder_page_workflow_action + description: >- + Dispatches the service of the related workflow_action and returns the + result. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workflow_action_id + schema: + type: integer + description: The id of the workflow_action you want to call the dispatch for. + required: true + tags: + - Builder workflow actions + security: + - JWT: [] + - {} + responses: + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_WORKFLOW_ACTION_CANNOT_BE_DISPATCHED + 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/export/{job_id}/: + get: + operationId: get_export_job + description: >- + Returns information such as export progress and state or the url of the + exported file for the specified export job, only if the requesting user + has access. + parameters: + - in: path + name: job_id + schema: + type: integer + description: The job id to lookup information about. + required: true + tags: + - Database table export + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExportJob' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_EXPORT_JOB_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/export/table/{table_id}/: + post: + operationId: export_table + description: >- + Creates and starts a new export job for a table given some exporter + options. Returns an error if the requesting user does not have + permissionsto view the table. + parameters: + - in: path + name: table_id + schema: + type: integer + description: The table id to create and start an export job for + required: true + tags: + - Database table export + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Export' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Export' + multipart/form-data: + schema: + $ref: '#/components/schemas/Export' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExportJob' + 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_REQUEST_BODY_VALIDATION + - ERROR_TABLE_ONLY_EXPORT_UNSUPPORTED + - ERROR_VIEW_UNSUPPORTED_FOR_EXPORT_TYPE + - ERROR_VIEW_NOT_IN_TABLE + 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_TABLE_DOES_NOT_EXIST + - 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/fields/{field_id}/: + get: + operationId: get_database_table_field + description: >- + Returns the existing field if the authorized user has access to the + related database's workspace. Depending on the type different properties + could be returned. + parameters: + - in: path + name: field_id + schema: + type: integer + description: Returns the field related to the provided value. + required: true + tags: + - Database table fields + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FieldField' + 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 + 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_FIELD_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: '' + patch: + operationId: update_database_table_field + description: >- + Updates the existing field if the authorized user has access to the + related database's workspace. The type can also be changed and depending + on that type, different additional properties can optionally be set. If + you change the field type it could happen that the data conversion + fails, in that case the `ERROR_CANNOT_CHANGE_FIELD_TYPE` is returned, + but this rarely happens. If a data value cannot be converted it is set + to `null` so data might go lost.If updated the field causes other fields + to change then the specificinstances of those fields will be included in + the related fields response key. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: field_id + schema: + type: integer + description: Updates the field related to the provided value. + required: true + tags: + - Database table fields + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedFieldUpdateField' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FieldFieldSerializerWithRelatedFields' + 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_CANNOT_CHANGE_FIELD_TYPE + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_FIELD_WITH_SAME_NAME_ALREADY_EXISTS + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_FIELD_SELF_REFERENCE + - ERROR_FIELD_CIRCULAR_REFERENCE + 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_FIELD_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: '' + delete: + operationId: delete_database_table_field + description: >- + Deletes the existing field if the authorized user has access to the + related database's workspace. Note that all the related data to that + field is also deleted. Primary fields cannot be deleted because their + value represents the row. If deleting the field causes other fields to + change then the specificinstances of those fields will be included in + the related fields response key. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: field_id + schema: + type: integer + description: Deletes the field related to the provided value. + required: true + tags: + - Database table fields + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RelatedFields' + 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_CANNOT_DELETE_PRIMARY_FIELD + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_FIELD_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/fields/{field_id}/duplicate/async/: + post: + operationId: duplicate_table_field + description: >- + Duplicates the table with the provided `table_id` parameter if the + authorized user has access to the database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: field_id + schema: + type: integer + description: The field to duplicate. + required: true + tags: + - Database table fields + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateFieldJobType' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_FIELD_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/fields/{field_id}/unique_row_values/: + get: + operationId: get_database_field_unique_row_values + description: >- + Returns a list of all the unique row values for an existing field, + sorted in order of frequency. + parameters: + - in: path + name: field_id + schema: + type: integer + description: Returns the values related to the provided field. + required: true + - in: query + name: limit + schema: + type: integer + description: Defines how many values should be returned. + - in: query + name: split_comma_separated + schema: + type: boolean + description: >- + Indicates whether the original column values must be splitted by + comma. + tags: + - Database table fields + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UniqueRowValues' + 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 + 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_FIELD_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/fields/table/{table_id}/: + get: + operationId: list_database_table_fields + description: >- + Lists all the fields of the table related to the provided parameter if + the user has access to the related database's workspace. If the + workspace is related to a template, then this endpoint will be publicly + accessible. A table consists of fields and each field can have a + different type. Each type can have different properties. A field is + comparable with a regular table's column. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Returns only the fields of the table related to the provided value. + required: true + tags: + - Database table fields + security: + - JWT: [] + - Database token: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FieldField' + 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 + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_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: '' + post: + operationId: create_database_table_field + description: >- + Creates a new field for the table related to the provided `table_id` + parameter if the authorized user has access to the related database's + workspace. Depending on the type, different properties can optionally be + set.If creating the field causes other fields to change then the + specificinstances of those fields will be included in the related fields + response key. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Creates a new field for the provided table related to the value. + required: true + tags: + - Database table fields + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FieldCreateField' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/FieldCreateField' + multipart/form-data: + schema: + $ref: '#/components/schemas/FieldCreateField' + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FieldFieldSerializerWithRelatedFields' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_FIELD_COUNT_EXCEEDED + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_FIELD_WITH_SAME_NAME_ALREADY_EXISTS + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_FIELD_SELF_REFERENCE + - ERROR_FIELD_CIRCULAR_REFERENCE + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_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/formula/{table_id}/type/: + post: + operationId: type_formula_field + description: >- + Calculates and returns the type of the specified formula value. Does not + change the state of the field in any way. + parameters: + - in: path + name: table_id + schema: + type: integer + description: The table id of the formula field to type. + required: true + tags: + - Database table fields + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TypeFormulaRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TypeFormulaResult' + 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_REQUEST_BODY_VALIDATION + - ERROR_WITH_FORMULA + - ERROR_FIELD_SELF_REFERENCE + 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_TABLE_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/rows/names/: + get: + operationId: list_database_table_row_names + description: >- + Returns the names of the given row of the given tables. The nameof a row + is the primary field value for this row. The result can be usedfor + example, when you want to display the name of a linked row from another + table. + parameters: + - in: query + name: table__{id} + schema: + type: string + description: >- + A list of comma separated row ids to query from the table with id + {id}. For example, if you want the name of row `42` and `43` from + table `28` this parameter will be `table__28=42,43`. You can specify + multiple rows for different tables but every tables must be in the + same database. You need at least read permission on all specified + tables. + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + type: object + properties: + '{table_id}*': + type: object + description: An object containing the row names of table `table_id`. + properties: + '{row_id}*': + type: string + description: >- + the name of the row with id `row_id` from table with + id `table_id`. + 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 + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_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/rows/table/{table_id}/: + get: + operationId: list_database_table_rows + description: >- + Lists all the rows of the table related to the provided parameter if the + user has access to the related database's workspace. The response is + paginated by a page/size style. It is also possible to provide an + optional search query, only rows where the data matches the search query + are going to be returned then. The properties of the returned rows + depends on which fields the table has. For a complete overview of fields + use the **list_database_table_fields** endpoint to list them all. In the + example all field types are listed, but normally the number in + field_{id} key is going to be the id of the field. Or if the GET + parameter `user_field_names` is provided then the keys will be the name + of the field. The value is what the user has provided and the format of + it depends on the fields type. + parameters: + - in: query + name: exclude + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude query parameter. + If you for example provide the following GET parameter + `exclude=field_1,field_2` then the fields with id `1` and id `2` are + going to be excluded from the selection and response. If the + `user_field_names` parameter is provided then instead exclude should + be a comma separated list of the actual field names. For field names + with commas you should surround the name with quotes like so: + `exclude=My Field,"Field With , "`. A backslash can be used to + escape field names which contain double quotes like so: `exclude=My + Field,Field with \"`. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: include + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the include query parameter. + If you for example provide the following GET parameter + `include=field_1,field_2` then only the fields withid `1` and id `2` + are going to be selected and included in the response. If the + `user_field_names` parameter is provided then instead include should + be a comma separated list of the actual field names. For field names + with commas you should surround the name with quotes like so: + `include=My Field,"Field With , "`. A backslash can be used to + escape field names which contain double quotes like so: `include=My + Field,Field with \"`. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). If the `user_field_names` parameter is provided then instead + order_by should be a comma separated list of the actual field names. + For field names with commas you should surround the name with quotes + like so: `order_by=My Field,"Field With , "`. A backslash can be + used to escape field names which contain double quotes like so: + `order_by=My Field,Field with \"`. + - in: query + name: page + schema: + type: integer + description: Defines which page of 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: Defines how many rows should be returned per page. + - in: path + name: table_id + schema: + type: integer + description: Returns the rows of the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + - in: query + name: view_id + schema: + type: integer + description: Includes all the filters and sorts of the provided view. + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + - ERROR_PAGE_SIZE_LIMIT + - ERROR_INVALID_PAGE + - ERROR_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_FIELD_DOES_NOT_EXIST + - 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: '' + post: + operationId: create_database_table_row + description: >- + Creates a new row in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** to list them all. None of the fields are + required, if they are not provided the value is going to be `null` or + `false` or some default value is that is set. If you want to add a value + for the field with for example id `10`, the key must be named + `field_10`. Or instead if the `user_field_names` GET param is provided + the key must be the name of the field. Of course multiple fields can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: before + schema: + type: integer + description: >- + If provided then the newly created row will be positioned before the + row with the provided id. + - in: path + name: table_id + schema: + type: integer + description: Creates a row in the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + multipart/form-data: + schema: + $ref: >- + #/components/schemas/ExampleRowRequestSerializerWithUserFieldNames + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + - ERROR_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/{row_id}/: + get: + operationId: get_database_table_row + description: >- + Fetches an existing row from the table if the user has access to the + related table's workspace. The properties of the returned row depend on + which fields the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field of the field. Or if the GET parameter + `user_field_names` is provided then the keys will be the name of the + field. The value is what the user has provided and the format of it + depends on the fields type. + parameters: + - in: path + name: row_id + schema: + type: integer + description: Returns the row related the provided value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Returns the row of the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + patch: + operationId: update_database_table_row + description: >- + Updates an existing row in the table if the user has access to the + related table's workspace. The accepted body fields are depending on the + fields that the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. None of the + fields are required, if they are not provided the value is not going to + be updated. When you want to update a value for the field with id `10`, + the key must be named `field_10`. Or if the GET parameter + `user_field_names` is provided the key of the field to update must be + the name of the field. Multiple different fields to update can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: row_id + schema: + type: integer + description: Updates the row related to the value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Updates the row in the table related to the value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedExampleUpdateRowRequestSerializerWithUserFieldNames + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + delete: + operationId: delete_database_table_row + description: >- + Deletes an existing row in the table if the user has access to the + table's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: row_id + schema: + type: integer + description: Deletes the row related to the value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Deletes the row in the table related to the value. + required: true + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/{row_id}/adjacent/: + get: + operationId: get_adjacent_database_table_row + description: >- + Fetches the adjacent row to a given row_id in the table with the given + table_id. If the previous flag is set it will return the previous row, + otherwise it will return the next row. You can specifya view_id and it + will apply the filters and sorts of the provided view. + parameters: + - in: query + name: previous + schema: + type: boolean + description: >- + A flag query parameter which if provided returns theprevious row to + the specified row_id. If it's not setit will return the next row. + - in: path + name: row_id + schema: + type: integer + description: Returns the row adjacent the provided value. + required: true + - in: query + name: search + schema: + type: string + description: >- + If provided, the adjacent row will be one that matchesthe search + query. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: table_id + schema: + type: integer + description: Returns the row of the table related to the provided value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + - in: query + name: view_id + schema: + type: integer + description: Applies the filters and sorts of the provided view. + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + description: '' + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_DOES_NOT_EXIST + - 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/rows/table/{table_id}/{row_id}/history/: + get: + operationId: get_database_table_row_history + description: >- + Fetches the row change history of a given row_id in the table with the + given table_id. The row change history is paginated and can be limited + with the limit and offset query parameters. + parameters: + - in: query + name: limit + schema: + type: integer + description: The maximum number of row change history entries to return. + - in: query + name: offset + schema: + type: integer + description: The offset of the row change history entries to return. + - in: path + name: row_id + schema: + type: integer + description: The id of the row to fetch the change history from. + required: true + - in: path + name: table_id + schema: + type: integer + description: The id of the table to fetch the row change history from. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerRowHistory' + description: '' + '204': + description: No response body + '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 + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/{row_id}/move/: + patch: + operationId: move_database_table_row + description: >- + Moves the row related to given `row_id` parameter to another position. + It is only possible to move the row before another existing row or to + the end. If the `before_id` is provided then the row related to the + `row_id` parameter is moved before that row. If the `before_id` + parameter is not provided, then the row will be moved to the end. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: before_id + schema: + type: integer + description: >- + Moves the row related to the given `row_id` before the row related + to the provided value. If not provided, then the row will be moved + to the end. + - in: path + name: row_id + schema: + type: integer + description: Moves the row related to the value. + required: true + - in: path + name: table_id + schema: + type: integer + description: Moves the row in the table related to the value. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided the returned json will use + the user specified field names instead of internal Baserow field + names (field_123 etc). + tags: + - Database table rows + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + 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 + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/batch/: + post: + operationId: batch_create_database_table_rows + description: >- + Creates new rows in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** to list them all. None of the fields are + required, if they are not provided the value is going to be `null` or + `false` or some default value is that is set. If you want to add a value + for the field with for example id `10`, the key must be named + `field_10`. Or instead if the `user_field_names` GET param is provided + the key must be the name of the field. Of course multiple fields can be + provided in one request. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + + **WARNING:** This endpoint doesn't yet work with row created webhooks. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: before + schema: + type: integer + description: >- + If provided then the newly created rows will be positioned before + the row with the provided id. + - in: path + name: table_id + schema: + type: integer + description: Creates the rows in the table. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/ExampleBatchRowsRequest' + required: true + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsResponse' + 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_REQUEST_BODY_VALIDATION + - ERROR_ROW_IDS_NOT_UNIQUE + - ERROR_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + patch: + operationId: batch_update_database_table_rows + description: >- + Updates existing rows in the table if the user has access to the related + table's workspace. The accepted body fields are depending on the fields + that the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. None of the + fields are required, if they are not provided the value is not going to + be updated. When you want to update a value for the field with id `10`, + the key must be named `field_10`. Or if the GET parameter + `user_field_names` is provided the key of the field to update must be + the name of the field. Multiple different fields to update can be + provided for each row. In the examples below you will find all the + different field types, the numbers/ids in the example are just there for + example purposes, the field_ID must be replaced with the actual id of + the field or the name of the field if `user_field_names` is provided. + + **WARNING:** This endpoint doesn't yet work with row updated webhooks. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Updates the rows in the table. + required: true + - in: query + name: user_field_names + schema: + type: boolean + description: >- + A flag query parameter which if provided this endpoint will expect + and return the user specified field names instead of internal + Baserow field names (field_123 etc). + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedExampleBatchUpdateRowsRequest' + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleBatchRowsResponse' + 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_REQUEST_BODY_VALIDATION + - ERROR_ROW_IDS_NOT_UNIQUE + - ERROR_REQUEST_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/rows/table/{table_id}/batch-delete/: + post: + operationId: batch_delete_database_table_rows + description: >- + Deletes existing rows in the table if the user has access to the table's + workspace. + + **WARNING:** This endpoint doesn't yet work with row deleted webhooks. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Deletes the rows in the table related to the value. + required: true + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchDeleteRows' + required: true + security: + - JWT: [] + - Database token: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + - ERROR_ROW_IDS_NOT_UNIQUE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/tables/{table_id}/: + get: + operationId: get_database_table + description: >- + Returns the requested table if the authorized user has access to the + related database's workspace. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Returns the table related to the provided value. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + 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 + 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_TABLE_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: '' + patch: + operationId: update_database_table + description: >- + Updates the existing table if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Updates the table related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTableUpdate' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + 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_REQUEST_BODY_VALIDATION + 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_TABLE_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: '' + delete: + operationId: delete_database_table + description: >- + Deletes the existing table if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: Deletes the table related to the provided value. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TABLE_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/tables/{table_id}/duplicate/async/: + post: + operationId: duplicate_database_table_async + description: >- + Start a job to duplicate the table with the provided `table_id` + parameter if the authorized user has access to the database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: The table to duplicate. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleDuplicateTableJobType' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_TABLE_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/tables/{table_id}/import/async/: + post: + operationId: import_data_database_table_async + description: >- + Import data in the specified table if the authorized user has access to + the related database's workspace. This endpoint is asynchronous and + return the created job to track the progress of the task. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Import data into the table related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableImport' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableImport' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableImport' + required: true + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleFileImportJobSerializerClass' + 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 + 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_TABLE_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/tables/database/{database_id}/: + get: + operationId: list_database_tables + description: >- + Lists all the tables that are in the database related to the + `database_id` parameter if the user has access to the database's + workspace. A table is exactly as the name suggests. It can hold multiple + fields, each having their own type and multiple rows. They can be added + via the **create_database_table_field** and + **create_database_table_row** endpoints. + parameters: + - in: path + name: database_id + schema: + type: integer + description: Returns only tables that are related to the provided value. + required: true + tags: + - Database tables + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Table' + 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 + 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_APPLICATION_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: '' + post: + operationId: create_database_table + description: >- + Creates synchronously a new table for the database related to the + provided `database_id` parameter if the authorized user has access to + the database's workspace. + + + As an alternative you can use the `create_async_database_table` for + better performances and importing bigger files. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: database_id + schema: + type: integer + description: Creates a table for the database related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Table' + 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_REQUEST_BODY_VALIDATION + - ERROR_INVALID_INITIAL_TABLE_DATA + - ERROR_INITIAL_TABLE_DATA_LIMIT_EXCEEDED + - ERROR_RESERVED_BASEROW_FIELD_NAME + - ERROR_INITIAL_TABLE_DATA_HAS_DUPLICATE_NAMES + - ERROR_INVALID_BASEROW_FIELD_NAME + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_APPLICATION_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/tables/database/{database_id}/async/: + post: + operationId: create_database_table_async + description: >- + Creates a job that creates a new table for the database related to the + provided `database_id` parameter if the authorized user has access to + the database's workspace. This endpoint is asynchronous and return the + created job to track the progress of the task. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: database_id + schema: + type: integer + description: Creates a table for the database related to the provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableCreate' + required: true + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleFileImportJobSerializerClass' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_APPLICATION_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/tables/database/{database_id}/order/: + post: + operationId: order_database_tables + description: >- + Changes the order of the provided table ids to the matching position + that the id has in the list. If the authorized user does not belong to + the workspace it will be ignored. The order of the not provided tables + will be set to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: database_id + schema: + type: integer + description: >- + Updates the order of the tables in the database related to the + provided value. + required: true + tags: + - Database tables + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderTables' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderTables' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderTables' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_TABLE_NOT_IN_DATABASE + 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_APPLICATION_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/tokens/: + get: + operationId: list_database_tokens + description: >- + Lists all the database tokens that belong to the authorized user. A + token can be used to create, read, update and delete rows in the tables + of the token's workspace. It only works on the tables if the token has + the correct permissions. The **Database table rows** endpoints can be + used for these operations. + tags: + - Database tokens + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Token' + description: '' + post: + operationId: create_database_token + description: >- + Creates a new database token for a given workspace and for the + authorized user. + tags: + - Database tokens + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + 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_REQUEST_BODY_VALIDATION + 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/tokens/{token_id}/: + get: + operationId: get_database_token + description: >- + Returns the requested database token if it is owned by the authorized + user andif the user has access to the related workspace. + parameters: + - in: path + name: token_id + schema: + type: integer + description: Returns the database token related to the provided value. + required: true + tags: + - Database tokens + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + 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 + 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_TOKEN_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: '' + patch: + operationId: update_database_token + description: >- + Updates the existing database token if it is owned by the authorized + user and ifthe user has access to the related workspace. + parameters: + - in: path + name: token_id + schema: + type: integer + description: Updates the database token related to the provided value. + required: true + tags: + - Database tokens + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTokenUpdate' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + 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_REQUEST_BODY_VALIDATION + - ERROR_DATABASE_DOES_NOT_BELONG_TO_GROUP + - ERROR_TABLE_DOES_NOT_BELONG_TO_GROUP + 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_TOKEN_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: '' + delete: + operationId: delete_database_token + description: >- + Deletes the existing database token if it is owned by the authorized + user and ifthe user has access to the related workspace. + parameters: + - in: path + name: token_id + schema: + type: integer + description: Deletes the database token related to the provided value. + required: true + tags: + - Database tokens + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_TOKEN_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/tokens/check/: + get: + operationId: check_database_token + description: >- + This endpoint check be used to check if the provided personal API token + is valid. If returns a `200` response if so and a `403` is not. This can + be used by integrations like Zapier or n8n to test if a token is valid. + tags: + - Database tokens + security: + - Database token: [] + responses: + '200': + description: No response body + '403': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TOKEN_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/view/{view_id}/premium: + patch: + operationId: premium_view_attributes_update + description: Sets view attributes only available for premium users. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Sets show_logo of this view. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdatePremiumViewAttributes' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/View' + 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_FEATURE_NOT_AVAILABLE + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_CANNOT_UPDATE_PREMIUM_ATTRIBUTES_ON_TEMPLATE + 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/{slug}/link-row-field-lookup/{field_id}/: + get: + operationId: database_table_public_view_link_row_field_lookup + description: >- + If the view is publicly shared or if an authenticated user has access to + the related workspace, then this endpoint can be used to do a value + lookup of the link row fields that are included in the view. Normally it + is not possible for a not authenticated visitor to fetch the rows of a + table. This endpoint makes it possible to fetch the id and primary field + value of the related table of a link row included in the view. + parameters: + - in: path + name: field_id + schema: + type: integer + description: The field id of the link row field. + required: true + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: slug + schema: + type: string + description: The slug related to the view. + required: true + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerLinkRowValue' + 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: '' + '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 + - ERROR_FIELD_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/{slug}/public/auth/: + post: + operationId: public_view_token_auth + description: >- + Returns a valid never-expiring JWT token for this public shared view if + the password provided matches with the one saved by the view's owner. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug of the grid view to get public information about. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PublicViewAuthRequest' + required: true + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewAuthResponse' + description: '' + '401': + content: + application/json: + schema: + description: The password provided for this view is incorrect + 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/{slug}/public/info/: + get: + operationId: get_public_view_info + description: Returns the required public information to display a single shared view. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug of the view to get public information about. + required: true + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicViewInfo' + 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 + 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: '' + '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: '' + '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/{view_id}/: + get: + operationId: get_database_table_view + description: >- + Returns the existing view. Depending on the type different + propertiescould be returned. + parameters: + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on the + returned view. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: path + name: view_id + schema: + type: integer + description: Returns the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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 + 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: '' + patch: + operationId: update_database_table_view + description: >- + Updates the existing view. The type cannot be changed. It depends on the + existing type which properties can be changed. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on the + returned view. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: path + name: view_id + schema: + type: integer + description: Updates the view related to the provided value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedViewUpdateView' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + 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: '' + delete: + operationId: delete_database_table_view + description: >- + Deletes the existing view. Note that all the related settings of the + view are going to be deleted also. The data stays intact after deleting + the view because this is related to the table and not the view. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Deletes the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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/{view_id}/decorations/: + get: + operationId: list_database_table_view_decorations + description: >- + Lists all decorations of the view related to the provided `view_id` if + the user has access to the related database's workspace. A view can have + multiple decorations. View decorators can be used to decorate rows. This + can, for example, be used to change the border or background color of a + row if it matches certain conditions. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only decoration of the view given to the provided value. + required: true + tags: + - Database table view decorations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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 + 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: '' + post: + operationId: create_database_table_view_decoration + description: >- + Creates a new decoration for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a decoration for the view related to the given value. + required: true + tags: + - Database table view decorations + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + multipart/form-data: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeCreateViewDecoration + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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_REQUEST_BODY_VALIDATION + 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/{view_id}/duplicate/: + post: + operationId: duplicate_database_table_view + description: >- + Duplicates an existing view if the user has access to it. When a view is + duplicated everything is copied except: + + - The name is appended with the copy number. Ex: + `ViewName`->`ViewName(2)` and `View(2)`->`View(3)` + + - If the original view is publicly shared, the new view will not be + shared anymore + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Duplicates the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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 + 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/{view_id}/field-options/: + get: + operationId: get_database_table_view_field_options + description: >- + Responds with the fields options of the provided view if the + authenticated user has access to the related workspace. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Responds with field options related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFieldOptions' + 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_VIEW_DOES_NOT_SUPPORT_FIELD_OPTIONS + 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: '' + patch: + operationId: update_database_table_view_field_options + description: >- + Updates the field options of a view. The field options differ per field + type This could for example be used to update the field width of a + `grid` view if the user changes it. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Updates the field options related to the provided value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedViewFieldOptions' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFieldOptions' + 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_VIEW_DOES_NOT_SUPPORT_FIELD_OPTIONS + 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/{view_id}/filter-groups/: + post: + operationId: create_database_table_view_filter_group + description: >- + Creates a new filter group for the view related to the provided + `view_id` parameter. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: The ID of the view where create the new filter group. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewFilterGroup' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + 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_REQUEST_BODY_VALIDATION + 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/{view_id}/filters/: + get: + operationId: list_database_table_view_filters + description: >- + Lists all filters of the view related to the provided `view_id`. A view + can have multiple filters. When all the rows are requested for the view + only those that apply to the filters are returned. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only filters of the view related to the provided value. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + 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 + 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: '' + post: + operationId: create_database_table_view_filter + description: >- + Creates a new filter for the view related to the provided `view_id` + parameter. When the rows of a view are requested, for example via the + `list_database_table_grid_view_rows` endpoint, then only the rows that + apply to all the filters are going to be returned. A filter compares the + value of a field to the value of a filter. It depends on the type how + values are going to be compared. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a filter for the view related to the provided value. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewFilter' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_FILTER_NOT_SUPPORTED + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + 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 + - ERROR_VIEW_FILTER_GROUP_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/{view_id}/group_bys/: + get: + operationId: list_database_table_view_groupings + description: >- + Lists all groupings of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple groupings. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only groupings of the view related to the provided value. + required: true + tags: + - Database table view groupings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + 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 + 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: '' + post: + operationId: create_database_table_view_group + description: >- + Creates a new group by for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a group by for the view related to the provided value. + required: true + tags: + - Database table view groupings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewGroupBy' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + 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_REQUEST_BODY_VALIDATION + - ERROR_VIEW_GROUP_BY_NOT_SUPPORTED + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_GROUP_BY_FIELD_ALREADY_EXISTS + - ERROR_VIEW_GROUP_BY_FIELD_NOT_SUPPORTED + 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/{view_id}/rotate-slug/: + post: + operationId: rotate_database_view_slug + description: >- + Rotates the unique slug of the view by replacing it with a new value. + This would mean that the publicly shared URL of the view will change. + Anyone with the old URL won't be able to access the viewanymore. Only + view types which are sharable can have their slugs rotated. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Rotates the slug of the view related to the provided value. + required: true + tags: + - Database table views + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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_CANNOT_SHARE_VIEW_TYPE + 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/{view_id}/sortings/: + get: + operationId: list_database_table_view_sortings + description: >- + Lists all sortings of the view related to the provided `view_id` if the + user has access to the related database's workspace. A view can have + multiple sortings. When all the rows are requested they will be in the + desired order. + parameters: + - in: path + name: view_id + schema: + type: integer + description: Returns only sortings of the view related to the provided value. + required: true + tags: + - Database table view sortings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewSort' + 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 + 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: '' + post: + operationId: create_database_table_view_sort + description: >- + Creates a new sort for the view related to the provided `view_id` + parameter if the authorized user has access to the related database's + workspace. When the rows of a view are requested, for example via the + `list_database_table_grid_view_rows` endpoint, they will be returned in + the respected order defined by all the sortings. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_id + schema: + type: integer + description: Creates a sort for the view related to the provided value. + required: true + tags: + - Database table view sortings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateViewSort' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateViewSort' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateViewSort' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + 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_REQUEST_BODY_VALIDATION + - ERROR_VIEW_SORT_NOT_SUPPORTED + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_SORT_FIELD_ALREADY_EXISTS + - ERROR_VIEW_SORT_FIELD_NOT_SUPPORTED + 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/{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. + + + This is a **premium** feature. + parameters: + - 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 should be returned by default. This value can + be overwritten per select option. + - 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: + - 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_CALENDAR_VIEW_HAS_NO_DATE_FIELD + 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: '' + '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: '' + '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: 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 should be returned by default. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: + - 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 + 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/decoration/{view_decoration_id}/: + get: + operationId: get_database_table_view_decoration + description: >- + Returns the existing view decoration if the current user has access to + the related database's workspace. + parameters: + - in: path + name: view_decoration_id + schema: + type: integer + description: Returns the view decoration related to the provided id. + required: true + tags: + - Database table view decorations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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 + 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_DECORATION_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: '' + patch: + operationId: update_database_table_view_decoration + description: >- + Updates the existing decoration if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_decoration_id + schema: + type: integer + description: Updates the view decoration related to the provided value. + required: true + tags: + - Database table view decorations + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + application/x-www-form-urlencoded: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + multipart/form-data: + schema: + $ref: >- + #/components/schemas/PatchedDecorator_Value_Provider_TypeUpdateViewDecoration + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/Decorator_Value_Provider_TypeViewDecoration + 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 + 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_DECORATION_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: '' + delete: + operationId: delete_database_table_view_decoration + description: >- + Deletes the existing decoration if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_decoration_id + schema: + type: integer + description: Deletes the decoration related to the provided value. + required: true + tags: + - Database table view decorations + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_DECORATION_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/filter-group/{filter_group_id}/: + get: + operationId: get_database_table_view_filter_group + description: >- + Returns the existing view filter group with the given + `view_filter_group_id`. + parameters: + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - in: path + name: view_filter_group_id + schema: + type: integer + description: Teh ID of the view filter group to return. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + 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 + 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_FILTER_GROUP_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: '' + patch: + operationId: update_database_table_view_filter_group + description: Updates the existing filter group with the given `view_filter_group_id`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - in: path + name: view_filter_group_id + schema: + type: integer + description: The ID of the view filter group to update. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilterGroup' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilterGroup' + 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_REQUEST_BODY_VALIDATION + 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_FILTER_GROUP_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: '' + delete: + operationId: delete_database_table_view_filter_group + description: Deletes the existing filter group with the given `view_filter_group_id`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: filter_group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + - in: path + name: view_filter_group_id + schema: + type: integer + description: The ID of the view filter group to delete. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_FILTER_GROUP_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/filter/{view_filter_id}/: + get: + operationId: get_database_table_view_filter + description: Returns the existing view filter. + parameters: + - in: path + name: view_filter_id + schema: + type: integer + description: The ID of the view filter to return. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + 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 + 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_FILTER_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: '' + patch: + operationId: update_database_table_view_filter + description: Updates the existing filter. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_filter_id + schema: + type: integer + description: The ID of the view filter to update. + required: true + tags: + - Database table view filters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewFilter' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewFilter' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + - ERROR_VIEW_FILTER_NOT_SUPPORTED + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + 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_FILTER_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: '' + delete: + operationId: delete_database_table_view_filter + description: >- + Deletes the existing filter if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_filter_id + schema: + type: integer + description: The ID of the view filter to delete. + required: true + tags: + - Database table view filters + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_FILTER_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/form/{slug}/submit/: + get: + operationId: get_meta_database_table_form_view + description: >- + Returns the metadata related to the form view if the form is publicly + shared or if the user has access to the related workspace. This data can + be used to construct a form with the right fields. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug related to the form form. + required: true + tags: + - Database table form view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PublicFormView' + description: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_PUBLICLY_SHARED_FORM + 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_FORM_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: '' + post: + operationId: submit_database_table_form_view + description: >- + Submits the form if the form is publicly shared or if the user has + access to the related workspace. The provided data will be validated + based on the fields that are in the form and the rules per field. If + valid, a new row will be created in the table. + parameters: + - in: path + name: slug + schema: + type: string + description: The slug related to the form. + required: true + tags: + - Database table form view + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/ExampleRowRequest' + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FormViewSubmitted' + description: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_PUBLICLY_SHARED_FORM + 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_FORM_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/form/{slug}/upload-file/: + post: + operationId: upload_file_form_view + description: >- + Uploads a file anonymously to Baserow by uploading the file contents + directly. A `file` multipart is expected containing the file contents. + parameters: + - in: path + name: slug + schema: + type: string + description: >- + Submits files only if the view with the provided slughas a public + file field. + required: true + tags: + - Database table form view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + - ERROR_VIEW_HAS_NO_PUBLIC_FILE_FIELD + 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: '' + '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: '' + '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/gallery/{slug}/public/rows/: + get: + operationId: public_list_database_table_gallery_view_rows + description: >+ + Lists the requested rows of the view's table related to the provided + `slug` if the gallery view is public.The response is paginated either by + a limit/offset or page/size style. The style depends on the provided GET + parameters. The properties of the returned rows depends on which fields + the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. The value is what the user has provided + and the format of it depends on the fields type. + + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - in: query + name: exclude_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list allowing the values of `field_options` 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. + - in: query + name: include_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - in: path + name: slug + schema: + type: string + description: Returns only rows that belong to the related view. + required: true + tags: + - Database table gallery view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PublicPaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse + 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_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: '' + '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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GALLERY_DOES_NOT_EXIST + - ERROR_FIELD_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/gallery/{view_id}/: + get: + operationId: list_database_table_gallery_view_rows + description: >- + Lists the requested rows of the view's table related to the provided + `view_id` if the authorized user has access to the database's workspace. + The response is paginated by a limit/offset style. + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - 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 should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: view_id + schema: + type: integer + description: Returns only rows that belong to the related view's table. + required: true + tags: + - Database table gallery view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse + 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_FILTER_FIELD_NOT_FOUND + - ERROR_VIEW_FILTER_TYPE_DOES_NOT_EXIST + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + - ERROR_FILTERS_PARAM_VALIDATION_ERROR + - ERROR_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + 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_GALLERY_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/grid/{slug}/public/rows/: + get: + operationId: public_list_database_table_grid_view_rows + description: >+ + Lists the requested rows of the view's table related to the provided + `slug` if the grid view is public.The response is paginated either by a + limit/offset or page/size style. The style depends on the provided GET + parameters. The properties of the returned rows depends on which fields + the table has. For a complete overview of fields use the + **list_database_table_fields** endpoint to list them all. In the example + all field types are listed, but normally the number in field_{id} key is + going to be the id of the field. The value is what the user has provided + and the format of it depends on the fields type. + + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - in: query + name: exclude_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: group_by + schema: + type: string + description: >- + Optionally the rows can be grouped by provided field ids separated + by comma. By default no groups are applied. This doesn't actually + responds with the rows groups, this is just what's needed for the + Baserow group by feature. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list allowing the values of `field_options` 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. + - in: query + name: include_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - in: path + name: slug + schema: + type: string + description: Returns only rows that belong to the related view. + required: true + tags: + - Database table grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PublicPaginationSerializerWithGridViewFieldOptionsExampleRowResponse + 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_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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: '' + '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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GRID_DOES_NOT_EXIST + - ERROR_FIELD_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/grid/{view_id}/: + get: + operationId: list_database_table_grid_view_rows + description: >- + Lists the requested rows of the view's table related to the provided + `view_id` if the authorized user has access to the database's workspace. + The response is paginated either by a limit/offset or page/size style. + The style depends on the provided GET parameters. The properties of the + returned rows depends on which fields the table has. For a complete + overview of fields use the **list_database_table_fields** endpoint to + list them all. In the example all field types are listed, but normally + the number in field_{id} key is going to be the id of the field. The + value is what the user has provided and the format of it depends on the + fields type. + + + The filters and sortings are automatically applied. To get a full + overview of the applied filters and sortings you can use the + `list_database_table_view_filters` and + `list_database_table_view_sortings` endpoints. + parameters: + - in: query + name: count + schema: + type: boolean + description: If provided only the count will be returned. + - in: query + name: exclude_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the exclude_fields query + parameter. If you for example provide the following GET parameter + `exclude_fields=field_1,field_2` then the fields with id `1` and id + `2` are going to be excluded from the selection and response. + - 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - 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: include_fields + schema: + type: string + description: >- + All the fields are included in the response by default. You can + select a subset of fields by providing the fields query parameter. + If you for example provide the following GET parameter + `include_fields=field_1,field_2` then only the fields with id `1` + and id `2` are going to be selected and included in the response. + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: order_by + schema: + type: string + description: >- + Optionally the rows can be ordered by provided field ids separated + by comma. By default a field is ordered in ascending (A-Z) order, + but by prepending the field with a '-' it can be ordered descending + (Z-A). + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - 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 grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: >- + #/components/schemas/PaginationSerializerWithGridViewFieldOptionsExampleRowResponse + 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_ORDER_BY_FIELD_NOT_FOUND + - ERROR_ORDER_BY_FIELD_NOT_POSSIBLE + - 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_GRID_DOES_NOT_EXIST + - ERROR_FIELD_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: '' + post: + operationId: filter_database_table_grid_view_rows + description: >- + Lists only the rows and fields that match the request. Only the rows + with the ids that are in the `row_ids` list are going to be returned. + Same goes for the fields, only the fields with the ids in the + `field_ids` are going to be returned. This endpoint could be used to + refresh data after changes something. For example in the web frontend + after changing a field type, the data of the related cells will be + refreshed using this endpoint. In the example all field types are + listed, but normally the number in field_{id} key is going to be the id + of the field. The value is what the user has provided and the format of + it depends on the fields type. + parameters: + - 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 grid view + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GridViewFilter' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/GridViewFilter' + multipart/form-data: + schema: + $ref: '#/components/schemas/GridViewFilter' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + 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_REQUEST_BODY_VALIDATION + 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_GRID_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/grid/{view_id}/aggregation/{field_id}/: + get: + operationId: get_database_table_grid_view_field_aggregation + description: >- + Computes the aggregation of all the values for a specified field from + the selected grid view. You must select the aggregation type by setting + the `type` GET parameter. If filters are configured for the selected + view, the aggregation is calculated only on filtered rows. You need to + have read permissions on the view to request an aggregation. + parameters: + - in: path + name: field_id + schema: + type: integer + description: The field id you want to aggregate + required: true + - in: query + name: include + schema: + type: string + description: >- + if `include` is set to `total`, the total row count will be returned + with the result. + - in: query + name: type + schema: + type: string + description: >- + The aggregation type you want. Available aggregation types: + empty_count, not_empty_count, unique_count, min, max, sum, average, + median, decile, variance, std_dev + - in: path + name: view_id + schema: + type: integer + description: Select the view you want the aggregation for. + required: true + tags: + - Database table grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + value: + anyOf: + - type: number + description: The aggregation result for the specified field. + example: 5 + - type: string + description: The aggregation result for the specified field. + - type: array + items: {} + description: The aggregation result for the specified field. + - type: object + description: The aggregation result for the specified field. + total: + type: integer + description: >- + The total value count. Only returned if `include=total` is + specified as GET parameter. + example: 7 + required: + - value + 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_AGGREGATION_TYPE_DOES_NOT_EXIST + - ERROR_FIELD_NOT_IN_TABLE + 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_FIELD_DOES_NOT_EXIST + - ERROR_GRID_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/grid/{view_id}/aggregations/: + get: + operationId: get_database_table_grid_view_field_aggregations + description: >- + Returns all field aggregations values previously defined for this grid + view. If filters exist for this view, the aggregations are computed only + on filtered rows.You need to have read permissions on the view to + request aggregations. + parameters: + - in: query + name: filter__{field}__{filter} + schema: + type: string + description: >- + The aggregation 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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 aggregated rows must match all the + provided filters. + + `OR`: Indicates that the aggregated 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 for the + aggregation. The filter tree is a nested structure containing the + filters that need to be applied. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - in: query + name: include + schema: + type: string + description: >- + if `include` is set to `total`, the total row count will be returned + with the result. + - in: query + name: search + schema: + type: string + description: If provided the aggregations are calculated only for matching rows. + - 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 `full-text-with-count` + is used, then Postgres full-text search is used. If `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: path + name: view_id + schema: + type: integer + description: Select the view you want the aggregations for. + required: true + tags: + - Database table grid view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + field_{id}: + anyOf: + - type: number + description: The aggregation result for the field with id {id}. + example: 5 + - type: string + description: The aggregation result for the field with id {id}. + - type: array + items: {} + description: The aggregation result for the field with id {id}. + - type: object + description: The aggregation result for the field with id {id}. + total: + type: integer + description: >- + The total value count. Only returned if `include=total` is + specified as GET parameter. + example: 7 + 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_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_GRID_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/group_by/{view_group_by_id}/: + get: + operationId: get_database_table_view_group + description: >- + Returns the existing view group by if the authorized user has access to + the related database's workspace. + parameters: + - in: path + name: view_group_by_id + schema: + type: integer + description: Returns the view group by related to the provided value. + required: true + tags: + - Database table view groupings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + 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 + 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_GROUP_BY_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: '' + patch: + operationId: update_database_table_view_group + description: >- + Updates the existing group by if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_group_by_id + schema: + type: integer + description: Updates the view group by related to the provided value. + required: true + tags: + - Database table view groupings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewGroupBy' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewGroupBy' + 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_FIELD_NOT_IN_TABLE + - ERROR_VIEW_GROUP_BY_FIELD_ALREADY_EXISTS + 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_GROUP_BY_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: '' + delete: + operationId: delete_database_table_view_group + description: >- + Deletes the existing group by if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_group_by_id + schema: + type: integer + description: Deletes the group by related to the provided value. + required: true + tags: + - Database table view groupings + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_GROUP_BY_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/kanban/{slug}/public/rows/: + get: + operationId: public_list_database_table_kanban_view_rows + description: >- + Responds with serialized rows grouped by the view's single select field + options related to the `slug` if the kanban view is publicly shared. + Additional query parameters can be provided to control the `limit` and + `offset` per select option. + + + 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - 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. + + + Please note that if this parameter is provided, all other + `filter__{field}__{filter}` will be ignored, as well as the + `filter_type` parameter. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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. + - in: query + name: limit + schema: + type: integer + description: >- + Defines how many rows should be returned by default. This value can + be overwritten per select option. + - 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: query + name: select_option + schema: + type: string + description: >- + Accepts multiple `select_option` parameters. If not provided, the + rows of all select options will be returned. If one or more + `select_option` parameters are provided, then only the rows of those + will be included in the response. + `?select_option=1&select_option=null` will only include the rows for + both select option with id `1` and `null`. `?select_option=1,10,20` + will only include the rows of select option id `1` with a limit of + `10` and and offset of `20`. + - in: path + name: slug + schema: + type: string + description: Returns only rows that belong to the related view. + required: true + tags: + - Database table kanban view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KanbanViewExampleResponse' + 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_KANBAN_VIEW_HAS_NO_SINGLE_SELECT_FIELD + - ERROR_VIEW_FILTER_TYPE_DOES_NOT_EXIST + - ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD + - ERROR_FILTER_FIELD_NOT_FOUND + - 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: '' + '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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_KANBAN_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/kanban/{view_id}/: + get: + operationId: list_database_table_kanban_view_rows + description: >- + Responds with serialized rows grouped by the view's single select field + options if the user is authenticated and has access to the related + workspace. Additional query parameters can be provided to control the + `limit` and `offset` per select option. + + + 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. + + + Please note that if the `filters` parameter is provided, this + parameter will be ignored. + + + For 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. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.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. + + + An example of a valid filter tree is the following:`{"filter_type": + "AND", "filters": [{"field": 1, "type": "equal", "value": + "test"}]}`. + + + The 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, lower_than, 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, + single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the + view filters saved for the view itself will be ignored. + - 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 should be returned by default. This value can + be overwritten per select option. + - 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: query + name: select_option + schema: + type: string + description: >- + Accepts multiple `select_option` parameters. If not provided, the + rows of all select options will be returned. If one or more + `select_option` parameters are provided, then only the rows of those + will be included in the response. + `?select_option=1&select_option=null` will only include the rows for + both select option with id `1` and `null`. `?select_option=1,10,20` + will only include the rows of select option id `1` with a limit of + `10` and and offset of `20`. + - 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 kanban view + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/KanbanViewExampleResponse' + 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_KANBAN_VIEW_HAS_NO_SINGLE_SELECT_FIELD + - ERROR_INVALID_SELECT_OPTION_PARAMETER + - 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_KANBAN_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/sort/{view_sort_id}/: + get: + operationId: get_database_table_view_sort + description: >- + Returns the existing view sort if the authorized user has access to the + related database's workspace. + parameters: + - in: path + name: view_sort_id + schema: + type: integer + description: Returns the view sort related to the provided value. + required: true + tags: + - Database table view sortings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + 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 + 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_SORT_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: '' + patch: + operationId: update_database_table_view_sort + description: >- + Updates the existing sort if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_sort_id + schema: + type: integer + description: Updates the view sort related to the provided value. + required: true + tags: + - Database table view sortings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateViewSort' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewSort' + 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_FIELD_NOT_IN_TABLE + - ERROR_VIEW_SORT_FIELD_ALREADY_EXISTS + 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_SORT_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: '' + delete: + operationId: delete_database_table_view_sort + description: >- + Deletes the existing sort if the authorized user has access to the + related database's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: view_sort_id + schema: + type: integer + description: Deletes the sort related to the provided value. + required: true + tags: + - Database table view sortings + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_SORT_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/table/{table_id}/: + get: + operationId: list_database_table_views + description: >- + Lists all views of the table related to the provided `table_id`. If the + workspace is related to a template, then this endpoint will be publicly + accessible. A table can have multiple views. Each view can display the + data in a different way. For example the `grid` view shows the in a + spreadsheet like way. That type has custom endpoints for data retrieval + and manipulation. In the future other views types like a calendar or + Kanban are going to be added. Each type can have different properties. + parameters: + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on each view + in the response. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: query + name: limit + schema: + type: integer + description: >- + The maximum amount of views that must be returned. This endpoint + doesn't support pagination, but if you for example just need to + fetch the first view, you can do that by setting a limit. There + isn't a limit by default. + - in: path + name: table_id + schema: + type: integer + description: Returns only views of the table related to the provided value. + required: true + - in: query + name: type + schema: + type: string + description: >- + Optionally filter on the view type. If provided, only views of that + type will be returned. + tags: + - Database table views + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ViewView' + 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 + 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_TABLE_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: '' + post: + operationId: create_database_table_view + description: >- + Creates a new view for the table related to the provided `table_id` + parameter. Depending on the type, different properties can optionally be + set. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: query + name: include + schema: + type: string + description: >- + A comma separated list of extra attributes to include on each view + in the response. The supported attributes are `filters`, `sortings` + and `decorations`. For example `include=filters,sortings` will add + the attributes `filters` and `sortings` to every returned view, + containing a list of the views filters and sortings respectively. + - in: path + name: table_id + schema: + type: integer + description: Creates a view for the table related to the provided value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ViewCreateView' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ViewCreateView' + multipart/form-data: + schema: + $ref: '#/components/schemas/ViewCreateView' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ViewView' + 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_REQUEST_BODY_VALIDATION + - ERROR_FIELD_NOT_IN_TABLE + 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_TABLE_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/table/{table_id}/order/: + post: + operationId: order_database_table_views + description: >- + Changes the order of the provided view ids to the matching position that + the id has in the list. The order of the not provided views will be set + to `0`. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: table_id + schema: + type: integer + description: >- + Updates the order of the views in the table related to the provided + value. + required: true + tags: + - Database table views + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderViews' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderViews' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderViews' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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_VIEW_NOT_IN_TABLE + 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_TABLE_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/webhooks/{webhook_id}/: + get: + operationId: get_database_table_webhook + description: >- + Returns the existing webhook if the authorized user has access to the + related database workspace. + parameters: + - in: path + name: webhook_id + schema: + type: integer + description: Returns the webhook related to the provided value. + required: true + tags: + - Database table webhooks + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + 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 + 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_TABLE_WEBHOOK_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: '' + patch: + operationId: update_database_table_webhook + description: >- + Updates the existing view if the authorized user has access to the + related database workspace. + parameters: + - in: path + name: webhook_id + schema: + type: integer + description: Updates the webhook related to the provided value. + required: true + tags: + - Database table webhooks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTableWebhookUpdateRequest' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + 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 + 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_TABLE_WEBHOOK_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: '' + delete: + operationId: delete_database_table_webhook + description: >- + Deletes the existing webhook if the authorized user has access to the + related database's workspace. + parameters: + - in: path + name: webhook_id + schema: + type: integer + description: Deletes the webhook related to the provided value. + required: true + tags: + - Database table webhooks + security: + - JWT: [] + responses: + '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 + 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_TABLE_WEBHOOK_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/webhooks/table/{table_id}/: + get: + operationId: list_database_table_webhooks + description: >- + Lists all webhooks of the table related to the provided `table_id` if + the user has access to the related database workspace. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Returns only webhooks of the table related to this value. + required: true + tags: + - Database table webhooks + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TableWebhook' + 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 + 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_TABLE_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: '' + post: + operationId: create_database_table_webhook + description: >- + Creates a new webhook for the table related to the provided `table_id` + parameter if the authorized user has access to the related database + workspace. + parameters: + - in: path + name: table_id + schema: + type: integer + description: Creates a webhook for the table related to the provided value. + required: true + tags: + - Database table webhooks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableWebhookCreateRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhook' + 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_TABLE_WEBHOOK_MAX_LIMIT_EXCEEDED + 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_TABLE_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/webhooks/table/{table_id}/test-call/: + post: + operationId: test_call_database_table_webhook + description: >- + This endpoint triggers a test call based on the provided data if the + user has access to the workspace related to the table. The test call + will be made immediately and a copy of the request, response and status + will be included in the response. + parameters: + - in: path + name: table_id + schema: + type: integer + description: The id of the table that must be tested. + required: true + tags: + - Database table webhooks + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/TableWebhookTestCallRequest' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TableWebhookTestCallResponse' + 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 + 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_TABLE_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/groups/: + get: + operationId: list_groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the groups of the authorized user. A group can contain multiple applications like a database. Multiple users can have access to a group. For example each company could have their own group containing databases related to that company. The order of the groups are custom for each user. The order is configurable via the **order_groups** endpoint. + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + post: + operationId: create_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [create_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new group where only the authorized user has access to. No initial data like database applications are added, they have to be created via other endpoints. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Workspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/Workspace' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + /api/groups/{group_id}/: + patch: + operationId: update_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Updates the existing group related to the provided `group_id` parameter if the authorized user belongs to the group. It is not yet possible to add additional users to a group. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: Updates the group related to the provided value. + required: true + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + 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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + delete: + operationId: delete_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes an existing group if the authorized user belongs to the group. All the applications, databases, tables etc that were in the group are going to be deleted also. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: Deletes the group related to the provided value. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_GROUP_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/groups/{group_id}/leave/: + post: + operationId: leave_group + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [leave_workspace](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Makes the authenticated user leave the group related to the provided `group_id` if the user is in that group. If the user is the last admin in the group, they will not be able to leave it. There must always be one admin in the group, otherwise it will be left without control. If that is the case, they must either delete the group or give another member admin permissions first. + parameters: + - in: path + name: group_id + schema: + type: integer + description: Leaves the group related to the value. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_GROUP_USER_IS_LAST_ADMIN + 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_GROUP_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/groups/{group_id}/permissions/: + get: + operationId: group_permissions + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_permissions](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns a the permission data necessary to determine the permissions of a specific user over a specific group. + See `core.handler.CoreHandler.get_permissions()` for more details. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group id we want the permission object for. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PermissionObject' + description: '' + '404': + 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_GROUP_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/groups/invitations/{group_invitation_id}/: + get: + operationId: get_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [get_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Returns the requested group invitation if the authorized user has admin right to the related group + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Returns the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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: '' + patch: + operationId: update_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Updates the existing group invitation related to the provided `group_invitation_id` param if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Updates the group invitation related to the provided value. + required: true + tags: + - Group invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_INVITATION_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: '' + delete: + operationId: delete_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Deletes a group invitation if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Deletes the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/groups/invitations/{group_invitation_id}/accept/: + post: + operationId: accept_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [accept_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Accepts a group invitation with the given id if the email address of the user matches that of the invitation. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Accepts the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/groups/invitations/{group_invitation_id}/reject/: + post: + operationId: reject_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [reject_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Rejects a group invitation with the given id if the email address of the user matches that of the invitation. + parameters: + - in: path + name: group_invitation_id + schema: + type: integer + description: Rejects the group invitation related to the provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/groups/invitations/group/{group_id}/: + get: + operationId: list_group_invitations + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspace_invitations](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all the group invitations of the group related to the provided `group_id` parameter if the authorized user has admin rights to that group. + parameters: + - in: path + name: group_id + schema: + type: integer + description: >- + Returns only invitations that are in the group related to the + provided value. + required: true + tags: + - Group invitations + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + post: + operationId: create_group_invitation + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [create_workspace_invitation](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new group invitations for an email address if the authorized user has admin rights to the related group. An email containing a sign up link will be send to the user. + parameters: + - in: path + name: group_id + schema: + type: integer + description: >- + Creates a group invitation to the group related to the provided + value. + required: true + tags: + - Group invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_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/groups/invitations/token/{token}/: + get: + operationId: get_group_invitation_by_token + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [get_workspace_invitation_by_token](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Responds with the serialized group invitation if an invitation with the provided token is found. + parameters: + - in: path + name: token + schema: + type: string + description: Returns the group invitation related to the provided token. + required: true + tags: + - Group invitations + security: + - JWT: [] + - {} + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserWorkspaceInvitation' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - BAD_TOKEN_SIGNATURE + 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_GROUP_INVITATION_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/groups/order/: + post: + operationId: order_groups + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [order_workspaces](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Changes the order of the provided group ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order will be custom for each user. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + required: true + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + /api/groups/users/{group_user_id}/: + patch: + operationId: update_group_user + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [update_workspace_user](https://api.baserow.io).** + + Updates the existing group user related to the provided `group_user_id` param if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_user_id + schema: + type: integer + description: Updates the group user related to the provided value. + required: true + tags: + - Groups + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUser' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_USER_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: '' + delete: + operationId: delete_group_user + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [delete_workspace_user](https://api.baserow.io).** + + Deletes a group user if the authorized user has admin rights to the related group. + parameters: + - in: path + name: group_user_id + schema: + type: integer + description: Deletes the group user related to the provided value. + required: true + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/groups/users/group/{group_id}/: + get: + operationId: list_group_users + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [list_workspace_users](https://api.baserow.io).** + + Lists all the users that are in a group if the authorized user has admin permissions to the related group. To add a user to a group an invitation must be sent first. + parameters: + - in: path + name: group_id + schema: + type: integer + description: Lists group users related to the provided group value. + required: true + - in: query + name: search + schema: + type: string + description: Search for group users by username, or email. + - in: query + name: sorts + schema: + type: string + description: Sort group users by name, email or role. + tags: + - Groups + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ListWorkspaceUsersWithMemberData' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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_GROUP_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/integration/{integration_id}/: + patch: + operationId: update_application_integration + description: Updates an existing integration. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: integration_id + schema: + type: integer + description: The id of the integration + required: true + tags: + - Integrations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedIntegrationUpdateIntegration' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_INTEGRATION_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: '' + delete: + operationId: delete_application_integration + description: Deletes the integration related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: integration_id + schema: + type: integer + description: The id of the integration + required: true + tags: + - Integrations + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_INTEGRATION_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/integration/{integration_id}/move/: + patch: + operationId: move_application_integration + description: >- + Moves the integration in the application before another integration or + at the end of the application if no before integration is given. The + integrations must belong to the same application. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: integration_id + schema: + type: integer + description: The id of the integration to move + required: true + tags: + - Integrations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveIntegration' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationIntegration' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_INTEGRATION_NOT_IN_SAME_APPLICATION + 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_INTEGRATION_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/jobs/: + get: + operationId: list_job + description: >- + List all existing jobs. Jobs are task executed asynchronously in the + background. You can use the `get_job` endpoint to read the + currentprogress of a the job. + parameters: + - in: query + name: job_ids + schema: + type: string + description: >- + A comma separated list of job ids in the desired order.The jobs will + be returned in the same order as the ids.If a job id is not found it + will be ignored. + - in: query + name: states + schema: + type: string + description: >- + A comma separated list of jobs state to look for. The only possible + values are: `pending`, `finished` and `failed`. It's possible to + exclude a state by prefixing it with a `!`. + tags: + - Jobs + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Job_TypeJob' + description: '' + post: + operationId: create_job + description: >- + Creates a new job. This job runs asynchronously in the background and + execute the task specific to the provided typeparameters. The `get_job` + can be used to get the current state of the job. + tags: + - Jobs + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + multipart/form-data: + schema: + $ref: '#/components/schemas/Job_TypeCreateJob' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeJob' + 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_REQUEST_BODY_VALIDATION + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_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/jobs/{job_id}/: + get: + operationId: get_job + description: >- + Returns the information related to the provided job id. This endpoint + can for example be polled to get the state and progress of the job in + real time. + parameters: + - in: path + name: job_id + schema: + type: integer + description: The job id to lookup information about. + required: true + tags: + - Jobs + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Job_TypeJob' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_JOB_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/licenses/: + get: + operationId: admin_licenses + description: >- + Lists all the valid licenses that are registered to this instance. A + premium license can be used to unlock the premium features for a fixed + amount of users. An enterprise license can similarly be used to unlock + enterpise features. More information about self hosted licenses can be + found on our pricing page https://baserow.io/pricing. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/License' + description: '' + post: + operationId: admin_register_license + description: >- + Registers a new license. After registering you can assign users to the + license that will be able to use the license's features while the + license is active. If an existing license with the same `license_id` + already exists and the provided license has been issued later than that + one, the existing one will be upgraded. + tags: + - Admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RegisterLicense' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RegisterLicense' + multipart/form-data: + schema: + $ref: '#/components/schemas/RegisterLicense' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/License' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_LICENSE + - ERROR_UNSUPPORTED_LICENSE + - ERROR_PREMIUM_LICENSE_INSTANCE_ID_MISMATCH + - ERROR_LICENSE_HAS_EXPIRED + - ERROR_LICENSE_ALREADY_EXISTS + 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/licenses/{id}/: + get: + operationId: admin_get_license + description: >- + Responds with detailed information about the license related to the + provided parameter. + parameters: + - in: path + name: id + schema: + type: integer + description: The internal identifier of the license. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseWithUsers' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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: '' + delete: + operationId: admin_remove_license + description: >- + Removes the existing license related to the provided parameter. If the + license is active, then all the users that are using the license will + lose access to the features granted by that license. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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/licenses/{id}/{user_id}/: + post: + operationId: admin_add_user_to_license + description: >- + Adds the user related to the provided parameter and to the license + related to the parameter. This only happens if there are enough seats + left on the license and if the user is not already on the license. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + - in: path + name: user_id + schema: + type: integer + description: The ID of the user that must be added to the license. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_USER_ALREADY_ON_LICENSE + - ERROR_NO_SEATS_LEFT_IN_LICENSE + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_DOES_NOT_EXIST + - ERROR_USER_NOT_FOUND + 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: '' + delete: + operationId: admin_remove_user_from_license + description: >- + Removes the user related to the provided parameter and to the license + related to the parameter. This only happens if the user is on the + license, otherwise nothing will happen. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + - in: path + name: user_id + schema: + type: integer + description: The ID of the user that must be removed from the license. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_DOES_NOT_EXIST + - ERROR_USER_NOT_FOUND + 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/licenses/{id}/check/: + get: + operationId: admin_license_check + description: >- + This endpoint checks with the authority if the license needs to be + updated. It also checks if the license is operating within its limits + and might take action on that. It could also happen that the license has + been deleted because there is an instance id mismatch or because it's + invalid. In that case a `204` status code is returned. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LicenseWithUsers' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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/licenses/{id}/fill-seats/: + post: + operationId: admin_fill_remaining_seats_of_license + description: >- + Fills the remaining empty seats of the license with the first users that + are found. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/LicenseUser' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_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/licenses/{id}/lookup-users/: + get: + operationId: admin_license_lookup_users + description: >- + This endpoint can be used to lookup users that can be added to a + license. Users that are already in the license are not returned here. + Optionally a `search` query parameter can be provided to filter the + results. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + - in: query + name: page + schema: + type: integer + description: Defines which page of users should be returned. + - in: query + name: search + schema: + type: string + description: >- + If provided, only users where the name or email contains the value + are returned. + - in: query + name: size + schema: + type: integer + description: Defines how many users should be returned per page. + tags: + - Admin + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerLicenseUserLookup' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_LICENSE_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/licenses/{id}/remove-all-users/: + post: + operationId: admin_remove_all_users_from_license + description: >- + Removes all the users that are on the license. This will empty all the + seats. + parameters: + - in: path + name: id + schema: + type: integer + description: >- + The internal identifier of the license, this is `id` and not + `license_id`. + required: true + tags: + - Admin + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANT_MANUALLY_CHANGE_SEATS + 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_LICENSE_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/notifications/{workspace_id}/: + get: + operationId: list_workspace_notifications + description: >- + Lists the notifications for the given workspace and the current user. + The response is paginated and the limit and offset parameters can be + controlled using the query parameters. + parameters: + - in: query + name: limit + schema: + type: integer + description: Defines how many notifications should be returned. + - in: query + name: offset + schema: + type: integer + description: Defines the offset of the notifications that should be returned. + - in: path + name: workspace_id + schema: + type: integer + description: The workspace id that the notifications belong to. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerNotificationRecipient' + 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 + 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_GROUP_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: '' + delete: + operationId: clear_workspace_notifications + description: Clear all the notifications for the given workspace and user. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace the notifications are in. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_GROUP_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/notifications/{workspace_id}/{notification_id}/: + patch: + operationId: mark_notification_as_read + description: Marks a notification as read. + parameters: + - in: path + name: notification_id + schema: + type: integer + description: The notification id to update. + required: true + - in: path + name: workspace_id + schema: + type: integer + description: The workspace the notification is in. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationRecipient' + 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 + 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_GROUP_DOES_NOT_EXIST + - NOTIFICATION_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/notifications/{workspace_id}/mark-all-as-read/: + post: + operationId: mark_all_workspace_notifications_as_read + description: Mark as read all the notifications for the given workspace and user. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace the notifications are in. + required: true + tags: + - Notifications + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_GROUP_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/role/{group_id}/: + get: + operationId: group_list_role_assignments + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can list the role assignments within a group, optionally filtered down to a specific scope inside of that group. If the scope isn't specified,the group will be considered the scope. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group in which the role assignments are related to. + required: true + - in: query + name: scope_id + schema: + type: integer + description: The id of the scope you are trying to get all roleassignments for. + - in: query + name: scope_type + schema: + type: string + description: The type of scope you are trying to get all roleassignments for. + tags: + - Role assignments + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_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: '' + post: + operationId: group_assign_role + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can assign a role to a subject into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OpenApiRoleAssignment' + description: '' + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/role/{group_id}/batch/: + post: + operationId: group_batch_assign_role + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_batch_assign_role](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + You can assign a role to a multiple subjects into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property. + parameters: + - in: path + name: group_id + schema: + type: integer + description: The group in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + - ERROR_DUPLICATE_ROLE_ASSIGNMENTS + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/role/{workspace_id}/: + get: + operationId: list_role_assignments + description: >- + You can list the role assignments within a workspace, optionally + filtered downto a specific scope inside of that workspace. If the scope + isn't specified,the workspace will be considered the scope. + parameters: + - in: query + name: scope_id + schema: + type: integer + description: The id of the scope you are trying to get all roleassignments for. + - in: query + name: scope_type + schema: + type: string + description: The type of scope you are trying to get all roleassignments for. + - in: path + name: workspace_id + schema: + type: integer + description: The workspace in which the role assignments are related to. + required: true + tags: + - Role assignments + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_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: '' + post: + operationId: assign_role + description: >- + You can assign a role to a subject into the given workspace for the + given scope with this endpoint. If you want to remove the role you can + omit the role property. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateRoleAssignment' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/OpenApiRoleAssignment' + description: '' + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/role/{workspace_id}/batch/: + post: + operationId: batch_assign_role + description: >- + You can assign a role to a multiple subjects into the given workspace + for the given scopes with this endpoint. If you want to remove the role + you can omit the role property. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace in which the role assignment takes place. + required: true + tags: + - Role assignments + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + multipart/form-data: + schema: + $ref: '#/components/schemas/BatchCreateRoleAssignment' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/OpenApiRoleAssignment' + 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_REQUEST_BODY_VALIDATION + - ERROR_DUPLICATE_ROLE_ASSIGNMENTS + - ERROR_CANT_ASSIGN_ROLE_EXCEPTION_TO_ADMIN + 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_SCOPE_DOES_NOT_EXIST + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_OBJECT_SCOPE_TYPE_DOES_NOT_EXIST + - ERROR_SUBJECT_TYPE_DOES_NOT_EXIST + - ERROR_ROLE_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/row_comments/{table_id}/{row_id}/: + get: + operationId: get_row_comments + description: |- + Returns all row comments for the specified table and row. + + This is a **premium** feature. + parameters: + - in: query + name: limit + schema: + type: integer + description: Defines how many rows should be returned. + - in: query + name: offset + schema: + type: integer + description: >- + Can only be used in combination with the `limit` parameter and + defines from which offset the rows should be returned. + - in: query + name: page + schema: + type: integer + description: >- + Defines which page of rows should be returned. Either the `page` or + `limit` can be provided, not both. + - in: path + name: row_id + schema: + type: integer + description: The row to get row comments for. + required: true + - in: query + name: size + schema: + type: integer + description: >- + Can only be used in combination with the `page` parameter and + defines how many rows should be returned. + - in: path + name: table_id + schema: + type: integer + description: The table the row is in. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerRowComment' + 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 + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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: '' + post: + operationId: create_row_comment + description: |- + Creates a comment on the specified row. + + This is a **premium** feature. + parameters: + - in: path + name: row_id + schema: + type: integer + description: The row to create a comment for. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table to find the row to comment on in. + required: true + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RowCommentCreate' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RowCommentCreate' + multipart/form-data: + schema: + $ref: '#/components/schemas/RowCommentCreate' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + 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_INVALID_COMMENT_MENTION + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/row_comments/{table_id}/{row_id}/notification-mode/: + put: + operationId: update_row_comment_notification_mode + description: >- + Updates the user's notification preferences for comments made on a + specified table row. + + + This is a **premium** feature. + parameters: + - in: path + name: row_id + schema: + type: integer + description: The row on which to manage the comment subscription. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table id where the row is in. + required: true + tags: + - Database table rows + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + multipart/form-data: + schema: + $ref: '#/components/schemas/RowCommentsNotificationMode' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '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 + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_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/row_comments/{table_id}/comment/{comment_id}/: + patch: + operationId: update_row_comment + description: |- + Update a row comment. + + This is a **premium** feature. + parameters: + - in: path + name: comment_id + schema: + type: integer + description: The row comment to update. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table the row is in. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + 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_USER_NOT_COMMENT_AUTHOR + - ERROR_INVALID_COMMENT_MENTION + - ERROR_BODY_VALIDATION + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_COMMENT_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: '' + delete: + operationId: delete_row_comment + description: |- + Delete a row comment. + + This is a **premium** feature. + parameters: + - in: path + name: comment_id + schema: + type: integer + description: The row comment to delete. + required: true + - in: path + name: table_id + schema: + type: integer + description: The table the row is in. + required: true + tags: + - Database table rows + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RowComment' + 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_USER_NOT_COMMENT_AUTHOR + 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: '' + '401': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_NO_PERMISSION_TO_TABLE + 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_TABLE_DOES_NOT_EXIST + - ERROR_ROW_COMMENT_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/settings/: + get: + operationId: get_settings + description: Responds with all the admin configured settings. + tags: + - Settings + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Settings' + description: '' + /api/settings/instance-id/: + get: + operationId: get_instance_id + description: >- + Responds with the self hosted instance id. Only a user with staff + permissions can request it. + tags: + - Settings + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/InstanceId' + description: '' + /api/settings/update/: + patch: + operationId: update_settings + description: Updates the admin configured settings if the user has admin permissions. + tags: + - Settings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedSettings' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedSettings' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedSettings' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Settings' + description: '' + /api/snapshots/{snapshot_id}/: + delete: + operationId: delete_snapshot + description: >- + Deletes a snapshot. Deleting a snapshot doesn't affect the application + that the snapshot is made from and doesn't affect any applications that + were created by restoring it. Snapshot deletion is permanent and can't + be undone. + parameters: + - in: path + name: snapshot_id + schema: + type: integer + description: Id of the snapshot to delete. + required: true + tags: + - Snapshots + security: + - JWT: [] + responses: + '204': + description: No response body + '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_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_RESTORED + - ERROR_SNAPSHOT_IS_BEING_DELETED + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + 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_SNAPSHOT_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/snapshots/{snapshot_id}/restore/: + post: + operationId: restore_snapshot + description: >- + Restores a snapshot. When an application snapshot is restored, a new + application will be created in the same workspace that the original + application was placed in with the name of the snapshot and data that + were in the original application at the time the snapshot was taken. The + original application that the snapshot was taken from is unaffected. + Snapshots can be restored multiple times and a number suffix is added to + the new application name in the case of a collision. + parameters: + - in: path + name: snapshot_id + schema: + type: integer + description: Id of the snapshot to restore. + required: true + tags: + - Snapshots + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Job' + 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_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_RESTORED + - ERROR_SNAPSHOT_IS_BEING_DELETED + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + 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_SNAPSHOT_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/snapshots/application/{application_id}/: + get: + operationId: list_snapshots + description: Lists snapshots that were created for a given application. + parameters: + - in: path + name: application_id + schema: + type: integer + description: Application ID for which to list snapshots. + required: true + tags: + - Snapshots + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Snapshot' + 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 + 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_APPLICATION_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: '' + post: + operationId: create_snapshot + description: >- + Creates a new application snapshot. Snapshots represent a state of an + application at a specific point in time and can be restored later, + making it easy to create backups of entire applications. + parameters: + - in: path + name: application_id + schema: + type: integer + description: Application ID for which to list snapshots. + required: true + tags: + - Snapshots + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Snapshot' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Snapshot' + multipart/form-data: + schema: + $ref: '#/components/schemas/Snapshot' + required: true + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/Job' + 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_MAXIMUM_SNAPSHOTS_REACHED + - ERROR_APPLICATION_OPERATION_NOT_SUPPORTED + - ERROR_SNAPSHOT_IS_BEING_CREATED + - ERROR_SNAPSHOT_NAME_NOT_UNIQUE + - ERROR_SNAPSHOT_OPERATION_LIMIT_EXCEEDED + 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_APPLICATION_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/sso/oauth2/callback/{provider_id}/: + get: + operationId: oauth_provider_login_callback + description: >- + Processes callback from OAuth2 provider and logs the user in if + successful. + parameters: + - in: query + name: code + schema: + type: integer + description: The id of the provider for which to process the callback. + - in: path + name: provider_id + schema: + type: integer + description: The id of the provider for which to process the callback. + required: true + tags: + - Auth + responses: + '302': + description: No response body + /api/sso/oauth2/login/{provider_id}/: + get: + operationId: oauth_provider_login_redirect + description: >- + Redirects to the OAuth2 provider's authentication URL based on the + provided auth provider's id. + parameters: + - in: query + name: group_invitation_token + schema: + type: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future. + deprecated: true + - in: query + name: original + schema: + type: integer + description: The relative part of URL that the user wanted to access. + - in: path + name: provider_id + schema: + type: integer + description: The id of the provider for redirect. + required: true + - in: query + name: workspace_invitation_token + schema: + type: string + description: The invitation token sent to the user to join a specific workspace. + tags: + - Auth + responses: + '302': + description: No response body + /api/sso/saml/acs/: + post: + operationId: auth_provider_saml_acs_url + description: >- + Complete the SAML authentication flow by validating the SAML response. + Sign in the user if already exists in Baserow or create a new one + otherwise. Once authenticated, the user will be redirected to the + original URL they were trying to access. If the response is invalid, the + user will be redirected to an error page with a specific error + message.It accepts the language code and the workspace invitation token + as query parameters if provided. + tags: + - Auth + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SAMLResponse' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SAMLResponse' + multipart/form-data: + schema: + $ref: '#/components/schemas/SAMLResponse' + required: true + responses: + '302': + description: No response body + /api/sso/saml/login/: + get: + operationId: auth_provider_saml_sp_login + description: >- + This is the endpoint that is called when the user wants to initiate a + SSO SAML login from Baserow (the service provider). The user will be + redirected to the SAML identity provider (IdP) where the user can + authenticate. Once logged in in the IdP, the user will be redirected + back to the assertion consumer service endpoint (ACS) where the SAML + response will be validated and a new JWT session token will be provided + to work with Baserow APIs. + parameters: + - in: query + name: email + schema: + type: string + description: The email address of the user that want to sign in using SAML. + - in: query + name: group_invitation_token + schema: + type: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future + deprecated: true + - in: query + name: language + schema: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + - in: query + name: original + schema: + type: string + description: >- + The url to which the user should be redirected after a successful + login or sign up. + - in: query + name: workspace_invitation_token + schema: + type: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after login or signing up. + tags: + - Auth + responses: + '302': + description: No response body + /api/sso/saml/login-url/: + get: + operationId: auth_provider_login_url + description: >- + Return the correct redirect_url to initiate the SSO SAML login. It needs + an email address if multiple SAML providers are configured otherwise the + only configured SAML provider signup URL will be returned. + parameters: + - in: query + name: email + schema: + type: string + description: The email address of the user that want to sign in using SAML. + - in: query + name: group_invitation_token + schema: + type: string + description: >- + Please use the functionally identical `workspace_invitation_token` + instead as this querystring is being removed in the future. + deprecated: true + - in: query + name: language + schema: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + - in: query + name: original + schema: + type: string + description: >- + The url to which the user should be redirected after a successful + login. + - in: query + name: workspace_invitation_token + schema: + type: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after login or signing up. + tags: + - Auth + responses: + '200': + content: + application/json: + schema: + type: object + additionalProperties: {} + description: Unspecified response body + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_SAML_INVALID_LOGIN_REQUEST + 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/teams/{team_id}/: + get: + operationId: get_team + description: Returns the information related to the provided team id. + parameters: + - in: path + name: team_id + schema: + type: integer + description: Returns the team related to the provided value. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TEAM_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: '' + put: + operationId: update_team + description: Updates an existing team with a new name. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + 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_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_BAD_REQUEST" + 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_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_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: '' + delete: + operationId: delete_team + description: >- + Deletes a team if the authorized user is in the team's workspace. All + the related children (e.g. subjects) are also going to be deleted. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: team_id + schema: + type: integer + description: Deletes the team related to the provided value. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '204': + description: No response body + '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_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TEAM_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/teams/{team_id}/subjects/: + get: + operationId: list_team_subjects + description: Lists all team subjects in a given team. + parameters: + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TeamSubjectResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TEAM_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: '' + post: + operationId: create_subject + description: Creates a new team subject. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubject' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TeamSubject' + multipart/form-data: + schema: + $ref: '#/components/schemas/TeamSubject' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubjectResponse' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + - ERROR_SUBJECT_BAD_REQUEST + 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_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_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/teams/{team_id}/subjects/{subject_id}/: + get: + operationId: get_subject + description: Returns the information related to the provided subject id + parameters: + - in: path + name: subject_id + schema: + type: integer + description: Returns the subject related to the provided value. + required: true + - in: path + name: team_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamSubjectResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_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: '' + delete: + operationId: delete_subject + description: Deletes a subject if the authorized user is in the team's workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: subject_id + schema: + type: integer + description: The subject id to remove from the team. + required: true + - in: path + name: team_id + schema: + type: integer + description: The team id which the subject will be removed from. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_TEAM_DOES_NOT_EXIST + - ERROR_SUBJECT_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/teams/group/{group_id}/: + get: + operationId: group_list_teams + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_list_teams](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Lists all teams in a given group. + parameters: + - in: path + name: group_id + schema: + type: integer + description: Lists all teams in a given group. + required: true + - in: query + name: search + schema: + type: string + description: Search for teams by their name. + - in: query + name: sorts + schema: + type: string + description: Sort teams by name or subjects. + tags: + - Teams + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TeamResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_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: '' + post: + operationId: group_create_team + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_create_team](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Creates a new team in a given group. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: group_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + 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_SUBJECT_BAD_REQUEST + - ERROR_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + 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_GROUP_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_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/teams/workspace/{workspace_id}/: + get: + operationId: workspace_list_teams + description: Lists all teams in a given workspace. + parameters: + - in: query + name: search + schema: + type: string + description: Search for teams by their name. + - in: query + name: sorts + schema: + type: string + description: Sort teams by name or subjects. + - in: path + name: workspace_id + schema: + type: integer + description: Lists all teams in a given workspace. + required: true + tags: + - Teams + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TeamResponse' + description: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_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: '' + post: + operationId: workspace_create_team + description: Creates a new team. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: workspace_id + schema: + type: string + pattern: ^[0-9]+$ + required: true + tags: + - Teams + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Team' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Team' + multipart/form-data: + schema: + $ref: '#/components/schemas/Team' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamResponse' + 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_SUBJECT_BAD_REQUEST + - ERROR_TEAM_NAME_NOT_UNIQUE + - ERROR_SUBJECT_NOT_IN_GROUP + - ERROR_SUBJECT_TYPE_UNSUPPORTED + 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_GROUP_DOES_NOT_EXIST + - ERROR_SUBJECT_DOES_NOT_EXIST + - ERROR_ROLE_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/templates/: + get: + operationId: list_templates + description: >- + Lists all the template categories and the related templates that are in + that category. The template's `workspace_id` can be used for previewing + purposes because that workspace contains the applications that are in + the template. All the `get` and `list` endpoints related to that + workspace are publicly accessible. + tags: + - Templates + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TemplateCategories' + description: '' + /api/templates/install/{group_id}/{template_id}/: + post: + operationId: group_install_template + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_install_template](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Installs the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: >- + The id related to the group where the template applications must be + installed into. + required: true + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + tags: + - Templates + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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_TEMPLATE_FILE_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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/templates/install/{group_id}/{template_id}/async/: + post: + operationId: group_install_template_async + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_install_template_async](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Start an async job to install the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: group_id + schema: + type: integer + description: >- + The id related to the group where the template applications must be + installed into. + required: true + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + tags: + - Templates + security: + - JWT: [] + deprecated: true + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleInstallTemplateJobType' + 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_TEMPLATE_FILE_DOES_NOT_EXIST + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/templates/install/{workspace_id}/{template_id}/: + post: + operationId: install_template + description: >- + (Deprecated) Installs the applications of the given template into the + given workspace if the user has access to that workspace. The response + contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + - in: path + name: workspace_id + schema: + type: integer + description: >- + The id related to the workspace where the template applications must + be installed into. + required: true + tags: + - Templates + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationApplication' + 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_TEMPLATE_FILE_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: '' + '404': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/templates/install/{workspace_id}/{template_id}/async/: + post: + operationId: install_template_async + description: >- + Start an async job to install the applications of the given template + into the given workspace if the user has access to that workspace. The + response contains those newly created applications. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: template_id + schema: + type: integer + description: The id related to the template that must be installed. + required: true + - in: path + name: workspace_id + schema: + type: integer + description: >- + The id related to the workspace where the template applications must + be installed into. + required: true + tags: + - Templates + security: + - JWT: [] + responses: + '202': + content: + application/json: + schema: + $ref: '#/components/schemas/SingleInstallTemplateJobType' + 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_TEMPLATE_FILE_DOES_NOT_EXIST + - ERROR_MAX_JOB_COUNT_EXCEEDED + 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_GROUP_DOES_NOT_EXIST + - ERROR_TEMPLATE_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/trash/: + get: + operationId: get_trash_structure + description: >- + Responds with the workspaces and applications available for the + requesting user to inspect the trash contents of. + tags: + - Trash + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TrashStructure' + description: '' + /api/trash/group/{group_id}/: + get: + operationId: group_get_contents + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_get_contents](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Responds with trash contents for a group optionally filtered to a specific application. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to only items for this application + in the group. + - in: path + name: group_id + schema: + type: integer + description: Returns the trash for the group with this id. + required: true + - in: query + name: page + schema: + type: integer + description: Selects which page of trash contents should be returned. + tags: + - Trash + security: + - JWT: [] + deprecated: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerTrashContents' + 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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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: '' + delete: + operationId: group_empty_contents + description: >- + **This endpoint has been deprecated and replaced with a new endpoint, + [workspace_empty_contents](https://api.baserow.io).** + + + **Support for this endpoint will end in 2024.** + + Empties the specified group and/or application of trash, including the group and application themselves if they are trashed also. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to delete to only items for this + application in the group. + - in: path + name: group_id + schema: + type: integer + description: >- + The group whose trash contents to empty, including the group itself + if it is also trashed. + required: true + tags: + - Trash + security: + - JWT: [] + deprecated: true + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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/trash/restore/: + patch: + operationId: restore + description: Restores the specified trashed item back into baserow. + tags: + - Trash + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedTrashEntryRequest' + security: + - JWT: [] + responses: + '204': + description: No response body + '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_TRASH_ITEM_DOES_NOT_EXIST + - ERROR_CANNOT_RESTORE_PARENT_BEFORE_CHILD + - ERROR_PARENT_ID_MUST_NOT_BE_PROVIDED + - ERROR_PARENT_ID_MUST_BE_PROVIDED + - ERROR_CANT_RESTORE_AS_RELATED_TABLE_TRASHED + - ERROR_CANNOT_RESTORE_ITEM_NOT_OWNED_BY_USER + 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/trash/workspace/{workspace_id}/: + get: + operationId: workspace_get_contents + description: >- + Responds with trash contents for a workspace optionally filtered to a + specific application. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to only items for this application + in the workspace. + - in: query + name: page + schema: + type: integer + description: Selects which page of trash contents should be returned. + - in: path + name: workspace_id + schema: + type: integer + description: Returns the trash for the workspace with this id. + required: true + tags: + - Trash + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginationSerializerTrashContents' + 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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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: '' + delete: + operationId: workspace_empty_contents + description: >- + Empties the specified workspace and/or application of trash, including + the workspace and application themselves if they are trashed also. + parameters: + - in: query + name: application_id + schema: + type: integer + description: >- + Optionally filters down the trash to delete to only items for this + application in the workspace. + - in: path + name: workspace_id + schema: + type: integer + description: >- + The workspace whose trash contents to empty, including the workspace + itself if it is also trashed. + required: true + tags: + - Trash + security: + - JWT: [] + responses: + '204': + description: No response body + '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_APPLICATION_NOT_IN_GROUP + - ERROR_GROUP_DOES_NOT_EXIST + - ERROR_APPLICATION_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/user/: + post: + operationId: create_user + description: >- + Creates a new user based on the provided values. If desired an + authentication JWT can be generated right away. After creating an + account the initial workspace containing a database is created. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Register' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Register' + multipart/form-data: + schema: + $ref: '#/components/schemas/Register' + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_ALREADY_EXISTS + - ERROR_GROUP_INVITATION_DOES_NOT_EXIST + - ERROR_REQUEST_BODY_VALIDATION + - BAD_TOKEN_SIGNATURE + 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_GROUP_INVITATION_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/user-files/upload-file/: + post: + operationId: upload_file + description: >- + Uploads a file to Baserow by uploading the file contents directly. A + `file` multipart is expected containing the file contents. + tags: + - User files + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + 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/user-files/upload-via-url/: + post: + operationId: upload_via_url + description: Uploads a file to Baserow by downloading it from the provided URL. + tags: + - User files + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/UserFileUploadViaURLRequest' + required: true + security: + - JWT: [] + - Database token: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserFile' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_FILE + - ERROR_FILE_SIZE_TOO_LARGE + - ERROR_FILE_URL_COULD_NOT_BE_REACHED + - ERROR_INVALID_FILE_URL + 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/user-source-auth-refresh/: + post: + operationId: user_source_token_refresh + description: >- + Generate a new access_token that can be used to continue operating on + Baserow with a user source user starting from a valid refresh token. + tags: + - User sources + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + description: '' + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user-source-token-blacklist/: + post: + operationId: user_source_token_blacklist + description: >- + Blacklists the provided user source token. This can be used the sign the + user off. + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenBlacklist' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenBlacklist' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenBlacklist' + required: true + responses: + '204': + description: No response body + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user-source/{user_source_id}/: + patch: + operationId: update_application_user_source + description: Updates an existing user_source. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUser_SourceUpdateUserSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_USER_SOURCE_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: '' + delete: + operationId: delete_application_user_source + description: Deletes the user_source related by the given id. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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_USER_SOURCE_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/user-source/{user_source_id}/force-token-auth: + post: + operationId: user_source_force_token_auth + description: >- + Force authenticates an existing user based on their ID. If successful, + an access token and a refresh token will be returned. + parameters: + - in: path + name: user_source_id + schema: + type: integer + description: The user source to use to authenticate the user. + required: true + tags: + - User sources + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: object + properties: + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '401': + content: + application/json: + schema: + description: An active user with the provided ID could not be found. + description: '' + /api/user-source/{user_source_id}/move/: + patch: + operationId: move_application_user_source + description: >- + Moves the user_source in the application before another user_source or + at the end of the application if no before user_source is given. The + user_sources must belong to the same application. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source to move + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedMoveUserSource' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/User_SourceUserSource' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_USER_SOURCE_NOT_IN_SAME_APPLICATION + 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_USER_SOURCE_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/user-source/{user_source_id}/token-auth: + post: + operationId: user_source_token_auth + description: >- + Authenticates an existing user against a user source based on their + credentials. If successful, an access token and a refresh token will be + returned. + parameters: + - in: path + name: user_source_id + schema: + type: integer + description: The id of the user_source to move + required: true + tags: + - User sources + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenObtainPair' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenObtainPair' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenObtainPair' + required: true + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: object + properties: + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '401': + content: + application/json: + schema: + description: >- + An active user with the provided email and password could not + be found. + description: '' + /api/user/account/: + patch: + operationId: update_account + description: Updates the account information of the authenticated user. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedAccount' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedAccount' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedAccount' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Account' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/user/change-password/: + post: + operationId: change_password + description: >- + Changes the password of an authenticated user, but only if the old + password matches. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/ChangePasswordBodyValidation' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_INVALID_OLD_PASSWORD + - ERROR_REQUEST_BODY_VALIDATION + 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/user/dashboard/: + get: + operationId: dashboard + description: >- + Lists all the relevant user information that for example could be shown + on a dashboard. It will contain all the pending workspace invitations + for that user. + tags: + - User + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Dashboard' + description: '' + /api/user/redo/: + patch: + operationId: redo + description: >- + Redoes the latest redoable action performed by the user making the + request. a ClientSessionId header must be provided and only actions + which were performed the same user with the same ClientSessionId value + set on the api request that performed the action will be + redone.Additionally the ClientSessionId header must be between 1 and 256 + characters long and must only contain alphanumeric or the - characters. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + The particular client session to redo actions for. The actions must + have been performed with this same header set with the same value + for them to be redoable by this endpoint. + required: true + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UndoRedoResponse' + description: '' + /api/user/reset-password/: + post: + operationId: reset_password + description: >- + Changes the password of a user if the reset token is valid. The + **send_password_reset_email** endpoint sends an email to the user + containing the token. That token can be used to change the password here + without providing the old password. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/ResetPasswordBodyValidation' + required: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - BAD_TOKEN_SIGNATURE + - EXPIRED_TOKEN_SIGNATURE + - ERROR_USER_NOT_FOUND + - ERROR_REQUEST_BODY_VALIDATION + 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/user/schedule-account-deletion/: + post: + operationId: schedule_account_deletion + description: >- + Schedules the account deletion of the authenticated user. The user will + be permanently deleted after the grace delay defined by the instance + administrator. + tags: + - User + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + 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/user/send-reset-password-email/: + post: + operationId: send_password_reset_email + description: >- + Sends an email containing the password reset link to the email address + of the user. This will only be done if a user is found with the given + email address. The endpoint will not fail if the email address is not + found. The link is going to the valid for 48 hours. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + multipart/form-data: + schema: + $ref: '#/components/schemas/SendResetPasswordEmailBodyValidation' + required: true + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_REQUEST_BODY_VALIDATION + - ERROR_HOSTNAME_IS_NOT_ALLOWED + 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/user/token-auth/: + post: + operationId: token_auth + description: >- + Authenticates an existing user based on their email and their password. + If successful, an access token and a refresh token will be returned. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenObtainPairWithUser' + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + refresh_token: + type: string + description: >- + 'refresh_token' can be used to get a new valid + 'access_token'. This token will be valid for 168 hours. + description: '' + '401': + content: + application/json: + schema: + description: >- + An active user with the provided email and password could not + be found. + description: '' + /api/user/token-blacklist/: + post: + operationId: token_blacklist + description: Blacklists the provided token. This can be used the sign the user off. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenBlacklist' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenBlacklist' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenBlacklist' + required: true + responses: + '204': + description: No response body + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user/token-refresh/: + post: + operationId: token_refresh + description: >- + Generate a new access_token that can be used to continue operating on + Baserow starting from a valid refresh token. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenRefreshWithUser' + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + token: + type: string + deprecated: true + description: Deprecated. Use the `access_token` instead. + access_token: + type: string + description: >- + 'access_token' can be used to authorize for other + endpoints that require authorization. This token will be + valid for 10 minutes. + description: '' + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user/token-verify/: + post: + operationId: token_verify + description: >- + Verifies if the refresh token is valid and can be used to generate a new + access_token. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/TokenVerifyWithUser' + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + user: + type: object + description: An object containing information related to the user. + properties: + first_name: + type: string + description: The first name of related user. + username: + type: string + format: email + description: >- + The username of the related user. This is always an + email address. + language: + type: string + description: >- + An ISO 639 language code (with optional variant) + selected by the user. Ex: en-GB. + description: '' + '401': + content: + application/json: + schema: + description: The JWT refresh token is invalid or expired. + description: '' + /api/user/undo/: + patch: + operationId: undo + description: >- + undoes the latest undoable action performed by the user making the + request. a ClientSessionId header must be provided and only actions + which were performed the same user with the same ClientSessionId value + set on the api request that performed the action will be + undone.Additionally the ClientSessionId header must be between 1 and 256 + characters long and must only contain alphanumeric or the - characters. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + The particular client session to undo actions for. The actions must + have been performed with this same header set with the same value + for them to be undoable by this endpoint. + required: true + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUndoRedoRequest' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UndoRedoResponse' + description: '' + /api/workspaces/: + get: + operationId: list_workspaces + description: >- + Lists all the workspaces of the authorized user. A workspace can contain + multiple applications like a database. Multiple users can have access to + a workspace. For example each company could have their own workspace + containing databases related to that company. The order of the + workspaces are custom for each user. The order is configurable via the + **order_workspaces** endpoint. + tags: + - Workspaces + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + post: + operationId: create_workspace + description: >- + Creates a new workspace where only the authorized user has access to. No + initial data like database applications are added, they have to be + created via other endpoints. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/Workspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/Workspace' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + /api/workspaces/{workspace_id}/: + patch: + operationId: update_workspace + description: >- + Updates the existing workspace related to the provided `workspace_id` + parameter if the authorized user belongs to the workspace. It is not yet + possible to add additional users to a workspace. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: Updates the workspace related to the provided value. + required: true + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedWorkspace' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Workspace' + 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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + delete: + operationId: delete_workspace + description: >- + Deletes an existing workspace if the authorized user belongs to the + workspace. All the applications, databases, tables etc that were in the + workspace are going to be deleted also. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + - in: path + name: workspace_id + schema: + type: integer + description: Deletes the workspace related to the provided value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '204': + description: No response body + '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_REQUEST_BODY_VALIDATION + - ERROR_USER_INVALID_GROUP_PERMISSIONS + - ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM + 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_GROUP_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/workspaces/{workspace_id}/leave/: + post: + operationId: leave_workspace + description: >- + Makes the authenticated user leave the workspace related to the provided + `workspace_id` if the user is in that workspace. If the user is the last + admin in the workspace, they will not be able to leave it. There must + always be one admin in the workspace, otherwise it will be left without + control. If that is the case, they must either delete the workspace or + give another member admin permissions first. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: Leaves the workspace related to the value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '204': + description: No response body + '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_GROUP_USER_IS_LAST_ADMIN + 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_GROUP_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/workspaces/{workspace_id}/permissions/: + get: + operationId: workspace_permissions + description: >- + Returns a the permission data necessary to determine the permissions of + a specific user over a specific workspace. + + See `core.handler.CoreHandler.get_permissions()` for more details. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: The workspace id we want the permission object for. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PermissionObject' + description: '' + '404': + 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_GROUP_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/workspaces/invitations/{workspace_invitation_id}/: + get: + operationId: get_workspace_invitation + description: >- + Returns the requested workspace invitation if the authorized user has + admin right to the related workspace + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Returns the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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: '' + patch: + operationId: update_workspace_invitation + description: >- + Updates the existing workspace invitation related to the provided + `workspace_invitation_id` param if the authorized user has admin rights + to the related workspace. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Updates the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceInvitation' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_INVITATION_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: '' + delete: + operationId: delete_workspace_invitation + description: >- + Deletes a workspace invitation if the authorized user has admin rights + to the related workspace. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Deletes the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/workspaces/invitations/{workspace_invitation_id}/accept/: + post: + operationId: accept_workspace_invitation + description: >- + Accepts a workspace invitation with the given id if the email address of + the user matches that of the invitation. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Accepts the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUserWorkspace' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/workspaces/invitations/{workspace_invitation_id}/reject/: + post: + operationId: reject_workspace_invitation + description: >- + Rejects a workspace invitation with the given id if the email address of + the user matches that of the invitation. + parameters: + - in: path + name: workspace_invitation_id + schema: + type: integer + description: Rejects the workspace invitation related to the provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - ERROR_GROUP_INVITATION_EMAIL_MISMATCH + 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_GROUP_INVITATION_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/workspaces/invitations/token/{token}/: + get: + operationId: get_workspace_invitation_by_token + description: >- + Responds with the serialized workspace invitation if an invitation with + the provided token is found. + parameters: + - in: path + name: token + schema: + type: string + description: Returns the workspace invitation related to the provided token. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserWorkspaceInvitation' + description: '' + '400': + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Machine readable error indicating what went wrong. + enum: + - BAD_TOKEN_SIGNATURE + 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_GROUP_INVITATION_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/workspaces/invitations/workspace/{workspace_id}/: + get: + operationId: list_workspace_invitations + description: >- + Lists all the workspace invitations of the workspace related to the + provided `workspace_id` parameter if the authorized user has admin + rights to that workspace. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: >- + Returns only invitations that are in the workspace related to the + provided value. + required: true + tags: + - Workspace invitations + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_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: '' + post: + operationId: create_workspace_invitation + description: >- + Creates a new workspace invitations for an email address if the + authorized user has admin rights to the related workspace. An email + containing a sign up link will be send to the user. + parameters: + - in: path + name: workspace_id + schema: + type: integer + description: >- + Creates a workspace invitation to the workspace related to the + provided value. + required: true + tags: + - Workspace invitations + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + multipart/form-data: + schema: + $ref: '#/components/schemas/CreateWorkspaceInvitation' + required: true + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceInvitation' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_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/workspaces/order/: + post: + operationId: order_workspaces + description: >- + Changes the order of the provided workspace ids to the matching position + that the id has in the list. If the authorized user does not belong to + the workspace it will be ignored. The order will be custom for each + user. + parameters: + - in: header + name: ClientSessionId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular client session. Then using the + undo/redo endpoints with the same ClientSessionId header this action + can be undone/redone. + - in: header + name: ClientUndoRedoActionGroupId + schema: + type: string + format: uuid + description: >- + An optional header that marks the action performed by this request + as having occurred in a particular action group.Then calling the + undo/redo endpoint with the same ClientSessionId header, all the + actions belonging to the same action group can be undone/redone + together in a single API call. + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + multipart/form-data: + schema: + $ref: '#/components/schemas/OrderWorkspaces' + required: true + security: + - JWT: [] + responses: + '204': + description: No response body + /api/workspaces/users/{workspace_user_id}/: + patch: + operationId: update_workspace_user + description: >- + Updates the existing workspace user related to the provided + `workspace_user_id` param if the authorized user has admin rights to the + related workspace. + parameters: + - in: path + name: workspace_user_id + schema: + type: integer + description: Updates the workspace user related to the provided value. + required: true + tags: + - Workspaces + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + multipart/form-data: + schema: + $ref: '#/components/schemas/PatchedUpdateWorkspaceUser' + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WorkspaceUser' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_REQUEST_BODY_VALIDATION + 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_GROUP_USER_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: '' + delete: + operationId: delete_workspace_user + description: >- + Deletes a workspace user if the authorized user has admin rights to the + related workspace. + parameters: + - in: path + name: workspace_user_id + schema: + type: integer + description: Deletes the workspace user related to the provided value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '204': + description: No response body + '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_USER_INVALID_GROUP_PERMISSIONS + 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_GROUP_INVITATION_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/workspaces/users/workspace/{workspace_id}/: + get: + operationId: list_workspace_users + description: >- + Lists all the users that are in a workspace if the authorized user has + admin permissions to the related workspace. To add a user to a workspace + an invitation must be sent first. + parameters: + - in: query + name: search + schema: + type: string + description: Search for workspace users by username, or email. + - in: query + name: sorts + schema: + type: string + description: Sort workspace users by name, email or role. + - in: path + name: workspace_id + schema: + type: integer + description: Lists workspace users related to the provided workspace value. + required: true + tags: + - Workspaces + security: + - JWT: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ListWorkspaceUsersWithMemberData' + 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_USER_INVALID_GROUP_PERMISSIONS + - ERROR_INVALID_SORT_DIRECTION + - ERROR_INVALID_SORT_ATTRIBUTE + 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_GROUP_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: + Account: + type: object + description: This serializer must be kept in sync with `UserSerializer`. + properties: + first_name: + type: string + maxLength: 150 + minLength: 2 + language: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + maxLength: 10 + minLength: 2 + email_notification_frequency: + allOf: + - $ref: '#/components/schemas/EmailNotificationFrequencyEnum' + description: >- + The maximum frequency at which the user wants to receive email + notifications. + + + * `instant` - instant + + * `daily` - daily + + * `weekly` - weekly + + * `never` - never + ActionScopes: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + root: + type: boolean + nullable: true + description: >- + If set to true then actions registered in the root scope will be + included when undoing or redoing. + workspace: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a workspaces id then any actions directly related to that + workspace will be be included when undoing or redoing. + group: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a workspaces id then any actions directly related to that + workspace will be be included when undoing or redoing. + application: + type: integer + minimum: 0 + nullable: true + description: >- + If set to an applications id then any actions directly related to + that application will be be included when undoing or redoing. + table: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a table id then any actions directly related to that table + will be be included when undoing or redoing. + view: + type: integer + minimum: 0 + nullable: true + description: >- + If set to an view id then any actions directly related to that view + will be be included when undoing or redoing. + teams_in_workspace: + type: integer + minimum: 0 + nullable: true + description: >- + If set to a workspace id then any actions directly related to that + workspace will be be included when undoing or redoing. + AdminDashboard: + type: object + properties: + total_users: + type: integer + total_groups: + type: integer + total_workspaces: + type: integer + total_applications: + type: integer + new_users_last_24_hours: + type: integer + new_users_last_7_days: + type: integer + new_users_last_30_days: + type: integer + previous_new_users_last_24_hours: + type: integer + previous_new_users_last_7_days: + type: integer + previous_new_users_last_30_days: + type: integer + active_users_last_24_hours: + type: integer + active_users_last_7_days: + type: integer + active_users_last_30_days: + type: integer + previous_active_users_last_24_hours: + type: integer + previous_active_users_last_7_days: + type: integer + previous_active_users_last_30_days: + type: integer + new_users_per_day: + type: array + items: + $ref: '#/components/schemas/AdminDashboardPerDay' + active_users_per_day: + type: array + items: + $ref: '#/components/schemas/AdminDashboardPerDay' + required: + - active_users_last_24_hours + - active_users_last_30_days + - active_users_last_7_days + - active_users_per_day + - new_users_last_24_hours + - new_users_last_30_days + - new_users_last_7_days + - new_users_per_day + - previous_active_users_last_24_hours + - previous_active_users_last_30_days + - previous_active_users_last_7_days + - previous_new_users_last_24_hours + - previous_new_users_last_30_days + - previous_new_users_last_7_days + - total_applications + - total_groups + - total_users + - total_workspaces + AdminDashboardPerDay: + type: object + properties: + date: + type: string + format: date + count: + type: integer + required: + - count + - date + AggregationRawTypeEnum: + enum: + - empty_count + - not_empty_count + - unique_count + - min + - max + - sum + - average + - median + - decile + - variance + - std_dev + type: string + description: |- + * `empty_count` - empty_count + * `not_empty_count` - not_empty_count + * `unique_count` - unique_count + * `min` - min + * `max` - max + * `sum` - sum + * `average` - average + * `median` - median + * `decile` - decile + * `variance` - variance + * `std_dev` - std_dev + AirtableImportJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + group_id: + type: integer + description: The group ID where the Airtable base must be imported into. + workspace_id: + type: integer + description: The workspace ID where the Airtable base must be imported into. + airtable_share_url: + type: string + format: uri + description: >- + The publicly shared URL of the Airtable base (e.g. + https://airtable.com/shrxxxxxxxxxxxxxx) + required: + - airtable_share_url + - type + AirtableImportJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + group_id: + type: integer + description: The group ID where the Airtable base must be imported into. + workspace_id: + type: integer + description: The workspace ID where the Airtable base must be imported into. + database: + $ref: '#/components/schemas/Application' + airtable_share_id: + type: string + format: uri + description: Public ID of the shared Airtable base that must be imported. + maxLength: 200 + required: + - airtable_share_id + - database + - group_id + - id + - progress_percentage + - state + - type + - workspace_id + Alignment0e8Enum: + enum: + - top + - center + - bottom + type: string + description: |- + * `top` - Top + * `center` - Center + * `bottom` - Bottom + Alignment675Enum: + enum: + - left + - center + - right + type: string + description: |- + * `left` - Left + * `center` - Center + * `right` - Right + App_Auth_ProviderAppAuthProvider: + oneOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderAppAuthProvider + discriminator: + propertyName: type + mapping: + local_baserow_password: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderAppAuthProvider + App_Auth_ProviderBaseAppAuthProvider: + oneOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider + discriminator: + propertyName: type + mapping: + local_baserow_password: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider + Application: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + description: The workspace that the application belongs to. + required: + - group + - id + - name + - order + - type + - workspace + ApplicationApplication: + oneOf: + - $ref: '#/components/schemas/DatabaseApplication' + - $ref: '#/components/schemas/BuilderApplication' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseApplication' + builder: '#/components/schemas/BuilderApplication' + ApplicationBaseApplicationCreatePolymorphic: + oneOf: + - $ref: '#/components/schemas/DatabaseBaseApplicationCreatePolymorphic' + - $ref: '#/components/schemas/BuilderBaseApplicationCreatePolymorphic' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseBaseApplicationCreatePolymorphic' + builder: '#/components/schemas/BuilderBaseApplicationCreatePolymorphic' + ArrayFormulaTypeEnum: + enum: + - invalid + - text + - char + - button + - link + - date_interval + - duration + - date + - boolean + - number + - single_select + - multiple_select + - single_file + type: string + description: |- + * `invalid` - invalid + * `text` - text + * `char` - char + * `button` - button + * `link` - link + * `date_interval` - date_interval + * `duration` - duration + * `date` - date + * `boolean` - boolean + * `number` - number + * `single_select` - single_select + * `multiple_select` - multiple_select + * `single_file` - single_file + AuditLog: + type: object + properties: + id: + type: integer + readOnly: true + action_type: + type: string + readOnly: true + user: + type: string + readOnly: true + group: + type: string + readOnly: true + workspace: + type: string + readOnly: true + type: + type: string + readOnly: true + description: + type: string + readOnly: true + timestamp: + type: string + format: date-time + ip_address: + type: string + readOnly: true + nullable: true + required: + - action_type + - description + - group + - id + - ip_address + - timestamp + - type + - user + - workspace + AuditLogActionType: + type: object + properties: + id: + $ref: '#/components/schemas/IdEnum' + value: + type: string + description: |- + Given the *incoming* primitive data, return the value for this field + that should be validated and transformed to a native value. + readOnly: true + required: + - id + - value + AuditLogExportJobCreateJob: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + url: + type: string + format: uri + readOnly: true + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + required: + - type + - url + AuditLogExportJobJob: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + created_on: + type: string + format: date-time + readOnly: true + description: The date and time when the export job was created. + exported_file_name: + type: string + readOnly: true + description: The name of the file that was created by the export job. + url: + type: string + format: uri + readOnly: true + description: The URL to download the exported file. + required: + - created_on + - exported_file_name + - id + - progress_percentage + - state + - type + - url + AuditLogUser: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + required: + - id + - value + AuditLogWorkspace: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + required: + - id + - value + AuthFormElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + required: + - order + - type + AuthFormElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + required: + - id + - order + - page_id + - parent_element_id + - type + AuthFormElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + required: + - id + - order + - parent_element_id + - type + AuthFormElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + user_source_id: + type: integer + nullable: true + description: Display the auth form for the selected user source + Authentication_ProviderAuthProvider: + oneOf: + - $ref: '#/components/schemas/PasswordAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/SamlAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GoogleAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/FacebookAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GitHubAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/GitLabAuthProviderModelAuthProvider' + - $ref: '#/components/schemas/OpenIdConnectAuthProviderModelAuthProvider' + discriminator: + propertyName: type + mapping: + password: '#/components/schemas/PasswordAuthProviderModelAuthProvider' + saml: '#/components/schemas/SamlAuthProviderModelAuthProvider' + google: '#/components/schemas/GoogleAuthProviderModelAuthProvider' + facebook: '#/components/schemas/FacebookAuthProviderModelAuthProvider' + github: '#/components/schemas/GitHubAuthProviderModelAuthProvider' + gitlab: '#/components/schemas/GitLabAuthProviderModelAuthProvider' + openid_connect: '#/components/schemas/OpenIdConnectAuthProviderModelAuthProvider' + AutonumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + view_id: + type: integer + nullable: true + description: The id of the view to use for the initial ordering. + required: + - name + - type + AutonumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + AutonumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + AutonumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + view_id: + type: integer + nullable: true + description: The id of the view to use for the initial ordering. + BaseExporterOptions: + type: object + properties: + view_id: + type: integer + minimum: 0 + nullable: true + description: >- + Optional: The view for this table to export using its filters, sorts + and other view specific settings. + exporter_type: + allOf: + - $ref: '#/components/schemas/ExporterTypeEnum' + description: |- + The file type to export to. + + * `csv` - csv + * `json` - json + * `xml` - xml + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + required: + - exporter_type + BaserowImpersonateAuthToken: + type: object + description: Serializer used for impersonation. + properties: + user: + type: integer + required: + - user + BatchCreateRoleAssignment: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/CreateRoleAssignment' + required: + - items + BatchDeleteRows: + type: object + properties: + items: + type: array + items: + type: integer + maxItems: 200 + minItems: 1 + required: + - items + BlankEnum: + enum: + - '' + BooleanFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + BooleanFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + BooleanFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + BooleanFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + BuilderApplication: + type: object + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + description: The workspace that the application belongs to. + pages: + type: array + items: + $ref: '#/components/schemas/Page' + readOnly: true + description: >- + This field is specific to the `builder` application and contains an + array of pages that are in the builder. + theme: + allOf: + - $ref: '#/components/schemas/CombinedThemeConfigBlocks' + readOnly: true + description: >- + This field is specific to the `builder` application and contains the + theme settings. + required: + - group + - id + - name + - order + - pages + - theme + - type + - workspace + BuilderBaseApplicationCreatePolymorphic: + type: object + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + properties: + name: + type: string + maxLength: 160 + type: + $ref: '#/components/schemas/TypeF4fEnum' + init_with_data: + type: boolean + default: false + required: + - name + - type + BuilderBaseApplicationUpdatePolymorphic: + type: object + description: |- + The builder serializer. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicBuilderSerializer + when you update this one. + properties: + name: + type: string + maxLength: 160 + required: + - name + BuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + required: + - element_id + - event + - id + - order + - type + Builder_Workflow_Action_TypeBuilderWorkflowAction: + oneOf: + - $ref: '#/components/schemas/NotificationWorkflowActionBuilderWorkflowAction' + - $ref: '#/components/schemas/OpenPageWorkflowActionBuilderWorkflowAction' + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction + - $ref: '#/components/schemas/LogoutWorkflowActionBuilderWorkflowAction' + discriminator: + propertyName: type + mapping: + notification: '#/components/schemas/NotificationWorkflowActionBuilderWorkflowAction' + open_page: '#/components/schemas/OpenPageWorkflowActionBuilderWorkflowAction' + create_row: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction + update_row: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction + logout: '#/components/schemas/LogoutWorkflowActionBuilderWorkflowAction' + Builder_Workflow_Action_TypeCreateBuilderWorkflowAction: + oneOf: + - $ref: >- + #/components/schemas/NotificationWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/OpenPageWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction + - $ref: '#/components/schemas/LogoutWorkflowActionCreateBuilderWorkflowAction' + discriminator: + propertyName: type + mapping: + notification: >- + #/components/schemas/NotificationWorkflowActionCreateBuilderWorkflowAction + open_page: >- + #/components/schemas/OpenPageWorkflowActionCreateBuilderWorkflowAction + create_row: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction + update_row: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction + logout: '#/components/schemas/LogoutWorkflowActionCreateBuilderWorkflowAction' + ButtonElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + ButtonElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + ButtonElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + ButtonElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The caption of the button. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + width: + $ref: '#/components/schemas/WidthEnum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + CalendarViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + date_field: + type: integer + nullable: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + 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 + 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. + CalendarViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + date_field: + type: integer + nullable: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + ChangePasswordBodyValidation: + type: object + properties: + old_password: + type: string + new_password: + type: string + required: + - new_password + - old_password + CheckboxElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + required: + - order + - type + CheckboxElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + required: + - id + - order + - page_id + - parent_element_id + - type + CheckboxElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + required: + - id + - order + - parent_element_id + - type + CheckboxElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: The input's default value. + required: + type: boolean + default: false + description: Whether this input is a required field. + Collaborator: + type: object + properties: + id: + type: integer + name: + type: string + readOnly: true + required: + - id + - name + CollectionField: + type: object + description: >- + This serializer transform the flat properties object from/to a config + dict property. + + This allows us to see the field on the frontend side as a simple + polymorphic + + object. + properties: + id: + type: integer + readOnly: true + name: + type: string + description: The name of the field. + maxLength: 225 + type: + type: string + description: The type of the field. + maxLength: 225 + required: + - id + - name + - type + ColumnElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - order + - type + ColumnElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - id + - order + - page_id + - parent_element_id + - type + ColumnElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + required: + - id + - order + - parent_element_id + - type + ColumnElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + column_amount: + type: integer + maximum: 6 + minimum: 1 + description: The amount of columns inside this column element. + column_gap: + type: integer + maximum: 2000 + minimum: 0 + description: The amount of space between the columns. + alignment: + $ref: '#/components/schemas/Alignment0e8Enum' + CombinedThemeConfigBlocks: + type: object + properties: + primary_color: + type: string + maxLength: 9 + secondary_color: + type: string + maxLength: 9 + border_color: + type: string + maxLength: 9 + heading_1_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_1_color: + type: string + maxLength: 9 + heading_2_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_2_color: + type: string + maxLength: 9 + heading_3_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_3_color: + type: string + maxLength: 9 + ConditionTypeEnum: + enum: + - AND + - OR + type: string + description: |- + * `AND` - And + * `OR` - Or + ConditionalColorValueProviderConfColor: + type: object + properties: + id: + type: string + description: A unique identifier for this condition. + color: + type: string + description: The color the decorator should take if the defined conditions apply. + filters: + type: array + items: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColorFilter' + description: >- + A list of conditions that the row must meet to get the selected + color. This list of conditions can be empty, in that case, this + color will always match the row values. + filter_groups: + type: array + items: + $ref: >- + #/components/schemas/ConditionalColorValueProviderConfColorFilterGroup + description: >- + A list of filter groups that the row must meet to get the selected + color. + operator: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + default: AND + description: |- + The boolean operator used to group all conditions. + + * `AND` - And + * `OR` - Or + required: + - color + - filters + - id + ConditionalColorValueProviderConfColorFilter: + type: object + properties: + id: + type: string + description: A unique identifier for this condition. + field: + type: integer + nullable: true + description: The field of which the value must be compared to the filter value. + type: + nullable: true + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + oneOf: + - $ref: '#/components/schemas/Type880Enum' + - $ref: '#/components/schemas/NullEnum' + value: + type: string + default: '' + description: The field of which the value must be compared to the filter value. + group: + type: string + nullable: true + description: >- + The id of the filter group this filter belongs to. If this is null, + the filter is not part of a filter group. + required: + - field + - id + - type + ConditionalColorValueProviderConfColorFilterGroup: + type: object + properties: + id: + type: string + description: A unique identifier for this condition. + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + default: AND + description: |- + The boolean operator used to group all conditions. + + * `AND` - And + * `OR` - Or + required: + - id + ConditionalColorValueProviderConfColors: + type: object + properties: + colors: + type: array + items: + $ref: '#/components/schemas/ConditionalColorValueProviderConfColor' + description: >- + A list of color items. For each row, the value provider try to match + the defined colors one by one in the given order. The first matching + color is returned to the decorator. + required: + - colors + CountFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + CountFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + CountFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + CountFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to count values for. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + CreatePage: + type: object + properties: + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + required: + - name + - path + CreateRoleAssignment: + type: object + description: The create role assignment serializer. + properties: + subject_id: + type: integer + minimum: 1 + description: The subject ID. A subject is an actor that can do operations. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectTypeB9aEnum' + description: |- + The subject type. + + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + role: + type: string + nullable: true + description: >- + The uid of the role you want to assign to the user or team in the + given workspace. You can omit this property if you want to remove + the role. + scope_id: + type: integer + minimum: 1 + description: >- + The ID of the scope object. The scope object limit the role + assignment to this scope and all its descendants. + scope_type: + allOf: + - $ref: '#/components/schemas/ScopeTypeEnum' + description: |- + The scope object type. + + * `core` - core + * `application` - application + * `workspace` - workspace + * `workspace_invitation` - workspace_invitation + * `snapshot` - snapshot + * `workspace_user` - workspace_user + * `integration` - integration + * `user_source` - user_source + * `database` - database + * `database_table` - database_table + * `database_field` - database_field + * `database_view` - database_view + * `database_view_decoration` - database_view_decoration + * `database_view_sort` - database_view_sort + * `database_view_group` - database_view_group + * `database_view_filter` - database_view_filter + * `database_view_filter_group` - database_view_filter_group + * `token` - token + * `builder` - builder + * `builder_page` - builder_page + * `builder_element` - builder_element + * `builder_domain` - builder_domain + * `builder_data_source` - builder_data_source + * `builder_workflow_action` - builder_workflow_action + * `team` - team + * `team_subject` - team_subject + * `license` - license + required: + - role + - scope_id + - scope_type + - subject_id + - subject_type + CreateSnapshotJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + CreateSnapshotJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + CreateViewFilter: + type: object + properties: + field: + type: integer + description: The field of which the value must be compared to the filter value. + type: + allOf: + - $ref: '#/components/schemas/Type880Enum' + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + value: + type: string + default: '' + description: The filter value that must be compared to the field's value. + maxLength: 255 + group: + type: integer + nullable: true + description: >- + The id of the filter group the new filter will belong to. If this is + null, the filter will not be part of a filter group, but directly + part of the view. + required: + - field + - type + CreateViewFilterGroup: + type: object + properties: + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + CreateViewGroupBy: + type: object + properties: + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + default: ASC + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + default: 200 + description: The pixel width of the group by in the related view. + required: + - field + CreateViewSort: + type: object + properties: + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + default: ASC + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + CreateWorkspaceInvitation: + type: object + properties: + email: + type: string + format: email + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + maxLength: 254 + permissions: + type: string + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + maxLength: 32 + message: + type: string + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + maxLength: 250 + base_url: + type: string + format: uri + description: >- + The base URL where the user can publicly accept his invitation.The + accept token is going to be appended to the base_url (base_url + '/token'). + required: + - base_url + - email + CreatedByFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + CreatedByFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + CreatedByFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + CreatedByFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + CreatedOnFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + required: + - type + CreatedOnFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + CreatedOnFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + CreatedOnFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + CsvColumnSeparatorEnum: + enum: + - ',' + - ; + - '|' + - tab + - record_separator + - unit_separator + type: string + description: "* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + CsvExporterOptions: + type: object + properties: + view_id: + type: integer + minimum: 0 + nullable: true + description: >- + Optional: The view for this table to export using its filters, sorts + and other view specific settings. + exporter_type: + allOf: + - $ref: '#/components/schemas/ExporterTypeEnum' + description: |- + The file type to export to. + + * `csv` - csv + * `json` - json + * `xml` - xml + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_include_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + required: + - exporter_type + CustomDomainCreateDomain: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type0a6Enum' + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + domain_name: + type: string + maxLength: 255 + required: + - domain_name + - type + CustomDomainDomain: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the domain. + domain_name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + builder_id: + type: integer + readOnly: true + last_published: + type: string + format: date-time + nullable: true + description: Last publication date of this domain + required: + - builder_id + - domain_name + - id + - order + - type + Dashboard: + type: object + properties: + group_invitations: + type: array + items: + $ref: '#/components/schemas/UserWorkspaceInvitation' + workspace_invitations: + type: array + items: + $ref: '#/components/schemas/UserWorkspaceInvitation' + required: + - group_invitations + - workspace_invitations + DatabaseApplication: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + description: The workspace that the application belongs to. + tables: + type: array + items: + $ref: '#/components/schemas/TableSerializerWithFields' + description: >- + This field is specific to the `database` application and contains an + array of tables that are in the database. + views: + type: array + items: + $ref: '#/components/schemas/LocalBaserowView' + description: >- + This field is specific to the `database` application and contains an + array of views that are in the tables. + required: + - group + - id + - name + - order + - tables + - type + - views + - workspace + DatabaseBaseApplicationCreatePolymorphic: + type: object + properties: + name: + type: string + maxLength: 160 + type: + $ref: '#/components/schemas/TypeF4fEnum' + init_with_data: + type: boolean + default: false + required: + - name + - type + DatabaseBaseApplicationUpdatePolymorphic: + type: object + properties: + name: + type: string + maxLength: 160 + required: + - name + DateFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + required: + - type + DateFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + DateFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + DateFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + DateFormatEnum: + enum: + - EU + - US + - ISO + type: string + description: |- + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + DateTimeFormatEnum: + enum: + - '24' + - '12' + type: string + description: |- + * `24` - 24 hour + * `12` - 12 hour + Decorator_Value_Provider_TypeCreateViewDecoration: + oneOf: + - $ref: >- + #/components/schemas/GeneratedSingle_select_colorCreateViewDecoration + - $ref: '#/components/schemas/GeneratedConditional_colorCreateViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: >- + #/components/schemas/GeneratedSingle_select_colorCreateViewDecoration + conditional_color: '#/components/schemas/GeneratedConditional_colorCreateViewDecoration' + Decorator_Value_Provider_TypeViewDecoration: + oneOf: + - $ref: '#/components/schemas/GeneratedSingle_select_colorViewDecoration' + - $ref: '#/components/schemas/GeneratedConditional_colorViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: '#/components/schemas/GeneratedSingle_select_colorViewDecoration' + conditional_color: '#/components/schemas/GeneratedConditional_colorViewDecoration' + Domain_TypeCreateDomain: + oneOf: + - $ref: '#/components/schemas/CustomDomainCreateDomain' + - $ref: '#/components/schemas/SubDomainCreateDomain' + discriminator: + propertyName: type + mapping: + custom: '#/components/schemas/CustomDomainCreateDomain' + sub_domain: '#/components/schemas/SubDomainCreateDomain' + Domain_TypeDomain: + oneOf: + - $ref: '#/components/schemas/CustomDomainDomain' + - $ref: '#/components/schemas/SubDomainDomain' + discriminator: + propertyName: type + mapping: + custom: '#/components/schemas/CustomDomainDomain' + sub_domain: '#/components/schemas/SubDomainDomain' + DropdownElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - order + - type + DropdownElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - id + - order + - page_id + - parent_element_id + - type + DropdownElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + required: + - id + - order + - parent_element_id + - type + DropdownElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this dropdown + default_value: + type: string + default: '' + description: This dropdowns input's default value. + required: + type: boolean + default: false + description: Whether this drodpown is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + options: + type: array + items: + $ref: '#/components/schemas/DropdownOption' + DropdownOption: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + description: The value of the option + name: + type: string + description: The display name of the option + required: + - id + DuplicateApplicationJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + application_id: + type: integer + description: The application ID to duplicate. + required: + - application_id + - type + DuplicateApplicationJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + duplicated_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + required: + - duplicated_application + - id + - original_application + - progress_percentage + - state + - type + DuplicateElement: + type: object + properties: + elements: + type: array + items: + $ref: '#/components/schemas/Element' + readOnly: true + description: The duplicated elements. + workflow_actions: + type: array + items: + $ref: '#/components/schemas/BuilderWorkflowAction' + readOnly: true + description: The duplicated workflow actions + required: + - elements + - workflow_actions + DuplicateFieldJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + field_id: + type: integer + description: The ID of the field to duplicate. + duplicate_data: + type: boolean + default: false + description: Whether to duplicate the data of the field. + required: + - field_id + - type + DuplicateFieldJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_field: + allOf: + - $ref: '#/components/schemas/Field' + readOnly: true + duplicated_field: + allOf: + - $ref: '#/components/schemas/FieldSerializerWithRelatedFields' + readOnly: true + required: + - duplicated_field + - id + - original_field + - progress_percentage + - state + - type + DuplicatePageJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + page_id: + type: integer + description: The ID of the page to duplicate. + required: + - page_id + - type + DuplicatePageJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + duplicated_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + required: + - duplicated_page + - id + - original_page + - progress_percentage + - state + - type + DuplicateTableJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + table_id: + type: integer + description: The ID of the table to duplicate. + required: + - table_id + - type + DuplicateTableJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + duplicated_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + required: + - duplicated_table + - id + - original_table + - progress_percentage + - state + - type + DurationFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + required: + - name + - type + DurationFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + required: + - id + - name + - order + - read_only + - table_id + - type + DurationFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + DurationFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + duration_format: + allOf: + - $ref: '#/components/schemas/DurationFormatEnum' + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + DurationFormatEnum: + enum: + - h:mm + - h:mm:ss + - h:mm:ss.s + - h:mm:ss.ss + - h:mm:ss.sss + - d h + - d h:mm + - d h:mm:ss + type: string + description: |- + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + Element: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + required: + - id + - order + - page_id + - parent_element_id + - type + Element_TypeCreateElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementCreateElement' + - $ref: '#/components/schemas/TextElementCreateElement' + - $ref: '#/components/schemas/LinkElementCreateElement' + - $ref: '#/components/schemas/ImageElementCreateElement' + - $ref: '#/components/schemas/InputTextElementCreateElement' + - $ref: '#/components/schemas/ColumnElementCreateElement' + - $ref: '#/components/schemas/ButtonElementCreateElement' + - $ref: '#/components/schemas/TableElementCreateElement' + - $ref: '#/components/schemas/FormContainerElementCreateElement' + - $ref: '#/components/schemas/DropdownElementCreateElement' + - $ref: '#/components/schemas/CheckboxElementCreateElement' + - $ref: '#/components/schemas/IFrameElementCreateElement' + - $ref: '#/components/schemas/AuthFormElementCreateElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementCreateElement' + text: '#/components/schemas/TextElementCreateElement' + link: '#/components/schemas/LinkElementCreateElement' + image: '#/components/schemas/ImageElementCreateElement' + input_text: '#/components/schemas/InputTextElementCreateElement' + column: '#/components/schemas/ColumnElementCreateElement' + button: '#/components/schemas/ButtonElementCreateElement' + table: '#/components/schemas/TableElementCreateElement' + form_container: '#/components/schemas/FormContainerElementCreateElement' + dropdown: '#/components/schemas/DropdownElementCreateElement' + checkbox: '#/components/schemas/CheckboxElementCreateElement' + iframe: '#/components/schemas/IFrameElementCreateElement' + auth_form: '#/components/schemas/AuthFormElementCreateElement' + Element_TypeElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementElement' + - $ref: '#/components/schemas/TextElementElement' + - $ref: '#/components/schemas/LinkElementElement' + - $ref: '#/components/schemas/ImageElementElement' + - $ref: '#/components/schemas/InputTextElementElement' + - $ref: '#/components/schemas/ColumnElementElement' + - $ref: '#/components/schemas/ButtonElementElement' + - $ref: '#/components/schemas/TableElementElement' + - $ref: '#/components/schemas/FormContainerElementElement' + - $ref: '#/components/schemas/DropdownElementElement' + - $ref: '#/components/schemas/CheckboxElementElement' + - $ref: '#/components/schemas/IFrameElementElement' + - $ref: '#/components/schemas/AuthFormElementElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementElement' + text: '#/components/schemas/TextElementElement' + link: '#/components/schemas/LinkElementElement' + image: '#/components/schemas/ImageElementElement' + input_text: '#/components/schemas/InputTextElementElement' + column: '#/components/schemas/ColumnElementElement' + button: '#/components/schemas/ButtonElementElement' + table: '#/components/schemas/TableElementElement' + form_container: '#/components/schemas/FormContainerElementElement' + dropdown: '#/components/schemas/DropdownElementElement' + checkbox: '#/components/schemas/CheckboxElementElement' + iframe: '#/components/schemas/IFrameElementElement' + auth_form: '#/components/schemas/AuthFormElementElement' + Element_TypePublicElement: + oneOf: + - $ref: '#/components/schemas/HeadingElementPublicElement' + - $ref: '#/components/schemas/TextElementPublicElement' + - $ref: '#/components/schemas/LinkElementPublicElement' + - $ref: '#/components/schemas/ImageElementPublicElement' + - $ref: '#/components/schemas/InputTextElementPublicElement' + - $ref: '#/components/schemas/ColumnElementPublicElement' + - $ref: '#/components/schemas/ButtonElementPublicElement' + - $ref: '#/components/schemas/TableElementPublicElement' + - $ref: '#/components/schemas/FormContainerElementPublicElement' + - $ref: '#/components/schemas/DropdownElementPublicElement' + - $ref: '#/components/schemas/CheckboxElementPublicElement' + - $ref: '#/components/schemas/IFrameElementPublicElement' + - $ref: '#/components/schemas/AuthFormElementPublicElement' + discriminator: + propertyName: type + mapping: + heading: '#/components/schemas/HeadingElementPublicElement' + text: '#/components/schemas/TextElementPublicElement' + link: '#/components/schemas/LinkElementPublicElement' + image: '#/components/schemas/ImageElementPublicElement' + input_text: '#/components/schemas/InputTextElementPublicElement' + column: '#/components/schemas/ColumnElementPublicElement' + button: '#/components/schemas/ButtonElementPublicElement' + table: '#/components/schemas/TableElementPublicElement' + form_container: '#/components/schemas/FormContainerElementPublicElement' + dropdown: '#/components/schemas/DropdownElementPublicElement' + checkbox: '#/components/schemas/CheckboxElementPublicElement' + iframe: '#/components/schemas/IFrameElementPublicElement' + auth_form: '#/components/schemas/AuthFormElementPublicElement' + EmailFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + EmailFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + EmailFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + EmailFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + EmailNotificationFrequencyEnum: + enum: + - instant + - daily + - weekly + - never + type: string + description: |- + * `instant` - instant + * `daily` - daily + * `weekly` - weekly + * `never` - never + EmailTesterRequest: + type: object + properties: + target_email: + type: string + format: email + required: + - target_email + EmailTesterResponse: + type: object + properties: + succeeded: + type: boolean + description: Whether or not the test email was sent successfully. + error_stack: + type: string + nullable: true + description: The full stack trace and error message if the test email failed. + error_type: + type: string + nullable: true + description: The type of error that occurred if the test email failed. + error: + type: string + nullable: true + description: >- + A short message describing the error that occured if the test email + failed + required: + - succeeded + EventEnum: + enum: + - click + - submit + - after_login + type: string + description: |- + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + EventTypeEnum: + enum: + - rows.created + - row.created + - rows.updated + - row.updated + - rows.deleted + - row.deleted + type: string + description: |- + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + EventTypesEnum: + enum: + - rows.created + - rows.updated + - rows.deleted + type: string + description: |- + * `rows.created` - rows.created + * `rows.updated` - rows.updated + * `rows.deleted` - rows.deleted + Events3eaEnum: + enum: + - rows.created + - row.created + - rows.updated + - row.updated + - rows.deleted + - row.deleted + type: string + description: |- + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + ExampleBatchRowsRequest: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/ExampleRowRequestSerializerWithUserFieldNames' + maxItems: 200 + minItems: 1 + required: + - items + ExampleBatchRowsResponse: + type: object + properties: + items: + type: array + items: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + maxItems: 200 + minItems: 1 + required: + - items + ExampleBatchUpdateRowRequestSerializerWithUserFieldNames: + type: object + properties: + id: + type: integer + description: The unique identifier of the row in the table. + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + nullable: true + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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/FileFieldRequest' + nullable: true + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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: + type: integer + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + maxLength: 100 + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + required: + - id + ExampleRowRequest: + type: object + properties: + 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_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: + type: integer + nullable: true + 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. + 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/FileFieldRequest' + nullable: true + 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: + type: integer + 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: + type: integer + 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. The response represents + chosen field, but also the value and color is exposed. + 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. 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_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 list of objects representing the chosen + collaborators through the object's `id` property. The id is Baserow + user id. The response objects also contains the collaborator name + directly along with its id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. Allows + setting a write only password value. Providing a string will set the + password, `null` will unset it, `true` will be ignored. The response + will respond with `true` is a password is set, but will never expose + the password itself. + ExampleRowRequestSerializerWithUserFieldNames: + type: object + properties: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + nullable: true + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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/FileFieldRequest' + nullable: true + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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: + type: integer + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + maxLength: 100 + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + 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. + 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. + 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. 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 list of objects representing the chosen + collaborators through the object's `id` property. The id is Baserow + user id. The response objects also contains the collaborator name + directly along with its id. + field_24: + type: string + format: uuid + description: >- + This field represents the `uuid` field. The number in field_24 is in + a normal request or response the id of the field. Contains a unique + and persistent UUID for every row. + field_25: + type: integer + description: >- + This field represents the `autonumber` field. The number in field_25 + is in a normal request or response the id of the field. Contains a + unique and persistent incremental integer number for every row. + field_26: + type: boolean + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. Allows + setting a write only password value. Providing a string will set the + password, `null` will unset it, `true` will be ignored. The response + will respond with `true` is a password is set, but will never expose + the password itself. + required: + - id + ExampleRowResponseSerializerWithUserFieldNames: + 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. + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_24: + type: string + format: uuid + description: >- + This field represents the `uuid` field. The number in field_24 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Contains a unique and persistent + UUID for every row. + field_25: + type: integer + description: >- + This field represents the `autonumber` field. The number in field_25 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Contains a unique and persistent + incremental integer number for every row. + field_26: + type: boolean + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + required: + - id + Export: + oneOf: + - $ref: '#/components/schemas/CsvExporterOptions' + - $ref: '#/components/schemas/BaseExporterOptions' + - $ref: '#/components/schemas/BaseExporterOptions' + discriminator: + propertyName: exporter_type + mapping: + csv: '#/components/schemas/CsvExporterOptions' + json: '#/components/schemas/BaseExporterOptions' + xml: '#/components/schemas/BaseExporterOptions' + ExportCharsetEnum: + enum: + - utf-8 + - iso-8859-6 + - windows-1256 + - iso-8859-4 + - windows-1257 + - iso-8859-14 + - iso-8859-2 + - windows-1250 + - gbk + - gb18030 + - big5 + - koi8-r + - koi8-u + - iso-8859-5 + - windows-1251 + - x-mac-cyrillic + - iso-8859-7 + - windows-1253 + - iso-8859-8 + - windows-1255 + - euc-jp + - iso-2022-jp + - shift-jis + - euc-kr + - macintosh + - iso-8859-10 + - iso-8859-16 + - windows-874 + - windows-1254 + - windows-1258 + - iso-8859-1 + - windows-1252 + - iso-8859-3 + type: string + description: |- + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + ExportJob: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + id: + type: integer + readOnly: true + table: + type: integer + nullable: true + view: + type: integer + nullable: true + exporter_type: + type: string + state: + $ref: '#/components/schemas/StateEnum' + status: + type: string + readOnly: true + description: 'DEPRECATED: Use state instead' + exported_file_name: + type: string + nullable: true + created_at: + type: string + format: date-time + readOnly: true + progress_percentage: + type: number + format: double + url: + type: string + format: uri + readOnly: true + required: + - created_at + - exporter_type + - id + - state + - status + - url + ExporterTypeEnum: + enum: + - csv + - json + - xml + type: string + description: |- + * `csv` - csv + * `json` - json + * `xml` - xml + FacebookAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + Field: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + FieldCreateField: + oneOf: + - $ref: '#/components/schemas/TextFieldCreateField' + - $ref: '#/components/schemas/LongTextFieldCreateField' + - $ref: '#/components/schemas/URLFieldCreateField' + - $ref: '#/components/schemas/EmailFieldCreateField' + - $ref: '#/components/schemas/NumberFieldCreateField' + - $ref: '#/components/schemas/RatingFieldCreateField' + - $ref: '#/components/schemas/BooleanFieldCreateField' + - $ref: '#/components/schemas/DateFieldCreateField' + - $ref: '#/components/schemas/LastModifiedFieldCreateField' + - $ref: '#/components/schemas/LastModifiedByFieldCreateField' + - $ref: '#/components/schemas/CreatedOnFieldCreateField' + - $ref: '#/components/schemas/CreatedByFieldCreateField' + - $ref: '#/components/schemas/DurationFieldCreateField' + - $ref: '#/components/schemas/LinkRowFieldCreateField' + - $ref: '#/components/schemas/FileFieldCreateField' + - $ref: '#/components/schemas/SingleSelectFieldCreateField' + - $ref: '#/components/schemas/MultipleSelectFieldCreateField' + - $ref: '#/components/schemas/PhoneNumberFieldCreateField' + - $ref: '#/components/schemas/FormulaFieldCreateField' + - $ref: '#/components/schemas/CountFieldCreateField' + - $ref: '#/components/schemas/RollupFieldCreateField' + - $ref: '#/components/schemas/LookupFieldCreateField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldCreateField' + - $ref: '#/components/schemas/UUIDFieldCreateField' + - $ref: '#/components/schemas/AutonumberFieldCreateField' + - $ref: '#/components/schemas/PasswordFieldCreateField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldCreateField' + long_text: '#/components/schemas/LongTextFieldCreateField' + url: '#/components/schemas/URLFieldCreateField' + email: '#/components/schemas/EmailFieldCreateField' + number: '#/components/schemas/NumberFieldCreateField' + rating: '#/components/schemas/RatingFieldCreateField' + boolean: '#/components/schemas/BooleanFieldCreateField' + date: '#/components/schemas/DateFieldCreateField' + last_modified: '#/components/schemas/LastModifiedFieldCreateField' + last_modified_by: '#/components/schemas/LastModifiedByFieldCreateField' + created_on: '#/components/schemas/CreatedOnFieldCreateField' + created_by: '#/components/schemas/CreatedByFieldCreateField' + duration: '#/components/schemas/DurationFieldCreateField' + link_row: '#/components/schemas/LinkRowFieldCreateField' + file: '#/components/schemas/FileFieldCreateField' + single_select: '#/components/schemas/SingleSelectFieldCreateField' + multiple_select: '#/components/schemas/MultipleSelectFieldCreateField' + phone_number: '#/components/schemas/PhoneNumberFieldCreateField' + formula: '#/components/schemas/FormulaFieldCreateField' + count: '#/components/schemas/CountFieldCreateField' + rollup: '#/components/schemas/RollupFieldCreateField' + lookup: '#/components/schemas/LookupFieldCreateField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldCreateField' + uuid: '#/components/schemas/UUIDFieldCreateField' + autonumber: '#/components/schemas/AutonumberFieldCreateField' + password: '#/components/schemas/PasswordFieldCreateField' + FieldField: + oneOf: + - $ref: '#/components/schemas/TextFieldField' + - $ref: '#/components/schemas/LongTextFieldField' + - $ref: '#/components/schemas/URLFieldField' + - $ref: '#/components/schemas/EmailFieldField' + - $ref: '#/components/schemas/NumberFieldField' + - $ref: '#/components/schemas/RatingFieldField' + - $ref: '#/components/schemas/BooleanFieldField' + - $ref: '#/components/schemas/DateFieldField' + - $ref: '#/components/schemas/LastModifiedFieldField' + - $ref: '#/components/schemas/LastModifiedByFieldField' + - $ref: '#/components/schemas/CreatedOnFieldField' + - $ref: '#/components/schemas/CreatedByFieldField' + - $ref: '#/components/schemas/DurationFieldField' + - $ref: '#/components/schemas/LinkRowFieldField' + - $ref: '#/components/schemas/FileFieldField' + - $ref: '#/components/schemas/SingleSelectFieldField' + - $ref: '#/components/schemas/MultipleSelectFieldField' + - $ref: '#/components/schemas/PhoneNumberFieldField' + - $ref: '#/components/schemas/FormulaFieldField' + - $ref: '#/components/schemas/CountFieldField' + - $ref: '#/components/schemas/RollupFieldField' + - $ref: '#/components/schemas/LookupFieldField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldField' + - $ref: '#/components/schemas/UUIDFieldField' + - $ref: '#/components/schemas/AutonumberFieldField' + - $ref: '#/components/schemas/PasswordFieldField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldField' + long_text: '#/components/schemas/LongTextFieldField' + url: '#/components/schemas/URLFieldField' + email: '#/components/schemas/EmailFieldField' + number: '#/components/schemas/NumberFieldField' + rating: '#/components/schemas/RatingFieldField' + boolean: '#/components/schemas/BooleanFieldField' + date: '#/components/schemas/DateFieldField' + last_modified: '#/components/schemas/LastModifiedFieldField' + last_modified_by: '#/components/schemas/LastModifiedByFieldField' + created_on: '#/components/schemas/CreatedOnFieldField' + created_by: '#/components/schemas/CreatedByFieldField' + duration: '#/components/schemas/DurationFieldField' + link_row: '#/components/schemas/LinkRowFieldField' + file: '#/components/schemas/FileFieldField' + single_select: '#/components/schemas/SingleSelectFieldField' + multiple_select: '#/components/schemas/MultipleSelectFieldField' + phone_number: '#/components/schemas/PhoneNumberFieldField' + formula: '#/components/schemas/FormulaFieldField' + count: '#/components/schemas/CountFieldField' + rollup: '#/components/schemas/RollupFieldField' + lookup: '#/components/schemas/LookupFieldField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldField' + uuid: '#/components/schemas/UUIDFieldField' + autonumber: '#/components/schemas/AutonumberFieldField' + password: '#/components/schemas/PasswordFieldField' + FieldFieldSerializerWithRelatedFields: + oneOf: + - $ref: '#/components/schemas/TextFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LongTextFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/URLFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/EmailFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/NumberFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/RatingFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/BooleanFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/DateFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/LastModifiedFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/LastModifiedByFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/CreatedOnFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/CreatedByFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/DurationFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LinkRowFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/FileFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/SingleSelectFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/MultipleSelectFieldFieldSerializerWithRelatedFields + - $ref: >- + #/components/schemas/PhoneNumberFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/FormulaFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/CountFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/RollupFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/LookupFieldFieldSerializerWithRelatedFields' + - $ref: >- + #/components/schemas/MultipleCollaboratorsFieldFieldSerializerWithRelatedFields + - $ref: '#/components/schemas/UUIDFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/AutonumberFieldFieldSerializerWithRelatedFields' + - $ref: '#/components/schemas/PasswordFieldFieldSerializerWithRelatedFields' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldFieldSerializerWithRelatedFields' + long_text: '#/components/schemas/LongTextFieldFieldSerializerWithRelatedFields' + url: '#/components/schemas/URLFieldFieldSerializerWithRelatedFields' + email: '#/components/schemas/EmailFieldFieldSerializerWithRelatedFields' + number: '#/components/schemas/NumberFieldFieldSerializerWithRelatedFields' + rating: '#/components/schemas/RatingFieldFieldSerializerWithRelatedFields' + boolean: '#/components/schemas/BooleanFieldFieldSerializerWithRelatedFields' + date: '#/components/schemas/DateFieldFieldSerializerWithRelatedFields' + last_modified: >- + #/components/schemas/LastModifiedFieldFieldSerializerWithRelatedFields + last_modified_by: >- + #/components/schemas/LastModifiedByFieldFieldSerializerWithRelatedFields + created_on: '#/components/schemas/CreatedOnFieldFieldSerializerWithRelatedFields' + created_by: '#/components/schemas/CreatedByFieldFieldSerializerWithRelatedFields' + duration: '#/components/schemas/DurationFieldFieldSerializerWithRelatedFields' + link_row: '#/components/schemas/LinkRowFieldFieldSerializerWithRelatedFields' + file: '#/components/schemas/FileFieldFieldSerializerWithRelatedFields' + single_select: >- + #/components/schemas/SingleSelectFieldFieldSerializerWithRelatedFields + multiple_select: >- + #/components/schemas/MultipleSelectFieldFieldSerializerWithRelatedFields + phone_number: >- + #/components/schemas/PhoneNumberFieldFieldSerializerWithRelatedFields + formula: '#/components/schemas/FormulaFieldFieldSerializerWithRelatedFields' + count: '#/components/schemas/CountFieldFieldSerializerWithRelatedFields' + rollup: '#/components/schemas/RollupFieldFieldSerializerWithRelatedFields' + lookup: '#/components/schemas/LookupFieldFieldSerializerWithRelatedFields' + multiple_collaborators: >- + #/components/schemas/MultipleCollaboratorsFieldFieldSerializerWithRelatedFields + uuid: '#/components/schemas/UUIDFieldFieldSerializerWithRelatedFields' + autonumber: '#/components/schemas/AutonumberFieldFieldSerializerWithRelatedFields' + password: '#/components/schemas/PasswordFieldFieldSerializerWithRelatedFields' + FieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + FileFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + FileFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + FileFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + FileFieldRequest: + type: object + properties: + visible_name: + type: string + description: A visually editable name for the field. + name: + type: string + description: Accepts the name of the already uploaded user file. + required: + - name + 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 + FileFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + FileImportJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + FileImportJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + database_id: + type: integer + description: Database id where the table will be created. + name: + type: string + description: The name of the new table. + maxLength: 255 + table_id: + type: integer + description: Table id where the data will be imported. + first_row_header: + type: boolean + default: false + report: + allOf: + - $ref: '#/components/schemas/Report' + description: Import error report. + required: + - database_id + - id + - progress_percentage + - report + - state + - type + FilterActionTypeEnum: + enum: + - create_group + - delete_group + - update_group + - order_groups + - create_application + - update_application + - delete_application + - order_applications + - duplicate_application + - install_template + - create_group_invitation + - delete_group_invitation + - accept_group_invitation + - reject_group_invitation + - update_group_invitation_permissions + - leave_group + - create_snapshot + - delete_snapshot + - restore_snapshot + - empty_trash + - restore_from_trash + - create_user + - update_user + - schedule_user_deletion + - cancel_user_deletion + - sign_in_user + - change_user_password + - send_reset_user_password + - reset_user_password + - create_db_token + - update_db_token_name + - update_db_token_permissions + - rotate_db_token_key + - delete_db_token_key + - create_webhook + - delete_webhook + - update_webhook + - export_table + - import_database_from_airtable + - create_table + - delete_table + - order_tables + - update_table + - duplicate_table + - create_row + - create_rows + - import_rows + - delete_row + - delete_rows + - move_row + - update_row + - update_rows + - create_view + - duplicate_view + - delete_view + - order_views + - update_view + - create_view_filter + - update_view_filter + - delete_view_filter + - create_view_sort + - update_view_sort + - delete_view_sort + - create_view_group + - update_view_group + - delete_view_group + - rotate_view_slug + - update_view_field_options + - create_decoration + - update_decoration + - delete_decoration + - create_view_filter_group + - update_view_filter_group + - delete_view_filter_group + - create_field + - delete_field + - update_field + - duplicate_field + - create_row_comment + - delete_row_comment + - update_row_comment + - create_team + - update_team + - delete_team + - create_team_subject + - delete_team_subject + - batch_assign_role + type: string + description: >- + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + FormContainerElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + FormContainerElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + FormContainerElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + FormContainerElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + submit_button_label: + type: string + default: '' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + FormViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The cover image that must be displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The logo image that must be displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + receive_notification_on_submit: + type: boolean + readOnly: true + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - receive_notification_on_submit + - slug + - type + FormViewFieldOptions: + type: object + properties: + name: + type: string + description: >- + By default, the name of the related field will be shown to the + visitor. Optionally another name can be used by setting this name. + maxLength: 255 + description: + type: string + description: If provided, then this value be will be shown under the field name. + enabled: + type: boolean + description: Indicates whether the field is included in the form. + required: + type: boolean + description: Indicates whether the field is required for the visitor to fill out. + show_when_matching_conditions: + type: boolean + description: Indicates whether this field is visible when the conditions are met. + condition_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all (AND) or any (OR) of the conditions should + match before shown. + + + * `AND` - And + + * `OR` - Or + order: + type: integer + maximum: 32767 + minimum: -32768 + description: The order that the field has in the form. Lower value is first. + conditions: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsCondition' + condition_groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + field_component: + type: string + description: >- + Indicates which field input component is used in the form. The value + is only used in the frontend, and can differ per field. + maxLength: 32 + FormViewFieldOptionsCondition: + type: object + properties: + id: + type: integer + field: + type: integer + type: + type: string + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + maxLength: 48 + value: + type: string + description: The filter value that must be compared to the field's value. + maxLength: 255 + group: + type: integer + nullable: true + required: + - field + - id + - type + FormViewFieldOptionsConditionGroup: + type: object + properties: + id: + type: integer + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + required: + - id + FormViewSubmitted: + type: object + properties: + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + row_id: + type: integer + required: + - row_id + FormViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The cover image that must be displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The logo image that must be displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + receive_notification_on_submit: + type: boolean + readOnly: true + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - receive_notification_on_submit + - slug + - table + - table_id + - type + FormatEnum: + enum: + - plain + - markdown + type: string + description: |- + * `plain` - Plain + * `markdown` - Markdown + FormulaFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - name + - nullable + - type + FormulaFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - id + - name + - nullable + - order + - read_only + - table_id + - type + FormulaFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + FormulaFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + readOnly: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - error + - formula + - nullable + FormulaTypeEnum: + enum: + - invalid + - text + - char + - button + - link + - date_interval + - duration + - date + - boolean + - number + - array + - single_select + - multiple_select + - single_file + type: string + description: |- + * `invalid` - invalid + * `text` - text + * `char` - char + * `button` - button + * `link` - link + * `date_interval` - date_interval + * `duration` - duration + * `date` - date + * `boolean` - boolean + * `number` - number + * `array` - array + * `single_select` - single_select + * `multiple_select` - multiple_select + * `single_file` - single_file + FullHealthCheck: + type: object + properties: + passing: + type: boolean + readOnly: true + description: >- + False if any of the critical service health checks are failing, true + otherwise. + checks: + type: object + additionalProperties: + type: string + readOnly: true + description: >- + An object keyed by the name of the health check and the value being + the result. + required: + - checks + - passing + GalleryViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + GalleryViewFieldOptions: + 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 form. Lower value is first. + GalleryViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + GeneratedConditional_colorCreateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + default: '' + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - type + GeneratedConditional_colorUpdateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + GeneratedConditional_colorViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: + type: string + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + maxLength: 255 + value_provider_type: + type: string + description: The value provider type that gives the value to the decorator. + maxLength: 255 + value_provider_conf: + allOf: + - $ref: '#/components/schemas/ConditionalColorValueProviderConfColors' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - id + GeneratedSingle_select_colorCreateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + default: '' + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/SelectColorValueProviderConf' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - type + GeneratedSingle_select_colorUpdateViewDecoration: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeFc4Enum' + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + + + * `left_border_color` - left_border_color + + * `background_color` - background_color + value_provider_type: + description: |- + The value provider type that gives the value to the decorator. + + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + oneOf: + - $ref: '#/components/schemas/ValueProviderTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + value_provider_conf: + allOf: + - $ref: '#/components/schemas/SelectColorValueProviderConf' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + GeneratedSingle_select_colorViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: + type: string + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + maxLength: 255 + value_provider_type: + type: string + description: The value provider type that gives the value to the decorator. + maxLength: 255 + value_provider_conf: + allOf: + - $ref: '#/components/schemas/SelectColorValueProviderConf' + description: The configuration of the value provider + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - id + GitHubAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + GitLabAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + base_url: + type: string + format: uri + description: Base URL of the authorization server + maxLength: 200 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - base_url + - client_id + - id + - name + - secret + - type + GoogleAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - client_id + - id + - name + - secret + - type + GridViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + GridViewFieldOptions: + type: object + properties: + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The width of the table field in the related view. + hidden: + type: boolean + description: Whether or not the field should be hidden in the current view. + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position that the field has within the view, lowest first. If + there is another field with the same order value then the field with + the lowest id must be shown first. + aggregation_type: + type: string + description: >- + Indicates how the field value is aggregated. This value is different + from the `aggregation_raw_type`. The `aggregation_raw_type` is the + value extracted from the database, while the `aggregation_type` can + implies further calculations. For example: if you want to compute an + average, `sum` is going to be the `aggregation_raw_type`, the value + extracted from database, and `sum / row_count` will be the + aggregation result displayed to the user. This aggregation_type + should be used by the client to compute the final value. + maxLength: 48 + aggregation_raw_type: + description: >- + Indicates how to compute the raw aggregation value from database. + This type must be registered in the backend prior to use it. + + + * `empty_count` - empty_count + + * `not_empty_count` - not_empty_count + + * `unique_count` - unique_count + + * `min` - min + + * `max` - max + + * `sum` - sum + + * `average` - average + + * `median` - median + + * `decile` - decile + + * `variance` - variance + + * `std_dev` - std_dev + oneOf: + - $ref: '#/components/schemas/AggregationRawTypeEnum' + - $ref: '#/components/schemas/BlankEnum' + GridViewFilter: + type: object + properties: + field_ids: + type: array + items: + type: integer + description: >- + Only the fields related to the provided ids are added to the + response. If None are provided all fields will be returned. + row_ids: + type: array + items: + type: integer + description: Only rows related to the provided ids are added to the response. + required: + - row_ids + GridViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + HeadingElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - order + - type + HeadingElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - id + - order + - page_id + - parent_element_id + - type + HeadingElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + required: + - id + - order + - parent_element_id + - type + HeadingElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + level: + type: integer + maximum: 6 + minimum: 1 + default: 1 + description: The level of the heading from 1 to 6. + font_color: + type: string + description: Heading font color. + maxLength: 20 + alignment: + $ref: '#/components/schemas/Alignment675Enum' + IFrameElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + required: + - order + - type + IFrameElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + required: + - id + - order + - page_id + - parent_element_id + - type + IFrameElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + required: + - id + - order + - parent_element_id + - type + IFrameElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + source_type: + allOf: + - $ref: '#/components/schemas/SourceTypeEnum' + default: url + url: + type: string + default: '' + description: A link to the page to embed + embed: + type: string + default: '' + description: Inline HTML to embed + height: + type: integer + maximum: 2000 + minimum: 1 + default: 300 + description: Height in pixels of the iframe + IdEnum: + enum: + - create_group + - delete_group + - update_group + - order_groups + - create_application + - update_application + - delete_application + - order_applications + - duplicate_application + - install_template + - create_group_invitation + - delete_group_invitation + - accept_group_invitation + - reject_group_invitation + - update_group_invitation_permissions + - leave_group + - create_snapshot + - delete_snapshot + - restore_snapshot + - empty_trash + - restore_from_trash + - create_user + - update_user + - schedule_user_deletion + - cancel_user_deletion + - sign_in_user + - change_user_password + - send_reset_user_password + - reset_user_password + - create_db_token + - update_db_token_name + - update_db_token_permissions + - rotate_db_token_key + - delete_db_token_key + - create_webhook + - delete_webhook + - update_webhook + - export_table + - import_database_from_airtable + - create_table + - delete_table + - order_tables + - update_table + - duplicate_table + - create_row + - create_rows + - import_rows + - delete_row + - delete_rows + - move_row + - update_row + - update_rows + - create_view + - duplicate_view + - delete_view + - order_views + - update_view + - create_view_filter + - update_view_filter + - delete_view_filter + - create_view_sort + - update_view_sort + - delete_view_sort + - create_view_group + - update_view_group + - delete_view_group + - rotate_view_slug + - update_view_field_options + - create_decoration + - update_decoration + - delete_decoration + - create_view_filter_group + - update_view_filter_group + - delete_view_filter_group + - create_field + - delete_field + - update_field + - duplicate_field + - create_row_comment + - delete_row_comment + - update_row_comment + - create_team + - update_team + - delete_team + - create_team_subject + - delete_team_subject + - batch_assign_role + type: string + description: >- + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + ImageElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The image file + image_url: + type: string + description: A link to the image file + maxLength: 1000 + alt_text: + type: string + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + nullable: true + default: 100 + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + required: + - order + - type + ImageElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + $ref: '#/components/schemas/UserFile' + image_url: + type: string + default: '' + description: A link to the image file + alt_text: + type: string + default: '' + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + maximum: 100 + minimum: 0 + nullable: true + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + required: + - id + - order + - page_id + - parent_element_id + - type + ImageElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + $ref: '#/components/schemas/UserFile' + image_url: + type: string + default: '' + description: A link to the image file + alt_text: + type: string + default: '' + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + maximum: 100 + minimum: 0 + nullable: true + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + required: + - id + - order + - parent_element_id + - type + ImageElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + image_source_type: + $ref: '#/components/schemas/ImageSourceTypeEnum' + image_file: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The image file + image_url: + type: string + description: A link to the image file + maxLength: 1000 + alt_text: + type: string + description: Text that is displayed when the image can't load + alignment: + $ref: '#/components/schemas/Alignment675Enum' + style_image_constraint: + allOf: + - $ref: '#/components/schemas/StyleImageConstraintEnum' + description: |- + The image constraint to apply to this image + + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + style_max_width: + type: integer + nullable: true + default: 100 + description: The max-width for this image element. + style_max_height: + type: integer + maximum: 3000 + minimum: 5 + nullable: true + description: The max-height for this image element. + ImageSourceTypeEnum: + enum: + - upload + - url + type: string + description: |- + * `upload` - Upload + * `url` - Url + InputTextElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + required: + - order + - type + InputTextElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + required: + - id + - order + - page_id + - parent_element_id + - type + InputTextElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + required: + - id + - order + - parent_element_id + - type + InputTextElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + label: + type: string + default: '' + description: The text label for this input + default_value: + type: string + default: '' + description: This text input's default value. + required: + type: boolean + default: false + description: Whether this text input is a required field. + placeholder: + type: string + default: '' + description: The placeholder text which should be applied to the element. + is_multiline: + type: boolean + default: false + description: Whether this text input is multiline. + rows: + type: integer + maximum: 100 + minimum: 1 + default: 3 + description: Number of rows displayed by the rendered input element + InstallTemplateJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + group_id: + type: integer + description: The ID of the group where the template will be installed. + workspace_id: + type: integer + description: The ID of the workspace where the template will be installed. + template_id: + type: integer + description: The template ID that will be installed. + required: + - template_id + - type + InstallTemplateJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + template: + allOf: + - $ref: '#/components/schemas/Template' + readOnly: true + installed_applications: + type: object + additionalProperties: {} + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + required: + - group + - id + - installed_applications + - progress_percentage + - state + - template + - type + - workspace + InstanceId: + type: object + properties: + instance_id: + type: string + readOnly: true + pattern: ^[-a-zA-Z0-9_]+$ + required: + - instance_id + IntegrationCreateIntegration: + oneOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationCreateIntegration' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowIntegrationCreateIntegration' + IntegrationIntegration: + oneOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationIntegration' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowIntegrationIntegration' + Integration_Service: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRow' + - $ref: '#/components/schemas/LocalBaserowListRows' + - $ref: '#/components/schemas/LocalBaserowUpsertRow' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRow' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRows' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRow' + Integration_ServiceCreateDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowCreateDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsCreateDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowCreateDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowCreateDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsCreateDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowCreateDataSource' + Integration_ServiceDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowDataSource' + Integration_ServicePublicDataSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowPublicDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsPublicDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowPublicDataSource' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowPublicDataSource' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsPublicDataSource' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowPublicDataSource' + Integration_ServiceService: + oneOf: + - $ref: '#/components/schemas/LocalBaserowGetRowService' + - $ref: '#/components/schemas/LocalBaserowListRowsService' + - $ref: '#/components/schemas/LocalBaserowUpsertRowService' + discriminator: + propertyName: type + mapping: + local_baserow_get_row: '#/components/schemas/LocalBaserowGetRowService' + local_baserow_list_rows: '#/components/schemas/LocalBaserowListRowsService' + local_baserow_upsert_row: '#/components/schemas/LocalBaserowUpsertRowService' + Job: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + Job_TypeCreateJob: + oneOf: + - $ref: '#/components/schemas/DuplicateApplicationJobCreateJob' + - $ref: '#/components/schemas/InstallTemplateJobCreateJob' + - $ref: '#/components/schemas/CreateSnapshotJobCreateJob' + - $ref: '#/components/schemas/RestoreSnapshotJobCreateJob' + - $ref: '#/components/schemas/AirtableImportJobCreateJob' + - $ref: '#/components/schemas/FileImportJobCreateJob' + - $ref: '#/components/schemas/DuplicateTableJobCreateJob' + - $ref: '#/components/schemas/DuplicateFieldJobCreateJob' + - $ref: '#/components/schemas/DuplicatePageJobCreateJob' + - $ref: '#/components/schemas/PublishDomainJobCreateJob' + - $ref: '#/components/schemas/AuditLogExportJobCreateJob' + discriminator: + propertyName: type + mapping: + duplicate_application: '#/components/schemas/DuplicateApplicationJobCreateJob' + install_template: '#/components/schemas/InstallTemplateJobCreateJob' + create_snapshot: '#/components/schemas/CreateSnapshotJobCreateJob' + restore_snapshot: '#/components/schemas/RestoreSnapshotJobCreateJob' + airtable: '#/components/schemas/AirtableImportJobCreateJob' + file_import: '#/components/schemas/FileImportJobCreateJob' + duplicate_table: '#/components/schemas/DuplicateTableJobCreateJob' + duplicate_field: '#/components/schemas/DuplicateFieldJobCreateJob' + duplicate_page: '#/components/schemas/DuplicatePageJobCreateJob' + publish_domain: '#/components/schemas/PublishDomainJobCreateJob' + audit_log_export: '#/components/schemas/AuditLogExportJobCreateJob' + Job_TypeJob: + oneOf: + - $ref: '#/components/schemas/DuplicateApplicationJobJob' + - $ref: '#/components/schemas/InstallTemplateJobJob' + - $ref: '#/components/schemas/CreateSnapshotJobJob' + - $ref: '#/components/schemas/RestoreSnapshotJobJob' + - $ref: '#/components/schemas/AirtableImportJobJob' + - $ref: '#/components/schemas/FileImportJobJob' + - $ref: '#/components/schemas/DuplicateTableJobJob' + - $ref: '#/components/schemas/DuplicateFieldJobJob' + - $ref: '#/components/schemas/DuplicatePageJobJob' + - $ref: '#/components/schemas/PublishDomainJobJob' + - $ref: '#/components/schemas/AuditLogExportJobJob' + discriminator: + propertyName: type + mapping: + duplicate_application: '#/components/schemas/DuplicateApplicationJobJob' + install_template: '#/components/schemas/InstallTemplateJobJob' + create_snapshot: '#/components/schemas/CreateSnapshotJobJob' + restore_snapshot: '#/components/schemas/RestoreSnapshotJobJob' + airtable: '#/components/schemas/AirtableImportJobJob' + file_import: '#/components/schemas/FileImportJobJob' + duplicate_table: '#/components/schemas/DuplicateTableJobJob' + duplicate_field: '#/components/schemas/DuplicateFieldJobJob' + duplicate_page: '#/components/schemas/DuplicatePageJobJob' + publish_domain: '#/components/schemas/PublishDomainJobJob' + audit_log_export: '#/components/schemas/AuditLogExportJobJob' + KanbanViewCreateView: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/ViewTypesEnum' + ownership_type: + allOf: + - $ref: '#/components/schemas/OwnershipTypeEnum' + default: collaborative + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + single_select_field: + type: integer + nullable: true + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - name + - slug + - type + KanbanViewExampleResponse: + type: object + properties: + rows: + type: object + additionalProperties: + $ref: '#/components/schemas/KanbanViewExampleResponseStack' + description: >- + Every select option related to the view's single select field can + have its own entry like this. + field_options: + type: array + items: + $ref: '#/components/schemas/KanbanViewFieldOptions' + 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 + KanbanViewExampleResponseStack: + 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 related with the provided + `limit` and `offset`. + required: + - count + - results + KanbanViewFieldOptions: + 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. + KanbanViewView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + single_select_field: + type: integer + nullable: true + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - slug + - table + - table_id + - type + LastModifiedByFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + LastModifiedByFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + LastModifiedByFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + LastModifiedByFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + LastModifiedFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + required: + - type + LastModifiedFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + LastModifiedFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + required: + - id + - order + - read_only + - related_fields + - table_id + - type + LastModifiedFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_format: + allOf: + - $ref: '#/components/schemas/DateFormatEnum' + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + date_include_time: + type: boolean + description: Indicates if the field also includes a time. + date_time_format: + allOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + date_show_tzinfo: + type: boolean + description: Indicates if the timezone should be shown. + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_force_timezone_offset: + type: integer + nullable: true + description: >- + ('A UTC offset in minutes to add to all the field datetimes + values.',) + License: + type: object + properties: + id: + type: integer + readOnly: true + license_id: + type: string + description: Unique identifier of the license. + is_active: + type: boolean + description: Indicates if the backend deems the license valid. + last_check: + type: string + format: date-time + nullable: true + valid_from: + type: string + format: date-time + description: From which timestamp the license becomes active. + valid_through: + type: string + format: date-time + description: Until which timestamp the license is active. + free_users_count: + type: integer + readOnly: true + description: The amount of free users that are currently using the license. + seats_taken: + type: integer + readOnly: true + description: The amount of users that are currently using the license. + seats: + type: integer + description: The maximum amount of users that can use the license. + product_code: + type: string + description: The product code that indicates what the license unlocks. + issued_on: + type: string + format: date-time + description: >- + The date when the license was issued. It could be that a new license + is issued with the same `license_id` because it was updated. In that + case, the one that has been issued last should be used. + issued_to_email: + type: string + format: email + description: Indicates to which email address the license has been issued. + issued_to_name: + type: string + description: Indicates to whom the license has been issued. + required: + - free_users_count + - id + - is_active + - issued_on + - issued_to_email + - issued_to_name + - license_id + - product_code + - seats + - seats_taken + - valid_from + - valid_through + LicenseUser: + type: object + properties: + id: + type: integer + readOnly: true + first_name: + type: string + maxLength: 150 + email: + type: string + format: email + title: Email address + maxLength: 254 + required: + - id + LicenseUserLookup: + type: object + properties: + id: + type: integer + readOnly: true + value: + type: string + description: The name and the email address of the user. + readOnly: true + required: + - id + - value + LicenseWithUsers: + type: object + properties: + id: + type: integer + readOnly: true + license_id: + type: string + description: Unique identifier of the license. + is_active: + type: boolean + description: Indicates if the backend deems the license valid. + last_check: + type: string + format: date-time + nullable: true + valid_from: + type: string + format: date-time + description: From which timestamp the license becomes active. + valid_through: + type: string + format: date-time + description: Until which timestamp the license is active. + free_users_count: + type: integer + readOnly: true + description: The amount of free users that are currently using the license. + seats_taken: + type: integer + readOnly: true + description: The amount of users that are currently using the license. + seats: + type: integer + description: The maximum amount of users that can use the license. + product_code: + type: string + description: The product code that indicates what the license unlocks. + issued_on: + type: string + format: date-time + description: >- + The date when the license was issued. It could be that a new license + is issued with the same `license_id` because it was updated. In that + case, the one that has been issued last should be used. + issued_to_email: + type: string + format: email + description: Indicates to which email address the license has been issued. + issued_to_name: + type: string + description: Indicates to whom the license has been issued. + users: + type: array + items: + $ref: '#/components/schemas/LicenseUser' + readOnly: true + required: + - free_users_count + - id + - is_active + - issued_on + - issued_to_email + - issued_to_name + - license_id + - product_code + - seats + - seats_taken + - users + - valid_from + - valid_through + LinkElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + LinkElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + LinkElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + LinkElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be an formula. + navigation_type: + allOf: + - $ref: '#/components/schemas/NavigationTypeEnum' + description: |- + The navigation type. + + * `page` - Page + * `custom` - Custom + navigate_to_page_id: + type: integer + nullable: true + description: >- + ('Destination page id for this link. If null then we use the + navigate_to_url property instead.',) + navigate_to_url: + type: string + default: '' + description: If no page is selected, this indicate the destination of the link. + page_parameters: + type: array + items: + $ref: '#/components/schemas/PageParameterValue' + description: The parameters for each parameters of the selected page if any. + variant: + allOf: + - $ref: '#/components/schemas/VariantEnum' + description: |- + The variant of the link. + + * `link` - Link + * `button` - Button + target: + allOf: + - $ref: '#/components/schemas/TargetEnum' + description: |- + The target of the link when we click on it. + + * `self` - Self + * `blank` - Blank + width: + $ref: '#/components/schemas/WidthEnum' + alignment: + $ref: '#/components/schemas/Alignment675Enum' + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + LinkRowFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + has_related_field: + type: boolean + required: + - name + - type + LinkRowFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_related_field_id: + type: integer + nullable: true + description: The id of the related field. + readOnly: true + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + link_row_related_field: + type: integer + readOnly: true + description: (Deprecated) The id of the related field. + required: + - id + - link_row_related_field + - link_row_related_field_id + - name + - order + - read_only + - table_id + - type + LinkRowFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_related_field_id: + type: integer + nullable: true + description: The id of the related field. + readOnly: true + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + link_row_related_field: + type: integer + readOnly: true + description: (Deprecated) The id of the related field. + required: + - id + - link_row_related_field + - link_row_related_field_id + - name + - order + - read_only + - related_fields + - table_id + - type + LinkRowFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + link_row_table_id: + type: integer + nullable: true + description: The id of the linked table. + link_row_table: + type: integer + nullable: true + description: (Deprecated) The id of the linked table. + has_related_field: + type: boolean + 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. + required: + - id + ListWorkspaceUsersWithMemberData: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + id: + type: integer + readOnly: true + name: + type: string + readOnly: true + description: User defined name. + email: + type: string + readOnly: true + description: User email. + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: The workspace that the user has access to. + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + created_on: + type: string + format: date-time + readOnly: true + user_id: + type: integer + description: The user that has access to the workspace. + readOnly: true + to_be_deleted: + type: boolean + description: True if user account is pending deletion. + teams: + type: array + items: + $ref: '#/components/schemas/WorkspaceUserEnterpriseTeam' + description: >- + Enterprise only: a list of team IDs and names, which this workspace + user belongs to in this workspace. + role_uid: + type: string + nullable: true + description: >- + Enterprise or advanced only: the uid of the role that is assigned to + this workspace user in this workspace. + highest_role_uid: + type: string + nullable: true + description: >- + Enterprise or advanced only: the highest role uid assigned to this + user in this workspace on anything, including roles from teams. + required: + - created_on + - email + - group + - id + - name + - to_be_deleted + - user_id + - workspace + LocalBaserowContextData: + type: object + properties: + databases: + type: array + items: + $ref: '#/components/schemas/DatabaseApplication' + required: + - databases + LocalBaserowCreateRowWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_ServiceService' + description: The service which this workflow action is associated with. + required: + - element_id + - event + - id + - order + - service + - type + LocalBaserowCreateRowWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + required: + - event + - id + - type + LocalBaserowCreateRowWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + LocalBaserowField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + type: + type: string + readOnly: true + description: The type of the related field. + required: + - id + - name + - table_id + - type + LocalBaserowGetRow: + type: object + properties: + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + LocalBaserowGetRowCreateDataSource: + type: object + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC03Enum' + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + name: + type: string + nullable: true + description: Human name for this data source. + page_id: + type: integer + nullable: true + description: Page this data source is linked to. + before_id: + type: integer + description: >- + If provided, creates the data_source before the data_source with the + given id. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - row_id + - table_id + - view_id + LocalBaserowGetRowDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the data source. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - name + - order + - page_id + - row_id + - schema + - table_id + - type + - view_id + LocalBaserowGetRowPublicDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + type: + type: string + readOnly: true + description: The type of the data source. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - name + - order + - page_id + - row_id + - table_id + - type + - view_id + LocalBaserowGetRowService: + type: object + description: Basic service serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the service. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - row_id + - schema + - table_id + - type + - view_id + LocalBaserowGetRowUpdateDataSource: + type: object + properties: + integration_id: + type: integer + nullable: true + description: The related integration id. + name: + type: string + row_id: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - row_id + - table_id + - view_id + LocalBaserowIntegrationCreateIntegration: + type: object + description: >- + This serializer allow to set the type of an integration and the + integration id + + before which we want to insert the new integration. + properties: + before_id: + type: integer + description: >- + If provided, creates the integration before the integration with the + given id. + type: + allOf: + - $ref: '#/components/schemas/Type5f7Enum' + description: |- + The type of the integration. + + * `local_baserow` - local_baserow + name: + type: string + maxLength: 255 + context_data: + allOf: + - $ref: '#/components/schemas/LocalBaserowContextData' + readOnly: true + authorized_user: + allOf: + - $ref: '#/components/schemas/SubjectUser' + readOnly: true + required: + - authorized_user + - context_data + - name + - type + LocalBaserowIntegrationIntegration: + type: object + description: Basic integration serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + application_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the integration. + name: + type: string + readOnly: true + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + context_data: + allOf: + - $ref: '#/components/schemas/LocalBaserowContextData' + readOnly: true + authorized_user: + allOf: + - $ref: '#/components/schemas/SubjectUser' + readOnly: true + required: + - application_id + - authorized_user + - context_data + - id + - name + - order + - type + LocalBaserowIntegrationUpdateIntegration: + type: object + properties: + name: + type: string + maxLength: 255 + context_data: + allOf: + - $ref: '#/components/schemas/LocalBaserowContextData' + readOnly: true + authorized_user: + allOf: + - $ref: '#/components/schemas/SubjectUser' + readOnly: true + required: + - authorized_user + - context_data + LocalBaserowListRows: + type: object + properties: + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + LocalBaserowListRowsCreateDataSource: + type: object + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC03Enum' + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + name: + type: string + nullable: true + description: Human name for this data source. + page_id: + type: integer + nullable: true + description: Page this data source is linked to. + before_id: + type: integer + description: >- + If provided, creates the data_source before the data_source with the + given id. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - table_id + - view_id + LocalBaserowListRowsDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the data source. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - name + - order + - page_id + - schema + - table_id + - type + - view_id + LocalBaserowListRowsPublicDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + type: + type: string + readOnly: true + description: The type of the data source. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - name + - order + - page_id + - table_id + - type + - view_id + LocalBaserowListRowsService: + type: object + description: Basic service serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the service. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - id + - integration_id + - schema + - table_id + - type + - view_id + LocalBaserowListRowsUpdateDataSource: + type: object + properties: + integration_id: + type: integer + nullable: true + description: The related integration id. + name: + type: string + table_id: + type: integer + nullable: true + readOnly: true + view_id: + type: integer + nullable: true + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + search_query: + type: string + description: The query to apply to the service to narrow the results down. + maxLength: 225 + sortings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceSort' + filters: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFilter' + required: + - table_id + - view_id + LocalBaserowPasswordAppAuthProviderAppAuthProvider: + type: object + description: Basic app_auth_provider serializer mostly for returned values. + properties: + type: + type: string + readOnly: true + description: The type of the app_auth_provider. + id: + type: integer + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + password_field_id: + type: integer + nullable: true + description: The id of the field to use as password for the user account. + required: + - id + - type + LocalBaserowPasswordAppAuthProviderBaseAppAuthProvider: + type: object + description: >- + This serializer allow to set the type of an app_auth_provider and the + + app_auth_provider id before which we want to insert the new + app_auth_provider. + properties: + type: + allOf: + - $ref: >- + #/components/schemas/LocalBaserowPasswordAppAuthProviderBaseAppAuthProviderTypeEnum + description: |- + The type of the app_auth_provider. + + * `local_baserow_password` - local_baserow_password + user_source_id: + type: integer + readOnly: true + domain: + type: string + nullable: true + maxLength: 255 + password_field_id: + type: integer + nullable: true + description: The id of the field to use as password for the user account. + required: + - type + - user_source_id + LocalBaserowPasswordAppAuthProviderBaseAppAuthProviderTypeEnum: + enum: + - local_baserow_password + type: string + description: '* `local_baserow_password` - local_baserow_password' + LocalBaserowTableServiceFieldMapping: + type: object + properties: + field_id: + type: integer + description: The primary key of the associated database table field. + value: + type: string + required: + - field_id + - value + LocalBaserowTableServiceFilter: + type: object + properties: + id: + type: integer + readOnly: true + order: + type: integer + readOnly: true + field: + type: integer + description: >- + The database Field, in the LocalBaserowTableService, which we would + like to filter upon. + type: + type: string + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + maxLength: 48 + value: + type: string + description: A formula for the filter's value. + value_is_formula: + type: boolean + default: false + description: Indicates whether the value is a formula or not. + required: + - field + - id + - order + - type + - value + LocalBaserowTableServiceSort: + type: object + properties: + id: + type: integer + readOnly: true + field: + type: integer + description: >- + The database Field, in the LocalBaserowTableService service, which + we would like to sort upon. + order: + type: integer + readOnly: true + order_by: + allOf: + - $ref: '#/components/schemas/OrderByEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + - id + - order + LocalBaserowUpdateRowWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_ServiceService' + description: The service which this workflow action is associated with. + required: + - element_id + - event + - id + - order + - service + - type + LocalBaserowUpdateRowWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + required: + - event + - id + - type + LocalBaserowUpdateRowWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + service: + allOf: + - $ref: '#/components/schemas/Integration_Service' + description: The service which this workflow action is associated with. + LocalBaserowUpsertRow: + type: object + properties: + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + LocalBaserowUpsertRowCreateDataSource: + type: object + description: >- + This serializer allow to set the type of a data_source and the + data_source id + + before which we want to insert the new data_source. + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC03Enum' + description: |- + The type of the service. + + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + name: + type: string + nullable: true + description: Human name for this data source. + page_id: + type: integer + nullable: true + description: Page this data source is linked to. + before_id: + type: integer + description: >- + If provided, creates the data_source before the data_source with the + given id. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + LocalBaserowUpsertRowDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + type: + type: string + readOnly: true + description: The type of the data source. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + required: + - id + - name + - order + - page_id + - schema + - type + LocalBaserowUpsertRowPublicDataSource: + type: object + description: >- + Basic data_source serializer mostly for returned values. This serializer + flatten the + + service properties so that from an API POV the data_source object only + exists. + properties: + id: + type: integer + readOnly: true + description: Data source id. + type: + type: string + readOnly: true + description: The type of the data source. + name: + type: string + readOnly: true + description: Human name for this data source. + page_id: + type: integer + readOnly: true + description: Page this data source is linked to. + order: + type: number + format: float + readOnly: true + description: Lowest first. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + required: + - id + - name + - order + - page_id + - type + LocalBaserowUpsertRowService: + type: object + description: Basic service serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + type: + type: string + readOnly: true + description: The type of the service. + schema: + type: object + additionalProperties: {} + readOnly: true + description: The schema of the service. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + required: + - id + - schema + - type + LocalBaserowUpsertRowUpdateDataSource: + type: object + properties: + integration_id: + type: integer + nullable: true + description: The id of the Baserow integration we want the data for. + name: + type: string + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + row_id: + type: string + description: A formula for defining the intended row. + field_mappings: + type: array + items: + $ref: '#/components/schemas/LocalBaserowTableServiceFieldMapping' + description: The field mapping associated with this service. + LocalBaserowUserSourceBasePublicUserSource: + type: object + description: Basic user source serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the user_source. + name: + type: string + readOnly: true + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + required: + - id + - name + - order + - type + LocalBaserowUserSourceCreateUserSource: + type: object + description: >- + This serializer allow to set the type of an user_source and the + user_source id + + before which we want to insert the new user_source. + properties: + before_id: + type: integer + description: >- + If provided, creates the user_source before the user_source with the + given id. + type: + allOf: + - $ref: '#/components/schemas/Type5f7Enum' + description: |- + The type of the user_source. + + * `local_baserow` - local_baserow + name: + type: string + maxLength: 255 + integration_id: + type: integer + description: The related integration id. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderBaseAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + required: + - integration_id + - name + - type + LocalBaserowUserSourceUpdateUserSource: + type: object + description: A serializer to update a user source. + properties: + name: + type: string + maxLength: 255 + integration_id: + type: integer + description: The related integration id. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderBaseAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + LocalBaserowUserSourceUserSource: + type: object + description: Basic user_source serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + application_id: + type: integer + readOnly: true + integration_id: + type: integer + nullable: true + description: The Integration used to establish the connection with the service. + readOnly: true + type: + type: string + readOnly: true + description: The type of the user_source. + name: + type: string + readOnly: true + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + auth_providers: + type: array + items: + $ref: '#/components/schemas/App_Auth_ProviderAppAuthProvider' + description: Auth providers related to this user source. + table_id: + type: integer + nullable: true + description: The id of the Baserow table we want the data for. + email_field_id: + type: integer + nullable: true + description: The id of the field to use as email for the user account. + name_field_id: + type: integer + nullable: true + description: The id of the field that contains the user name. + required: + - application_id + - id + - integration_id + - name + - order + - type + LocalBaserowView: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + required: + - id + - name + - table_id + LogoutWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + required: + - element_id + - event + - id + - order + - type + LogoutWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + required: + - event + - id + - type + LogoutWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + LongTextFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + required: + - name + - type + LongTextFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + required: + - id + - name + - order + - read_only + - table_id + - type + LongTextFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + LongTextFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + long_text_enable_rich_text: + type: boolean + nullable: true + description: Enable rich text formatting for the field. + LookupFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + LookupFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + LookupFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + LookupFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: >- + The id of the link row field to lookup values for. Will override the + `through_field_name` parameter if both are provided, however only + one is required. + through_field_name: + type: string + nullable: true + description: The name of the link row field to lookup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + lookup. Will override the `target_field_id` parameter if both are + provided, however only one is required. + target_field_name: + type: string + nullable: true + description: >- + The name of the field in the table linked to by the through_field to + lookup. + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + ModeC5eEnum: + enum: + - form + - survey + type: string + description: |- + * `form` - form + * `survey` - survey + ModeFf8Enum: + enum: + - all + - mentions + type: string + description: |- + * `all` - all + * `mentions` - mentions + MultipleCollaboratorsFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + notify_user_when_added: + type: boolean + required: + - name + - type + MultipleCollaboratorsFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + notify_user_when_added: + type: boolean + required: + - id + - name + - order + - read_only + - table_id + - type + MultipleCollaboratorsFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + notify_user_when_added: + type: boolean + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + MultipleCollaboratorsFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + notify_user_when_added: + type: boolean + MultipleSelectFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - name + - type + MultipleSelectFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - table_id + - type + MultipleSelectFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + MultipleSelectFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + NavigationTypeEnum: + enum: + - page + - custom + type: string + description: |- + * `page` - Page + * `custom` - Custom + NotificationRecipient: + type: object + description: >- + Serialize notification data along with the recipient information about + the + + read status for the given user. + properties: + id: + type: integer + description: The id of the notification. + type: + type: string + description: The type of notification + sender: + allOf: + - $ref: '#/components/schemas/Sender' + description: The user that sent the notification. + workspace: + type: string + readOnly: true + description: The workspace that the notification is in (if any). + created_on: + type: string + format: date-time + description: The date and time that the notification was created. + read: + type: boolean + description: 'If True, then the notification has been read by the user. ' + data: + type: object + additionalProperties: {} + description: The data associated with the notification. + required: + - created_on + - data + - id + - sender + - type + - workspace + NotificationWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + required: + - element_id + - event + - id + - order + - type + NotificationWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + required: + - event + - id + - type + NotificationWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + NullEnum: + enum: + - null + NumberDecimalPlacesEnum: + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + type: integer + description: |- + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + NumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + required: + - name + - type + NumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + required: + - id + - name + - order + - read_only + - table_id + - type + NumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + NumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + number_decimal_places: + allOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + number_negative: + type: boolean + description: Indicates if negative values are allowed. + OpenApiRoleAssignment: + type: object + description: Serializer for RoleAssignment used for the Open API spec + properties: + id: + type: integer + readOnly: true + role: + type: string + description: >- + The uid of the role assigned to the user or team in the given + workspace. + subject: + allOf: + - $ref: '#/components/schemas/OpenApiSubjectField' + description: >- + The structure of the subject field depends on the subject + typereturned and will have additional fields accordingly + subject_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The subject ID. + scope_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The unique scope ID. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectTypeB9aEnum' + description: |- + The subject type. + + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + scope_type: + allOf: + - $ref: '#/components/schemas/ScopeTypeEnum' + description: >- + The type of the scope object. The scope object limit the role + assignment to this scope and all its descendants. + + + * `core` - core + + * `application` - application + + * `workspace` - workspace + + * `workspace_invitation` - workspace_invitation + + * `snapshot` - snapshot + + * `workspace_user` - workspace_user + + * `integration` - integration + + * `user_source` - user_source + + * `database` - database + + * `database_table` - database_table + + * `database_field` - database_field + + * `database_view` - database_view + + * `database_view_decoration` - database_view_decoration + + * `database_view_sort` - database_view_sort + + * `database_view_group` - database_view_group + + * `database_view_filter` - database_view_filter + + * `database_view_filter_group` - database_view_filter_group + + * `token` - token + + * `builder` - builder + + * `builder_page` - builder_page + + * `builder_element` - builder_element + + * `builder_domain` - builder_domain + + * `builder_data_source` - builder_data_source + + * `builder_workflow_action` - builder_workflow_action + + * `team` - team + + * `team_subject` - team_subject + + * `license` - license + required: + - id + - role + - scope_id + - scope_type + - subject + - subject_id + - subject_type + OpenApiSubjectField: + type: object + properties: + id: + type: integer + required: + - id + OpenIdConnectAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + nullable: true + maxLength: 255 + enabled: + type: boolean + name: + type: string + maxLength: 255 + base_url: + type: string + format: uri + description: Base URL of the authorization server + maxLength: 200 + client_id: + type: string + description: App ID, or consumer key + maxLength: 191 + secret: + type: string + description: API secret, client secret, or consumer secret + maxLength: 191 + required: + - base_url + - client_id + - id + - name + - secret + - type + OpenPageWorkflowActionBuilderWorkflowAction: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + url: + type: string + default: '' + description: The url to open. Must be an formula. + required: + - element_id + - event + - id + - order + - type + OpenPageWorkflowActionCreateBuilderWorkflowAction: + type: object + properties: + id: + type: integer + readOnly: true + element_id: + type: integer + nullable: true + description: The id of the element the workflow action is associated with + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + url: + type: string + default: '' + description: The url to open. Must be an formula. + required: + - event + - id + - type + OpenPageWorkflowActionUpdateBuilderWorkflowActions: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type60cEnum' + description: |- + The type of the workflow action + + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + url: + type: string + default: '' + description: The url to open. Must be an formula. + OrderApplications: + type: object + properties: + application_ids: + type: array + items: + type: integer + description: Application ids in the desired order. + required: + - application_ids + OrderByEnum: + enum: + - ASC + - DESC + type: string + description: |- + * `ASC` - Ascending + * `DESC` - Descending + OrderDomains: + type: object + properties: + domain_ids: + type: array + items: + type: integer + description: The ids of the domains in the order they are supposed to be set in + required: + - domain_ids + OrderEnum: + enum: + - ASC + - DESC + type: string + description: |- + * `ASC` - Ascending + * `DESC` - Descending + OrderPages: + type: object + properties: + page_ids: + type: array + items: + type: integer + description: The ids of the pages in the order they are supposed to be set in + required: + - page_ids + OrderTables: + type: object + properties: + table_ids: + type: array + items: + type: integer + description: Table ids in the desired order. + required: + - table_ids + OrderViews: + type: object + properties: + view_ids: + type: array + items: + type: integer + description: View ids in the desired order. + minItems: 1 + required: + - view_ids + OrderWorkflowActions: + type: object + properties: + workflow_action_ids: + type: array + items: + type: integer + description: >- + The ids of the workflow actions in the order they are supposed to be + set in + element_id: + type: integer + description: The element the workflow actions belong to + required: + - workflow_action_ids + OrderWorkspaces: + type: object + properties: + workspaces: + type: array + items: + type: integer + description: Workspace ids in the desired order. + required: + - workspaces + OwnershipTypeEnum: + enum: + - collaborative + - personal + type: string + description: |- + * `collaborative` - collaborative + * `personal` - personal + Page: + type: object + description: |- + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicPageSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + builder_id: + type: integer + readOnly: true + required: + - builder_id + - id + - name + - order + - path + PageParameterValue: + type: object + properties: + name: + type: string + value: + type: string + required: + - name + - value + PaginationSerializerAuditLog: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/AuditLog' + required: + - count + - next + - previous + - results + PaginationSerializerAuditLogUser: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/AuditLogUser' + required: + - count + - next + - previous + - results + PaginationSerializerAuditLogWorkspace: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/AuditLogWorkspace' + required: + - count + - next + - previous + - results + PaginationSerializerExampleRowResponseSerializerWithUserFieldNames: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: >- + #/components/schemas/ExampleRowResponseSerializerWithUserFieldNames + required: + - count + - next + - previous + - results + PaginationSerializerLicenseUserLookup: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/LicenseUserLookup' + required: + - count + - next + - previous + - results + PaginationSerializerLinkRowValue: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/LinkRowValue' + required: + - count + - next + - previous + - results + PaginationSerializerNotificationRecipient: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/NotificationRecipient' + required: + - count + - next + - previous + - results + PaginationSerializerRowComment: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/RowComment' + required: + - count + - next + - previous + - results + PaginationSerializerRowHistory: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/RowHistory' + required: + - count + - next + - previous + - results + PaginationSerializerTrashContents: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/TrashContents' + required: + - count + - next + - previous + - results + PaginationSerializerUserAdminResponse: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/UserAdminResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + 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. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWithGridViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + 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. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PaginationSerializerWorkspacesAdminResponse: + type: object + properties: + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/WorkspacesAdminResponse' + required: + - count + - next + - previous + - results + PasswordAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + description: The email domain (if any) registered with this password provider. + enabled: + type: boolean + description: Whether the provider is enabled or not. + required: + - id + - type + PasswordFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + PasswordFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + PasswordFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + PasswordFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + PatchedAccount: + type: object + description: This serializer must be kept in sync with `UserSerializer`. + properties: + first_name: + type: string + maxLength: 150 + minLength: 2 + language: + type: string + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + maxLength: 10 + minLength: 2 + email_notification_frequency: + allOf: + - $ref: '#/components/schemas/EmailNotificationFrequencyEnum' + description: >- + The maximum frequency at which the user wants to receive email + notifications. + + + * `instant` - instant + + * `daily` - daily + + * `weekly` - weekly + + * `never` - never + PatchedApplicationBaseApplicationUpdatePolymorphic: + oneOf: + - $ref: '#/components/schemas/DatabaseBaseApplicationUpdatePolymorphic' + - $ref: '#/components/schemas/BuilderBaseApplicationUpdatePolymorphic' + discriminator: + propertyName: type + mapping: + database: '#/components/schemas/DatabaseBaseApplicationUpdatePolymorphic' + builder: '#/components/schemas/BuilderBaseApplicationUpdatePolymorphic' + PatchedBuilder_Workflow_Action_TypeUpdateBuilderWorkflowActions: + anyOf: + - $ref: >- + #/components/schemas/NotificationWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/OpenPageWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LocalBaserowCreateRowWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LocalBaserowUpdateRowWorkflowActionUpdateBuilderWorkflowActions + - $ref: >- + #/components/schemas/LogoutWorkflowActionUpdateBuilderWorkflowActions + PatchedCombinedThemeConfigBlocks: + type: object + properties: + primary_color: + type: string + maxLength: 9 + secondary_color: + type: string + maxLength: 9 + border_color: + type: string + maxLength: 9 + heading_1_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_1_color: + type: string + maxLength: 9 + heading_2_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_2_color: + type: string + maxLength: 9 + heading_3_font_size: + type: integer + maximum: 32767 + minimum: -32768 + heading_3_color: + type: string + maxLength: 9 + PatchedDecorator_Value_Provider_TypeUpdateViewDecoration: + oneOf: + - $ref: >- + #/components/schemas/GeneratedSingle_select_colorUpdateViewDecoration + - $ref: '#/components/schemas/GeneratedConditional_colorUpdateViewDecoration' + discriminator: + propertyName: value_provider_type + mapping: + single_select_color: >- + #/components/schemas/GeneratedSingle_select_colorUpdateViewDecoration + conditional_color: '#/components/schemas/GeneratedConditional_colorUpdateViewDecoration' + PatchedElement_TypeUpdateElement: + anyOf: + - $ref: '#/components/schemas/HeadingElementUpdateElement' + - $ref: '#/components/schemas/TextElementUpdateElement' + - $ref: '#/components/schemas/LinkElementUpdateElement' + - $ref: '#/components/schemas/ImageElementUpdateElement' + - $ref: '#/components/schemas/InputTextElementUpdateElement' + - $ref: '#/components/schemas/ColumnElementUpdateElement' + - $ref: '#/components/schemas/ButtonElementUpdateElement' + - $ref: '#/components/schemas/TableElementUpdateElement' + - $ref: '#/components/schemas/FormContainerElementUpdateElement' + - $ref: '#/components/schemas/DropdownElementUpdateElement' + - $ref: '#/components/schemas/CheckboxElementUpdateElement' + - $ref: '#/components/schemas/IFrameElementUpdateElement' + - $ref: '#/components/schemas/AuthFormElementUpdateElement' + PatchedExampleBatchUpdateRowsRequest: + type: object + properties: + items: + type: array + items: + $ref: >- + #/components/schemas/ExampleBatchUpdateRowRequestSerializerWithUserFieldNames + maxItems: 200 + minItems: 1 + PatchedExampleUpdateRowRequestSerializerWithUserFieldNames: + type: object + properties: + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET parameter + `user_field_names` is provided then the key will instead be the + actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + nullable: true + 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. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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. 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/FileFieldRequest' + nullable: true + description: >- + This field represents the `file` field. The number in field_15 is in + a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name 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: + type: integer + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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: + type: integer + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name 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. The response represents chosen field, but + also the value and color is exposed. + 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name 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. 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. If + the GET parameter `user_field_names` is provided then the key will + instead be the actual name of the field. + maxLength: 100 + 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. + If the GET parameter `user_field_names` is provided then the key + will instead be the actual name of the field. This field accepts a + list of objects representing the chosen collaborators through the + object's `id` property. The id is Baserow user id. The response + objects also contains the collaborator name directly along with its + id. + field_26: + type: string + nullable: true + description: >- + This field represents the `password` field. The number in field_26 + is in a normal request or response the id of the field. If the GET + parameter `user_field_names` is provided then the key will instead + be the actual name of the field. Allows setting a write only + password value. Providing a string will set the password, `null` + will unset it, `true` will be ignored. The response will respond + with `true` is a password is set, but will never expose the password + itself. + PatchedFieldUpdateField: + oneOf: + - $ref: '#/components/schemas/TextFieldUpdateField' + - $ref: '#/components/schemas/LongTextFieldUpdateField' + - $ref: '#/components/schemas/URLFieldUpdateField' + - $ref: '#/components/schemas/EmailFieldUpdateField' + - $ref: '#/components/schemas/NumberFieldUpdateField' + - $ref: '#/components/schemas/RatingFieldUpdateField' + - $ref: '#/components/schemas/BooleanFieldUpdateField' + - $ref: '#/components/schemas/DateFieldUpdateField' + - $ref: '#/components/schemas/LastModifiedFieldUpdateField' + - $ref: '#/components/schemas/LastModifiedByFieldUpdateField' + - $ref: '#/components/schemas/CreatedOnFieldUpdateField' + - $ref: '#/components/schemas/CreatedByFieldUpdateField' + - $ref: '#/components/schemas/DurationFieldUpdateField' + - $ref: '#/components/schemas/LinkRowFieldUpdateField' + - $ref: '#/components/schemas/FileFieldUpdateField' + - $ref: '#/components/schemas/SingleSelectFieldUpdateField' + - $ref: '#/components/schemas/MultipleSelectFieldUpdateField' + - $ref: '#/components/schemas/PhoneNumberFieldUpdateField' + - $ref: '#/components/schemas/FormulaFieldUpdateField' + - $ref: '#/components/schemas/CountFieldUpdateField' + - $ref: '#/components/schemas/RollupFieldUpdateField' + - $ref: '#/components/schemas/LookupFieldUpdateField' + - $ref: '#/components/schemas/MultipleCollaboratorsFieldUpdateField' + - $ref: '#/components/schemas/UUIDFieldUpdateField' + - $ref: '#/components/schemas/AutonumberFieldUpdateField' + - $ref: '#/components/schemas/PasswordFieldUpdateField' + discriminator: + propertyName: type + mapping: + text: '#/components/schemas/TextFieldUpdateField' + long_text: '#/components/schemas/LongTextFieldUpdateField' + url: '#/components/schemas/URLFieldUpdateField' + email: '#/components/schemas/EmailFieldUpdateField' + number: '#/components/schemas/NumberFieldUpdateField' + rating: '#/components/schemas/RatingFieldUpdateField' + boolean: '#/components/schemas/BooleanFieldUpdateField' + date: '#/components/schemas/DateFieldUpdateField' + last_modified: '#/components/schemas/LastModifiedFieldUpdateField' + last_modified_by: '#/components/schemas/LastModifiedByFieldUpdateField' + created_on: '#/components/schemas/CreatedOnFieldUpdateField' + created_by: '#/components/schemas/CreatedByFieldUpdateField' + duration: '#/components/schemas/DurationFieldUpdateField' + link_row: '#/components/schemas/LinkRowFieldUpdateField' + file: '#/components/schemas/FileFieldUpdateField' + single_select: '#/components/schemas/SingleSelectFieldUpdateField' + multiple_select: '#/components/schemas/MultipleSelectFieldUpdateField' + phone_number: '#/components/schemas/PhoneNumberFieldUpdateField' + formula: '#/components/schemas/FormulaFieldUpdateField' + count: '#/components/schemas/CountFieldUpdateField' + rollup: '#/components/schemas/RollupFieldUpdateField' + lookup: '#/components/schemas/LookupFieldUpdateField' + multiple_collaborators: '#/components/schemas/MultipleCollaboratorsFieldUpdateField' + uuid: '#/components/schemas/UUIDFieldUpdateField' + autonumber: '#/components/schemas/AutonumberFieldUpdateField' + password: '#/components/schemas/PasswordFieldUpdateField' + PatchedIntegrationUpdateIntegration: + anyOf: + - $ref: '#/components/schemas/LocalBaserowIntegrationUpdateIntegration' + PatchedIntegration_ServiceUpdateDataSource: + anyOf: + - $ref: '#/components/schemas/LocalBaserowGetRowUpdateDataSource' + - $ref: '#/components/schemas/LocalBaserowListRowsUpdateDataSource' + - $ref: '#/components/schemas/LocalBaserowUpsertRowUpdateDataSource' + PatchedMoveDataSource: + type: object + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the data_source is moved before the data_source with + this Id. Otherwise the data_source is placed last for this page. + PatchedMoveElement: + type: object + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the element is moved before the element with this Id. + Otherwise the element is placed at the end of the page. + parent_element_id: + type: integer + nullable: true + description: >- + If provided, the element is moved as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + PatchedMoveIntegration: + type: object + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the integration is moved before the integration with + this Id. Otherwise the integration is placed at the end of the page. + PatchedMoveUserSource: + type: object + description: Serializer used when moving a user source. + properties: + before_id: + type: integer + nullable: true + description: >- + If provided, the user_source is moved before the user_source with + this Id. Otherwise the user_source is placed at the end of the page. + PatchedSettings: + type: object + properties: + allow_new_signups: + type: boolean + description: >- + Indicates whether new users can create a new account when signing + up. + allow_signups_via_workspace_invitations: + type: boolean + description: >- + Indicates whether invited users can create an account when signing + up, even if allow_new_signups is disabled. + allow_signups_via_group_invitations: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_signups_via_workspace_invitations` instead as this attribute + is being removed in the future. + allow_reset_password: + type: boolean + description: Indicates whether users can request a password reset link. + allow_global_workspace_creation: + type: boolean + description: Indicates whether all users can create workspaces, or just staff. + allow_global_group_creation: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_global_workspace_creation` instead as this attribute is being + removed in the future. + account_deletion_grace_delay: + type: integer + maximum: 32767 + minimum: 0 + description: >- + Number of days after the last login for an account pending deletion + to be deleted + show_admin_signup_page: + type: boolean + description: >- + Indicates that there are no admin users in the database yet, so in + the frontend the signup form will be shown instead of the login + page. + track_workspace_usage: + type: boolean + description: >- + Runs a job once per day which calculates per workspace row counts + and file storage usage, displayed on the admin workspace page. + show_baserow_help_request: + type: boolean + description: >- + Indicates whether the `We need your help!` message will be shown on + the dashboard + co_branding_logo: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: Co-branding logo that's placed next to the Baserow logo (176x29). + PatchedTableUpdate: + type: object + properties: + name: + type: string + maxLength: 255 + PatchedTableWebhookUpdateRequest: + type: object + properties: + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + include_all_events: + type: boolean + description: Indicates whether this webhook should listen to all events. + events: + type: array + items: + $ref: '#/components/schemas/EventTypesEnum' + description: A list containing the events that will trigger this webhook. + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + headers: + type: object + additionalProperties: {} + description: >- + The additional headers as an object where the key is the name and + the value the value. + name: + type: string + description: An internal name of the webhook. + maxLength: 255 + active: + type: boolean + description: >- + Indicates whether the web hook is active. When a webhook has failed + multiple times, it will automatically be deactivated. + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + PatchedTokenUpdate: + type: object + properties: + name: + type: string + description: The human readable name of the database token for the user. + maxLength: 100 + permissions: + type: object + description: >- + Indicates per operation which permissions the database token has + within the whole workspace. If the value of for example `create` is + `true`, then the token can create rows in all tables related to the + workspace. If a list is provided with for example `[["table", 1]]` + then the token only has create permissions for the table with id 1. + Same goes for if a database references is provided. `[['database', + 1]]` means create permissions for all tables in the database with id + 1. + + + Example: + + ```json + + { + "create": true// Allows creating rows in all tables. + // Allows reading rows from database 1 and table 10. + "read": [["database", 1], ["table", 10]], + "update": false // Denies updating rows in all tables. + "delete": [] // Denies deleting rows in all tables. + } + ``` + properties: + create: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + read: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + update: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + delete: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + rotate_key: + type: boolean + default: false + description: Indicates if a new key must be generated. + PatchedTrashEntryRequest: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + trash_item_id: + type: integer + minimum: 0 + parent_trash_item_id: + type: integer + minimum: 0 + nullable: true + trash_item_type: + $ref: '#/components/schemas/TrashItemTypeEnum' + PatchedUndoRedoRequest: + type: object + properties: + scopes: + allOf: + - $ref: '#/components/schemas/ActionScopes' + description: >- + A JSON object with keys and values representing the various action + scopes to include when undoing or redoing. Every action in Baserow + will be associated with a action scope, when undoing/redoing only + actions which match any of the provided scope key:value pairs will + included when this endpoint picks the next action to undo/redo. If + no scopes are provided then all actions performed in the client + session will be included when undoing/redoing. + PatchedUpdateDomain: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type0a6Enum' + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + domain_name: + type: string + PatchedUpdatePage: + type: object + properties: + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + PatchedUpdatePremiumViewAttributes: + type: object + properties: + show_logo: + type: boolean + PatchedUpdateViewFilter: + type: object + properties: + field: + type: integer + description: The field of which the value must be compared to the filter value. + type: + allOf: + - $ref: '#/components/schemas/Type880Enum' + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + + + * `equal` - equal + + * `not_equal` - not_equal + + * `filename_contains` - filename_contains + + * `files_lower_than` - files_lower_than + + * `has_file_type` - has_file_type + + * `contains` - contains + + * `contains_not` - contains_not + + * `contains_word` - contains_word + + * `doesnt_contain_word` - doesnt_contain_word + + * `length_is_lower_than` - length_is_lower_than + + * `higher_than` - higher_than + + * `lower_than` - lower_than + + * `is_even_and_whole` - is_even_and_whole + + * `date_equal` - date_equal + + * `date_before` - date_before + + * `date_before_or_equal` - date_before_or_equal + + * `date_after_days_ago` - date_after_days_ago + + * `date_after` - date_after + + * `date_after_or_equal` - date_after_or_equal + + * `date_not_equal` - date_not_equal + + * `date_equals_today` - date_equals_today + + * `date_before_today` - date_before_today + + * `date_after_today` - date_after_today + + * `date_within_days` - date_within_days + + * `date_within_weeks` - date_within_weeks + + * `date_within_months` - date_within_months + + * `date_equals_days_ago` - date_equals_days_ago + + * `date_equals_months_ago` - date_equals_months_ago + + * `date_equals_years_ago` - date_equals_years_ago + + * `date_equals_week` - date_equals_week + + * `date_equals_month` - date_equals_month + + * `date_equals_day_of_month` - date_equals_day_of_month + + * `date_equals_year` - date_equals_year + + * `single_select_equal` - single_select_equal + + * `single_select_not_equal` - single_select_not_equal + + * `link_row_has` - link_row_has + + * `link_row_has_not` - link_row_has_not + + * `link_row_contains` - link_row_contains + + * `link_row_not_contains` - link_row_not_contains + + * `boolean` - boolean + + * `empty` - empty + + * `not_empty` - not_empty + + * `multiple_select_has` - multiple_select_has + + * `multiple_select_has_not` - multiple_select_has_not + + * `multiple_collaborators_has` - multiple_collaborators_has + + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + + * `user_is` - user_is + + * `user_is_not` - user_is_not + value: + type: string + description: The filter value that must be compared to the field's value. + maxLength: 255 + PatchedUpdateViewFilterGroup: + type: object + properties: + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + PatchedUpdateViewGroupBy: + type: object + properties: + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The pixel width of the group by in the related view. + PatchedUpdateViewSort: + type: object + properties: + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + PatchedUpdateWorkspaceInvitation: + type: object + properties: + permissions: + type: string + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + maxLength: 32 + PatchedUpdateWorkspaceUser: + type: object + properties: + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + PatchedUserAdminUpdate: + type: object + description: >- + Serializes a request body for updating a given user. Do not use for + returning user + + data as the password will be returned also. + properties: + username: + type: string + format: email + name: + type: string + maxLength: 150 + is_active: + type: boolean + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + is_staff: + type: boolean + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + password: + type: string + PatchedUser_SourceUpdateUserSource: + anyOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceUpdateUserSource' + PatchedViewFieldOptions: + anyOf: + - $ref: '#/components/schemas/grid_view_field_options' + - $ref: '#/components/schemas/gallery_view_field_options' + - $ref: '#/components/schemas/form_view_field_options' + - $ref: '#/components/schemas/kanban_view_field_options' + - $ref: '#/components/schemas/calendar_view_field_options' + PatchedViewUpdateView: + anyOf: + - $ref: '#/components/schemas/grid_view_update' + - $ref: '#/components/schemas/gallery_view_update' + - $ref: '#/components/schemas/form_view_update' + - $ref: '#/components/schemas/kanban_view_update' + - $ref: '#/components/schemas/calendar_view_update' + PatchedWorkspace: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + PathParam: + type: object + properties: + name: + type: string + description: The name of the parameter. + maxLength: 255 + type: + allOf: + - $ref: '#/components/schemas/PathParamTypeEnum' + description: |- + The type of the parameter. + + * `text` - text + * `numeric` - numeric + required: + - name + - type + PathParamTypeEnum: + enum: + - text + - numeric + type: string + description: |- + * `text` - text + * `numeric` - numeric + PermissionObject: + type: object + properties: + name: + type: string + description: The permission manager name. + permissions: + type: object + additionalProperties: {} + description: The content of the permission object for this permission manager. + required: + - name + - permissions + PhoneNumberFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + PhoneNumberFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + PhoneNumberFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + PhoneNumberFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + PublicBuilder: + type: object + description: >- + A public version of the builder serializer with less data to prevent + data leaks. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + pages: + type: array + items: + $ref: '#/components/schemas/PublicPage' + readOnly: true + description: >- + This field is specific to the `builder` application and contains an + array of pages that are in the builder. + type: + type: string + readOnly: true + description: The type of the object. + theme: + allOf: + - $ref: '#/components/schemas/CombinedThemeConfigBlocks' + readOnly: true + description: >- + This field is specific to the `builder` application and contains the + theme settings. + user_sources: + type: array + items: + $ref: '#/components/schemas/User_SourceBasePublicUserSource' + readOnly: true + description: The user sources related with this builder. + required: + - id + - name + - pages + - theme + - type + - user_sources + PublicField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + PublicFormView: + type: object + properties: + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The user file cover image that is displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The user file logo image that is displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + fields: + type: array + items: + $ref: '#/components/schemas/PublicFormViewFieldOptions' + show_logo: + type: boolean + required: + - fields + PublicFormViewField: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + required: + - id + - type + PublicFormViewFieldOptions: + type: object + properties: + name: + type: string + readOnly: true + description: If provided, then this value will be visible above the field input. + description: + type: string + description: If provided, then this value be will be shown under the field name. + required: + type: boolean + description: Indicates whether the field is required for the visitor to fill out. + order: + type: integer + maximum: 32767 + minimum: -32768 + description: The order that the field has in the form. Lower value is first. + field: + allOf: + - $ref: '#/components/schemas/PublicFormViewField' + readOnly: true + description: >- + The properties of the related field. These can be used to construct + the correct input. Additional properties could be added depending on + the field type. + show_when_matching_conditions: + type: boolean + description: Indicates whether this field is visible when the conditions are met. + condition_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all (AND) or any (OR) of the conditions should + match before shown. + + + * `AND` - And + + * `OR` - Or + conditions: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsCondition' + condition_groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + groups: + type: array + items: + $ref: '#/components/schemas/FormViewFieldOptionsConditionGroup' + field_component: + type: string + description: >- + Indicates which field input component is used in the form. The value + is only used in the frontend, and can differ per field. + maxLength: 32 + required: + - field + - name + PublicNone: + type: object + description: Basic builder workflow action serializer + properties: + id: + type: integer + readOnly: true + order: + type: integer + maximum: 2147483647 + minimum: 0 + element_id: + type: integer + nullable: true + readOnly: true + type: + type: string + readOnly: true + description: The type of the workflow action + event: + allOf: + - $ref: '#/components/schemas/EventEnum' + description: |- + The event that triggers the execution + + * `click` - Click + * `submit` - Submit + * `after_login` - After Login + title: + type: string + default: '' + description: The title of the notification. Must be an formula. + description: + type: string + default: '' + description: The description of the notification. Must be an formula. + required: + - element_id + - event + - id + - order + - type + PublicPage: + type: object + description: >- + A public version of the page serializer with less data to prevent data + leaks. + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + path: + type: string + maxLength: 255 + path_params: + type: array + items: + $ref: '#/components/schemas/PathParam' + required: + - id + - name + - path + PublicPaginationSerializerWithGalleryViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PublicPaginationSerializerWithGridViewFieldOptionsExampleRowResponse: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + count: + type: integer + description: The total amount of results. + next: + type: string + format: uri + nullable: true + description: URL to the next page. + previous: + type: string + format: uri + nullable: true + description: URL to the previous page. + results: + type: array + items: + $ref: '#/components/schemas/ExampleRowResponse' + required: + - count + - next + - previous + - results + PublicView: + type: object + properties: + id: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + table: + $ref: '#/components/schemas/PublicViewTable' + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + sortings: + type: array + items: + $ref: '#/components/schemas/PublicViewSort' + readOnly: true + group_bys: + type: array + items: + $ref: '#/components/schemas/PublicViewGroupBy' + readOnly: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug where the view can be accessed publicly on. + pattern: ^[-a-zA-Z0-9_]+$ + show_logo: + type: boolean + required: + - group_bys + - id + - name + - order + - slug + - sortings + - table + - type + PublicViewAuthRequest: + type: object + properties: + password: + type: string + required: + - password + PublicViewAuthResponse: + type: object + properties: + access_token: + type: string + required: + - access_token + PublicViewGroupBy: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The pixel width of the group by in the related view. + required: + - field + - id + - view + PublicViewInfo: + type: object + properties: + fields: + type: array + items: + $ref: '#/components/schemas/PublicField' + readOnly: true + view: + allOf: + - $ref: '#/components/schemas/PublicView' + readOnly: true + required: + - fields + - view + PublicViewSort: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: string + pattern: ^[-a-zA-Z0-9_]+$ + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + - id + - view + PublicViewTable: + type: object + properties: + id: + type: integer + readOnly: true + database_id: + type: integer + readOnly: true + required: + - database_id + - id + PublishDomainJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + PublishDomainJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + RatingFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + required: + - name + - type + RatingFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + required: + - id + - name + - order + - read_only + - table_id + - type + RatingFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + RatingFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + max_value: + type: integer + maximum: 10 + minimum: 1 + description: Maximum value the rating can take. + color: + type: string + description: Color of the symbols. + maxLength: 50 + style: + allOf: + - $ref: '#/components/schemas/StyleEnum' + description: |- + Rating style. Allowed values: star, heart, thumbs-up, flag, smile. + + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + Register: + type: object + properties: + name: + type: string + maxLength: 150 + minLength: 2 + email: + type: string + format: email + description: The email address is also going to be the username. + password: + type: string + language: + type: string + default: en + description: >- + An ISO 639 language code (with optional variant) selected by the + user. Ex: en-GB. + maxLength: 10 + minLength: 2 + authenticate: + type: boolean + default: false + description: >- + Indicates whether an authentication JWT should be generated and be + included in the response. + group_invitation_token: + type: string + description: >- + DEPRECATED: Please use `workspace_invitation_token` which this + attribute is being renamed to in 2024. + workspace_invitation_token: + type: string + description: >- + If provided and valid, the user accepts the workspace invitation and + will have access to the workspace after signing up. + template_id: + type: integer + description: >- + The id of the template that must be installed after creating the + account. This only works if the `workspace_invitation_token` param + is not provided. + required: + - email + - name + - password + RegisterLicense: + type: object + properties: + license: + type: string + description: The license that you want to register. + required: + - license + RelatedFields: + type: object + properties: + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - related_fields + Report: + type: object + properties: + failing_rows: + type: object + additionalProperties: + type: object + additionalProperties: + type: array + items: + type: string + description: Error messages for this field. + description: >- + An object containing error messages by fields. The key is the + field name and the value is an array of error messages for this + field. These messages are localized for the user who has created + the job when the translation is available. + description: >- + An object containing field in error by rows. The keys are the row + indexes from original file and values are objects of errors by + fields. + required: + - failing_rows + RequestMethodEnum: + enum: + - POST + - GET + - PUT + - PATCH + - DELETE + type: string + description: |- + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + ResetPasswordBodyValidation: + type: object + properties: + token: + type: string + password: + type: string + required: + - password + - token + RestoreSnapshotJobCreateJob: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/TypeC5eEnum' + description: |- + The type of the job. + + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + required: + - type + RestoreSnapshotJobJob: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + required: + - id + - progress_percentage + - state + - type + RollupFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - name + - nullable + - type + RollupFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - table_id + - type + RollupFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - id + - name + - nullable + - order + - read_only + - related_fields + - table_id + - type + RollupFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + readOnly: true + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + through_field_id: + type: integer + nullable: true + description: The id of the link row field to rollup values for. + target_field_id: + type: integer + nullable: true + description: >- + The id of the field in the table linked to by the through_field to + rollup. + rollup_function: + type: string + description: The rollup formula function that must be applied. + maxLength: 64 + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - nullable + RowComment: + type: object + properties: + id: + type: integer + readOnly: true + user_id: + type: integer + nullable: true + description: The user who made the comment. + readOnly: true + first_name: + type: string + maxLength: 32 + table_id: + type: integer + description: 'The table the row this comment is for is found in. ' + readOnly: true + row_id: + type: integer + maximum: 2147483647 + minimum: 0 + description: The id of the row the comment is for. + message: + type: string + readOnly: true + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + edited: + type: string + readOnly: true + trashed: + type: boolean + required: + - created_on + - edited + - id + - message + - row_id + - table_id + - updated_on + - user_id + RowCommentCreate: + type: object + properties: + message: + type: object + additionalProperties: {} + description: The rich text comment content. + required: + - message + RowCommentsNotificationMode: + type: object + properties: + mode: + allOf: + - $ref: '#/components/schemas/ModeFf8Enum' + description: >- + The mode to use to receive notifications for new comments on a table + row. + + + * `all` - all + + * `mentions` - mentions + required: + - mode + RowCommentsNotificationModeEnum: + enum: + - all + - mentions + type: string + description: |- + * `all` - all + * `mentions` - mentions + RowHistory: + type: object + properties: + id: + type: integer + readOnly: true + action_type: + type: string + description: The type of the action that was performed. + user: + allOf: + - $ref: '#/components/schemas/RowHistoryUser' + description: The user that performed the action. + timestamp: + type: string + format: date-time + description: The timestamp of the action that was performed. + before: + type: object + additionalProperties: {} + description: >- + The mapping between field_ids and values for the row before the + action was performed. + after: + type: object + additionalProperties: {} + description: >- + The mapping between field_ids and values for the row after the + action was performed. + fields_metadata: + type: object + additionalProperties: {} + description: The metadata of the fields that were changed. + required: + - action_type + - after + - before + - fields_metadata + - id + - timestamp + - user + RowHistoryUser: + type: object + properties: + id: + type: integer + description: The id of the user. + name: + type: string + description: The first name of the user. + required: + - id + - name + RowIdentifierTypeEnum: + enum: + - id + - count + type: string + description: |- + * `id` - Id + * `count` - Count + 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' + SAMLResponse: + type: object + properties: + SAMLResponse: + type: string + description: The encoded SAML response from the IdP. + RelayState: + type: string + description: The frontend URL where redirect the authenticated user. + required: + - RelayState + - SAMLResponse + SamlAuthProviderModelAuthProvider: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the related field. + domain: + type: string + description: The email domain registered with this provider. + enabled: + type: boolean + description: Whether the provider is enabled or not. + metadata: + type: string + description: The SAML metadata XML provided by the IdP. + is_verified: + type: boolean + readOnly: true + description: Whether or not a user sign in correctly with this SAML provider. + required: + - domain + - id + - is_verified + - metadata + - type + ScopeTypeEnum: + enum: + - core + - application + - workspace + - workspace_invitation + - snapshot + - workspace_user + - integration + - user_source + - database + - database_table + - database_field + - database_view + - database_view_decoration + - database_view_sort + - database_view_group + - database_view_filter + - database_view_filter_group + - token + - builder + - builder_page + - builder_element + - builder_domain + - builder_data_source + - builder_workflow_action + - team + - team_subject + - license + type: string + description: |- + * `core` - core + * `application` - application + * `workspace` - workspace + * `workspace_invitation` - workspace_invitation + * `snapshot` - snapshot + * `workspace_user` - workspace_user + * `integration` - integration + * `user_source` - user_source + * `database` - database + * `database_table` - database_table + * `database_field` - database_field + * `database_view` - database_view + * `database_view_decoration` - database_view_decoration + * `database_view_sort` - database_view_sort + * `database_view_group` - database_view_group + * `database_view_filter` - database_view_filter + * `database_view_filter_group` - database_view_filter_group + * `token` - token + * `builder` - builder + * `builder_page` - builder_page + * `builder_element` - builder_element + * `builder_domain` - builder_domain + * `builder_data_source` - builder_data_source + * `builder_workflow_action` - builder_workflow_action + * `team` - team + * `team_subject` - team_subject + * `license` - license + SelectColorValueProviderConf: + type: object + properties: + field_id: + type: integer + nullable: true + description: >- + An id of a select field of the table. The value provider return the + color of the selected option for each row. + required: + - field_id + SelectOption: + type: object + properties: + id: + type: integer + value: + type: string + maxLength: 255 + color: + type: string + maxLength: 255 + required: + - color + - value + SendResetPasswordEmailBodyValidation: + type: object + properties: + email: + type: string + format: email + description: The email address of the user that has requested a password reset. + base_url: + type: string + format: uri + description: >- + The base URL where the user can reset his password. The reset token + is going to be appended to the base_url (base_url '/token'). + required: + - base_url + - email + Sender: + type: object + properties: + id: + type: integer + readOnly: true + username: + type: string + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + pattern: ^[\w.@+-]+$ + maxLength: 150 + first_name: + type: string + maxLength: 150 + required: + - id + - username + Settings: + type: object + properties: + allow_new_signups: + type: boolean + description: >- + Indicates whether new users can create a new account when signing + up. + allow_signups_via_workspace_invitations: + type: boolean + description: >- + Indicates whether invited users can create an account when signing + up, even if allow_new_signups is disabled. + allow_signups_via_group_invitations: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_signups_via_workspace_invitations` instead as this attribute + is being removed in the future. + allow_reset_password: + type: boolean + description: Indicates whether users can request a password reset link. + allow_global_workspace_creation: + type: boolean + description: Indicates whether all users can create workspaces, or just staff. + allow_global_group_creation: + type: boolean + description: >- + DEPRECATED: Please use the functionally identical + `allow_global_workspace_creation` instead as this attribute is being + removed in the future. + account_deletion_grace_delay: + type: integer + maximum: 32767 + minimum: 0 + description: >- + Number of days after the last login for an account pending deletion + to be deleted + show_admin_signup_page: + type: boolean + description: >- + Indicates that there are no admin users in the database yet, so in + the frontend the signup form will be shown instead of the login + page. + track_workspace_usage: + type: boolean + description: >- + Runs a job once per day which calculates per workspace row counts + and file storage usage, displayed on the admin workspace page. + show_baserow_help_request: + type: boolean + description: >- + Indicates whether the `We need your help!` message will be shown on + the dashboard + co_branding_logo: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: Co-branding logo that's placed next to the Baserow logo (176x29). + SingleAuditLogExportJobRequest: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + url: + type: string + format: uri + readOnly: true + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + required: + - url + SingleAuditLogExportJobResponse: + type: object + description: >- + When mixed in to a model serializer for an ExportJob this will add an + url field + + with the actual usable url of the export job's file (if it has one). + properties: + url: + type: string + format: uri + readOnly: true + description: The URL to download the exported file. + export_charset: + allOf: + - $ref: '#/components/schemas/ExportCharsetEnum' + default: utf-8 + description: |- + The character set to use when creating the export file. + + * `utf-8` - utf-8 + * `iso-8859-6` - iso-8859-6 + * `windows-1256` - windows-1256 + * `iso-8859-4` - iso-8859-4 + * `windows-1257` - windows-1257 + * `iso-8859-14` - iso-8859-14 + * `iso-8859-2` - iso-8859-2 + * `windows-1250` - windows-1250 + * `gbk` - gbk + * `gb18030` - gb18030 + * `big5` - big5 + * `koi8-r` - koi8-r + * `koi8-u` - koi8-u + * `iso-8859-5` - iso-8859-5 + * `windows-1251` - windows-1251 + * `x-mac-cyrillic` - mac-cyrillic + * `iso-8859-7` - iso-8859-7 + * `windows-1253` - windows-1253 + * `iso-8859-8` - iso-8859-8 + * `windows-1255` - windows-1255 + * `euc-jp` - euc-jp + * `iso-2022-jp` - iso-2022-jp + * `shift-jis` - shift-jis + * `euc-kr` - euc-kr + * `macintosh` - macintosh + * `iso-8859-10` - iso-8859-10 + * `iso-8859-16` - iso-8859-16 + * `windows-874` - cp874 + * `windows-1254` - windows-1254 + * `windows-1258` - windows-1258 + * `iso-8859-1` - iso-8859-1 + * `windows-1252` - windows-1252 + * `iso-8859-3` - iso-8859-3 + csv_column_separator: + allOf: + - $ref: '#/components/schemas/CsvColumnSeparatorEnum' + default: ',' + description: "The value used to separate columns in the resulting csv file.\n\n* `,` - ,\n* `;` - ;\n* `|` - |\n* `tab` - \t\n* `record_separator` - \x1E\n* `unit_separator` - \x1F" + csv_first_row_header: + type: boolean + default: true + description: Whether or not to generate a header row at the top of the csv file. + filter_user_id: + type: integer + minimum: 0 + description: 'Optional: The user to filter the audit log by.' + filter_workspace_id: + type: integer + minimum: 0 + description: 'Optional: The workspace to filter the audit log by.' + filter_action_type: + allOf: + - $ref: '#/components/schemas/FilterActionTypeEnum' + description: >- + Optional: The action type to filter the audit log by. + + + * `create_group` - create_group + + * `delete_group` - delete_group + + * `update_group` - update_group + + * `order_groups` - order_groups + + * `create_application` - create_application + + * `update_application` - update_application + + * `delete_application` - delete_application + + * `order_applications` - order_applications + + * `duplicate_application` - duplicate_application + + * `install_template` - install_template + + * `create_group_invitation` - create_group_invitation + + * `delete_group_invitation` - delete_group_invitation + + * `accept_group_invitation` - accept_group_invitation + + * `reject_group_invitation` - reject_group_invitation + + * `update_group_invitation_permissions` - + update_group_invitation_permissions + + * `leave_group` - leave_group + + * `create_snapshot` - create_snapshot + + * `delete_snapshot` - delete_snapshot + + * `restore_snapshot` - restore_snapshot + + * `empty_trash` - empty_trash + + * `restore_from_trash` - restore_from_trash + + * `create_user` - create_user + + * `update_user` - update_user + + * `schedule_user_deletion` - schedule_user_deletion + + * `cancel_user_deletion` - cancel_user_deletion + + * `sign_in_user` - sign_in_user + + * `change_user_password` - change_user_password + + * `send_reset_user_password` - send_reset_user_password + + * `reset_user_password` - reset_user_password + + * `create_db_token` - create_db_token + + * `update_db_token_name` - update_db_token_name + + * `update_db_token_permissions` - update_db_token_permissions + + * `rotate_db_token_key` - rotate_db_token_key + + * `delete_db_token_key` - delete_db_token_key + + * `create_webhook` - create_webhook + + * `delete_webhook` - delete_webhook + + * `update_webhook` - update_webhook + + * `export_table` - export_table + + * `import_database_from_airtable` - import_database_from_airtable + + * `create_table` - create_table + + * `delete_table` - delete_table + + * `order_tables` - order_tables + + * `update_table` - update_table + + * `duplicate_table` - duplicate_table + + * `create_row` - create_row + + * `create_rows` - create_rows + + * `import_rows` - import_rows + + * `delete_row` - delete_row + + * `delete_rows` - delete_rows + + * `move_row` - move_row + + * `update_row` - update_row + + * `update_rows` - update_rows + + * `create_view` - create_view + + * `duplicate_view` - duplicate_view + + * `delete_view` - delete_view + + * `order_views` - order_views + + * `update_view` - update_view + + * `create_view_filter` - create_view_filter + + * `update_view_filter` - update_view_filter + + * `delete_view_filter` - delete_view_filter + + * `create_view_sort` - create_view_sort + + * `update_view_sort` - update_view_sort + + * `delete_view_sort` - delete_view_sort + + * `create_view_group` - create_view_group + + * `update_view_group` - update_view_group + + * `delete_view_group` - delete_view_group + + * `rotate_view_slug` - rotate_view_slug + + * `update_view_field_options` - update_view_field_options + + * `create_decoration` - create_decoration + + * `update_decoration` - update_decoration + + * `delete_decoration` - delete_decoration + + * `create_view_filter_group` - create_view_filter_group + + * `update_view_filter_group` - update_view_filter_group + + * `delete_view_filter_group` - delete_view_filter_group + + * `create_field` - create_field + + * `delete_field` - delete_field + + * `update_field` - update_field + + * `duplicate_field` - duplicate_field + + * `create_row_comment` - create_row_comment + + * `delete_row_comment` - delete_row_comment + + * `update_row_comment` - update_row_comment + + * `create_team` - create_team + + * `update_team` - update_team + + * `delete_team` - delete_team + + * `create_team_subject` - create_team_subject + + * `delete_team_subject` - delete_team_subject + + * `batch_assign_role` - batch_assign_role + filter_from_timestamp: + type: string + format: date-time + description: 'Optional: The start date to filter the audit log by.' + filter_to_timestamp: + type: string + format: date-time + description: 'Optional: The end date to filter the audit log by.' + exclude_columns: + type: string + description: >- + Optional: A comma separated list of column names to exclude from the + export. Available options are `user_email, user_id, workspace_name, + workspace_id, type, description, timestamp, ip_address`. + created_on: + type: string + format: date-time + readOnly: true + description: The date and time when the export job was created. + exported_file_name: + type: string + readOnly: true + description: The name of the file that was created by the export job. + required: + - created_on + - exported_file_name + - url + SingleDuplicateApplicationJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + duplicated_application: + allOf: + - $ref: '#/components/schemas/ApplicationApplication' + readOnly: true + required: + - duplicated_application + - id + - original_application + - progress_percentage + - state + - type + SingleDuplicateFieldJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_field: + allOf: + - $ref: '#/components/schemas/Field' + readOnly: true + duplicated_field: + allOf: + - $ref: '#/components/schemas/FieldSerializerWithRelatedFields' + readOnly: true + required: + - duplicated_field + - id + - original_field + - progress_percentage + - state + - type + SingleDuplicatePageJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + duplicated_page: + allOf: + - $ref: '#/components/schemas/Page' + readOnly: true + required: + - duplicated_page + - id + - original_page + - progress_percentage + - state + - type + SingleDuplicateTableJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + original_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + duplicated_table: + allOf: + - $ref: '#/components/schemas/Table' + readOnly: true + required: + - duplicated_table + - id + - original_table + - progress_percentage + - state + - type + SingleFileImportJobSerializerClass: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + database_id: + type: integer + description: Database id where the table will be created. + name: + type: string + description: The name of the new table. + maxLength: 255 + table_id: + type: integer + description: Table id where the data will be imported. + first_row_header: + type: boolean + default: false + report: + allOf: + - $ref: '#/components/schemas/Report' + description: Import error report. + required: + - database_id + - id + - progress_percentage + - report + - state + - type + SingleInstallTemplateJobType: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the job. + progress_percentage: + type: integer + description: >- + A percentage indicating how far along the job is. 100 means that + it's finished. + state: + type: string + description: Indicates the state of the import job. + human_readable_error: + type: string + description: A human readable error message indicating what went wrong. + workspace: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + template: + allOf: + - $ref: '#/components/schemas/Template' + readOnly: true + installed_applications: + type: object + additionalProperties: {} + readOnly: true + group: + allOf: + - $ref: '#/components/schemas/Workspace' + readOnly: true + required: + - group + - id + - installed_applications + - progress_percentage + - state + - template + - type + - workspace + SingleSelectFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - name + - type + SingleSelectFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - table_id + - type + SingleSelectFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + SingleSelectFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + select_options: + type: array + items: + $ref: '#/components/schemas/SelectOption' + Snapshot: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + snapshot_from_application: + type: integer + readOnly: true + created_by: + allOf: + - $ref: '#/components/schemas/User' + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + required: + - created_at + - created_by + - id + - name + - snapshot_from_application + SourceTypeEnum: + enum: + - url + - embed + type: string + description: |- + * `url` - Url + * `embed` - Embed + StateEnum: + enum: + - pending + - exporting + - cancelled + - finished + - failed + - expired + type: string + description: |- + * `pending` - pending + * `exporting` - exporting + * `cancelled` - cancelled + * `finished` - finished + * `failed` - failed + * `expired` - expired + StyleBackgroundEnum: + enum: + - none + - color + type: string + description: |- + * `none` - None + * `color` - Color + StyleEnum: + enum: + - star + - heart + - thumbs-up + - flag + - smile + type: string + description: |- + * `star` - Star + * `heart` - Heart + * `thumbs-up` - Thumbs-up + * `flag` - Flags + * `smile` - Smile + StyleImageConstraintEnum: + enum: + - cover + - contain + - full-width + type: string + description: |- + * `cover` - Cover + * `contain` - Contain + * `full-width` - Full Width + StyleWidthEnum: + enum: + - full + - normal + - medium + - small + type: string + description: |- + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + SubDomainCreateDomain: + type: object + properties: + type: + allOf: + - $ref: '#/components/schemas/Type0a6Enum' + description: |- + The type of the domain. + + * `custom` - custom + * `sub_domain` - sub_domain + domain_name: + type: string + maxLength: 255 + required: + - domain_name + - type + SubDomainDomain: + type: object + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the domain. + domain_name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + builder_id: + type: integer + readOnly: true + last_published: + type: string + format: date-time + nullable: true + description: Last publication date of this domain + required: + - builder_id + - domain_name + - id + - order + - type + SubjectType3ffEnum: + enum: + - auth.User + type: string + description: '* `auth.User` - auth.User' + SubjectTypeB9aEnum: + enum: + - auth.User + - anonymous + - user_source.user + - core.Token + - baserow_enterprise.Team + type: string + description: |- + * `auth.User` - auth.User + * `anonymous` - anonymous + * `user_source.user` - user_source.user + * `core.Token` - core.Token + * `baserow_enterprise.Team` - baserow_enterprise.Team + SubjectUser: + type: object + properties: + id: + type: integer + readOnly: true + username: + type: string + readOnly: true + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + first_name: + type: string + readOnly: true + email: + type: string + format: email + readOnly: true + title: Email address + required: + - email + - first_name + - id + - username + SubmitActionEnum: + enum: + - MESSAGE + - REDIRECT + type: string + description: |- + * `MESSAGE` - Message + * `REDIRECT` - Redirect + Table: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + database_id: + type: integer + readOnly: true + required: + - database_id + - id + - name + - order + TableCreate: + type: object + properties: + name: + type: string + maxLength: 255 + data: + type: array + items: {} + description: >- + A list of rows that needs to be created as initial table data. Each + row is a list of values that are going to be added in the new table + in the same order as provided. + + + Ex: + + ```json + + [ + ["row1_field1_value", "row1_field2_value"], + ["row2_field1_value", "row2_field2_value"], + ] + + ``` + + for creating a two rows table with two fields. + + + If not provided, some example data is going to be created. + minItems: 1 + first_row_header: + type: boolean + default: false + description: >- + Indicates if the first provided row is the header. If true the field + names are going to be the values of the first row. Otherwise they + will be called "Field N" + required: + - name + TableElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - order + - type + TableElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - page_id + - parent_element_id + - type + TableElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + required: + - id + - order + - parent_element_id + - type + TableElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + data_source_id: + type: integer + nullable: true + description: >- + The data source we want to show in the element for. Only + data_sources that return list are allowed. + fields: + type: array + items: + $ref: '#/components/schemas/CollectionField' + items_per_page: + type: integer + default: 20 + description: The amount item loaded with each page. + button_color: + type: string + default: primary + description: Button color. + maxLength: 20 + TableImport: + type: object + properties: + data: + type: array + items: {} + description: >- + A list of rows you want to add to the specified table. Each row is a + list of values, one for each **writable** field. The field values + must be ordered according to the field order in the table. All + values must be compatible with the corresponding field type. + + + Ex: + + ```json + + [ + ["row1_field1_value", "row1_field2_value"], + ["row2_field1_value", "row2_field2_value"], + ] + + ``` + + for adding two rows to a table with two writable fields. + minItems: 1 + required: + - data + TableSerializerWithFields: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + database_id: + type: integer + readOnly: true + fields: + type: array + items: + $ref: '#/components/schemas/LocalBaserowField' + description: Fields of this table + required: + - database_id + - fields + - id + - name + - order + TableWebhook: + type: object + properties: + id: + type: integer + readOnly: true + events: + type: object + additionalProperties: {} + readOnly: true + description: A list containing the events that will trigger this webhook. + headers: + type: object + additionalProperties: {} + readOnly: true + description: >- + The additional headers as an object where the key is the name and + the value the value. + calls: + type: array + items: + $ref: '#/components/schemas/TableWebhookCall' + description: All the calls that this webhook made. + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + name: + type: string + description: An internal name of the webhook. + maxLength: 255 + include_all_events: + type: boolean + description: Indicates whether this webhook should listen to all events. + failed_triggers: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The amount of failed webhook calls. + active: + type: boolean + description: >- + Indicates whether the web hook is active. When a webhook has failed + multiple times, it will automatically be deactivated. + required: + - calls + - created_on + - events + - headers + - id + - name + - updated_on + - url + TableWebhookCall: + type: object + properties: + id: + type: integer + readOnly: true + event_id: + type: string + format: uuid + readOnly: true + description: Event ID where the call originated from. + event_type: + type: string + maxLength: 50 + called_time: + type: string + format: date-time + nullable: true + called_url: + type: string + maxLength: 2000 + request: + type: string + nullable: true + description: A text copy of the request headers and body. + response: + type: string + nullable: true + description: A text copy of the response headers and body. + response_status: + type: integer + maximum: 2147483647 + minimum: -2147483648 + nullable: true + description: The HTTP response status code. + error: + type: string + nullable: true + description: An internal error reflecting what went wrong. + required: + - called_url + - event_id + - event_type + - id + TableWebhookCreateRequest: + type: object + properties: + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + include_all_events: + type: boolean + description: Indicates whether this webhook should listen to all events. + events: + type: array + items: + $ref: '#/components/schemas/Events3eaEnum' + description: A list containing the events that will trigger this webhook. + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + headers: + type: object + additionalProperties: {} + description: >- + The additional headers as an object where the key is the name and + the value the value. + name: + type: string + description: An internal name of the webhook. + maxLength: 255 + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + required: + - name + - url + TableWebhookTestCallRequest: + type: object + properties: + url: + type: string + description: The URL that must be called when the webhook is triggered. + maxLength: 2000 + event_type: + allOf: + - $ref: '#/components/schemas/EventTypeEnum' + description: |- + The event type that must be used for the test call. + + * `rows.created` - rows.created + * `row.created` - row.created + * `rows.updated` - rows.updated + * `row.updated` - row.updated + * `rows.deleted` - rows.deleted + * `row.deleted` - row.deleted + request_method: + allOf: + - $ref: '#/components/schemas/RequestMethodEnum' + description: |- + The request method that be used when the event occurs. + + * `POST` - Post + * `GET` - Get + * `PUT` - Put + * `PATCH` - Patch + * `DELETE` - Delete + headers: + type: object + additionalProperties: {} + description: >- + The additional headers as an object where the key is the name and + the value the value. + use_user_field_names: + type: boolean + description: >- + Indicates whether the field names must be used as payload key + instead of the id. + required: + - event_type + - url + TableWebhookTestCallResponse: + type: object + properties: + request: + type: string + readOnly: true + description: A text copy of the request headers and body. + response: + type: string + readOnly: true + description: A text copy of the response headers and body. + status_code: + type: integer + readOnly: true + description: The HTTP response status code. + is_unreachable: + type: boolean + readOnly: true + description: Indicates whether the provided URL could be reached. + required: + - is_unreachable + - request + - response + - status_code + TargetEnum: + enum: + - self + - blank + type: string + description: |- + * `self` - Self + * `blank` - Blank + Team: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + name: + type: string + description: A human friendly name for this team. + maxLength: 160 + default_role: + type: string + nullable: true + description: >- + The uid of the role you want to assign to the team in the given + workspace. You can omit this property if you want to remove the + role. + subjects: + type: array + items: + $ref: '#/components/schemas/TeamSubject' + default: [] + description: >- + An array of subject ID/type objects to be used during team create + and update. + required: + - name + TeamResponse: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + description: A human friendly name for this team. + maxLength: 160 + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: The workspace that this team belongs to. + created_on: + type: string + format: date-time + readOnly: true + updated_on: + type: string + format: date-time + readOnly: true + default_role: + type: string + description: The uid of the role this team has in its workspace. + subject_count: + type: integer + description: >- + The amount of subjects (e.g. users) that are currently assigned to + this team. + subject_sample: + type: array + items: + $ref: '#/components/schemas/TeamSampleSubject' + description: >- + A sample, by default 10, of the most recent subjects to join this + team. + required: + - created_on + - group + - id + - name + - subject_count + - updated_on + - workspace + TeamSampleSubject: + type: object + properties: + subject_id: + type: integer + description: The subject's unique identifier. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectType3ffEnum' + description: |- + The type of subject who belongs to the team. + + * `auth.User` - auth.User + subject_label: + type: string + description: The subject's label. Defaults to a user's first name. + team_subject_id: + type: integer + description: The team subject unique identifier. + required: + - subject_id + - subject_label + - subject_type + - team_subject_id + TeamSubject: + type: object + description: >- + Mixin to a DRF serializer class to raise an exception if data with + unknown fields + + is provided to the serializer. + properties: + id: + type: integer + readOnly: true + subject_id: + type: integer + description: The subject's unique identifier. + subject_user_email: + type: string + format: email + description: The user subject's email address. + subject_type: + allOf: + - $ref: '#/components/schemas/SubjectType3ffEnum' + description: |- + The type of subject that is being invited. + + * `auth.User` - auth.User + required: + - id + - subject_type + TeamSubjectResponse: + type: object + properties: + id: + type: integer + readOnly: true + subject_id: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: The unique subject ID. + subject_type: + type: string + description: |- + Returns the TeamSubject's `subject_type` natural key. + + :param obj: The TeamSubject record. + :return: The subject's content type natural key. + readOnly: true + team: + type: integer + description: The team this subject belongs to. + required: + - id + - subject_id + - subject_type + - team + Template: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 64 + icon: + type: string + description: The icon class name that can be used for displaying purposes. + maxLength: 32 + keywords: + type: string + description: Keywords related to the template that can be used for search. + group_id: + type: string + readOnly: true + workspace_id: + type: integer + nullable: true + description: >- + The group containing the applications related to the template. The + read endpoints related to that group are publicly accessible for + preview purposes. + readOnly: true + is_default: + type: string + readOnly: true + description: >- + Indicates if the template must be selected by default. The + web-frontend automatically selects the first `is_default` template + that it can find. + required: + - group_id + - icon + - id + - is_default + - name + - workspace_id + TemplateCategories: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 32 + templates: + type: array + items: + $ref: '#/components/schemas/Template' + readOnly: true + required: + - id + - name + - templates + TextElementCreateElement: + type: object + description: >- + This serializer allow to set the type of an element and the element id + before which + + we want to insert the new element. + properties: + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + before_id: + type: integer + description: >- + If provided, creates the element before the element with the given + id. + type: + allOf: + - $ref: '#/components/schemas/Type2a6Enum' + description: |- + The type of the element. + + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + parent_element_id: + type: integer + nullable: true + description: >- + If provided, creates the element as a child of the element with the + given id. + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + required: + - order + - type + TextElementElement: + type: object + description: |- + Basic element serializer mostly for returned values. + + 👉 Mind to update the + baserow.contrib.builder.api.domains.serializer.PublicElementSerializer + when you update this one. + properties: + id: + type: integer + readOnly: true + page_id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + required: + - id + - order + - page_id + - parent_element_id + - type + TextElementPublicElement: + type: object + description: Basic element serializer mostly for returned values. + properties: + id: + type: integer + readOnly: true + type: + type: string + readOnly: true + description: The type of the element. + order: + type: string + format: decimal + pattern: ^-?\d{0,20}(?:\.\d{0,20})?$ + readOnly: true + description: Lowest first. + parent_element_id: + type: integer + nullable: true + description: The parent element, if inside a container. + readOnly: true + place_in_container: + type: string + nullable: true + description: The place in the container. + maxLength: 255 + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + required: + - id + - order + - parent_element_id + - type + TextElementUpdateElement: + type: object + properties: + style_border_top_color: + type: string + description: Top border color. + maxLength: 20 + style_border_top_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the top border. + style_padding_top: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the top border. + style_border_bottom_color: + type: string + description: Bottom border color + maxLength: 20 + style_border_bottom_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the bottom border. + style_padding_bottom: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the bottom border. + style_border_left_color: + type: string + description: Left border color + maxLength: 20 + style_border_left_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the left border. + style_padding_left: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the left border. + style_border_right_color: + type: string + description: Right border color + maxLength: 20 + style_border_right_size: + type: integer + maximum: 2147483647 + minimum: 0 + description: Pixel height of the right border. + style_padding_right: + type: integer + maximum: 2147483647 + minimum: 0 + description: Padding size of the right border. + style_background: + allOf: + - $ref: '#/components/schemas/StyleBackgroundEnum' + description: |- + What type of background the element should have. + + * `none` - None + * `color` - Color + style_background_color: + type: string + description: The background color if `style_background` is color. + maxLength: 20 + style_width: + allOf: + - $ref: '#/components/schemas/StyleWidthEnum' + description: |- + Indicates the width of the element. + + * `full` - Full + * `normal` - Normal + * `medium` - Medium + * `small` - Small + value: + type: string + default: '' + description: The value of the element. Must be a formula. + alignment: + $ref: '#/components/schemas/Alignment675Enum' + format: + allOf: + - $ref: '#/components/schemas/FormatEnum' + default: plain + description: |- + The format of the text + + * `plain` - Plain + * `markdown` - Markdown + TextFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + required: + - name + - type + TextFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + required: + - id + - name + - order + - read_only + - table_id + - type + TextFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + TextFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + text_default: + type: string + description: >- + If set, this value is going to be added every time a new row + created. + maxLength: 255 + Token: + type: object + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + properties: + id: + type: integer + readOnly: true + name: + type: string + description: The human readable name of the database token for the user. + maxLength: 100 + group: + type: string + readOnly: true + workspace: + type: integer + description: Only the tables of the workspace can be accessed. + key: + type: string + description: >- + The unique token key that can be used to authorize for the table row + endpoints. + maxLength: 32 + permissions: + type: object + description: >- + Indicates per operation which permissions the database token has + within the whole workspace. If the value of for example `create` is + `true`, then the token can create rows in all tables related to the + workspace. If a list is provided with for example `[["table", 1]]` + then the token only has create permissions for the table with id 1. + Same goes for if a database references is provided. `[['database', + 1]]` means create permissions for all tables in the database with id + 1. + + + Example: + + ```json + + { + "create": true// Allows creating rows in all tables. + // Allows reading rows from database 1 and table 10. + "read": [["database", 1], ["table", 10]], + "update": false // Denies updating rows in all tables. + "delete": [] // Denies deleting rows in all tables. + } + ``` + properties: + create: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + read: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + update: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + delete: + anyOf: + - type: boolean + description: >- + Indicating if the database token has permissions to all + tables. + example: true + - type: array + items: + type: array + minItems: 2 + maxItems: 2 + items: + anyOf: + - type: string + example: database + description: >- + First element should indicate the reference type + `database` or `table`. + - type: number + example: 1 + description: >- + Second element should indicate the ID of the + reference. + required: + - group + - id + - key + - name + - permissions + - workspace + TokenBlacklist: + type: object + properties: + refresh: + type: string + required: + - refresh + TokenCreate: + type: object + description: >- + A mixin that allows us to rename the `group` field to `workspace` when + serializing. + properties: + name: + type: string + description: The human readable name of the database token for the user. + maxLength: 100 + group: + type: string + readOnly: true + workspace: + type: integer + description: Only the tables of the workspace can be accessed. + required: + - group + - name + - workspace + TokenObtainPair: + type: object + properties: + username: + type: string + writeOnly: true + password: + type: string + writeOnly: true + access: + type: string + readOnly: true + refresh: + type: string + readOnly: true + required: + - access + - password + - refresh + - username + TokenObtainPairWithUser: + type: object + properties: + email: + type: string + format: email + username: + type: string + format: email + description: Deprecated. Use `email` instead. + deprecated: true + password: + type: string + writeOnly: true + required: + - password + TokenRefreshWithUser: + type: object + properties: + access: + type: string + readOnly: true + refresh_token: + type: string + token: + type: string + description: Deprecated. Use `refresh_token` instead. + deprecated: true + required: + - access + TokenVerifyWithUser: + type: object + properties: + token: + type: string + description: Deprecated. Use `refresh_token` instead. + deprecated: true + refresh_token: + type: string + required: + - refresh_token + TrashContents: + type: object + properties: + id: + type: integer + readOnly: true + user_who_trashed: + type: string + readOnly: true + trash_item_type: + type: string + description: |- + If an API consumer hasn't yet adopted the "workspace" + `trash_item_type`, give them the option to return "group" + by testing the `respond_with_workspace_rename` querystring. + readOnly: true + trash_item_id: + type: integer + maximum: 2147483647 + minimum: 0 + parent_trash_item_id: + type: integer + maximum: 2147483647 + minimum: 0 + nullable: true + trashed_at: + type: string + format: date-time + readOnly: true + application: + type: integer + nullable: true + group: + type: integer + workspace: + type: integer + name: + type: string + names: + type: array + items: + type: string + nullable: true + parent_name: + type: string + nullable: true + required: + - group + - id + - name + - trash_item_id + - trash_item_type + - trashed_at + - user_who_trashed + - workspace + TrashItemTypeEnum: + enum: + - workspace + - application + - group + - table + - field + - row + - rows + - view + - builder_domain + - row_comment + - team + type: string + description: |- + * `workspace` - workspace + * `application` - application + * `group` - group + * `table` - table + * `field` - field + * `row` - row + * `rows` - rows + * `view` - view + * `builder_domain` - builder_domain + * `row_comment` - row_comment + * `team` - team + TrashStructure: + type: object + properties: + groups: + type: array + items: + $ref: '#/components/schemas/TrashStructureGroup' + description: >- + An array of group trash structure records. Deprecated, please use + `workspaces`. + workspaces: + type: array + items: + $ref: '#/components/schemas/TrashStructureGroup' + description: An array of workspace trash structure records + required: + - groups + - workspaces + TrashStructureApplication: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 160 + trashed: + type: boolean + required: + - id + - name + TrashStructureGroup: + type: object + properties: + id: + type: integer + minimum: 0 + trashed: + type: boolean + name: + type: string + applications: + type: array + items: + $ref: '#/components/schemas/TrashStructureApplication' + required: + - applications + - id + - name + - trashed + Type0a6Enum: + enum: + - custom + - sub_domain + type: string + description: |- + * `custom` - custom + * `sub_domain` - sub_domain + Type2a6Enum: + enum: + - heading + - text + - link + - image + - input_text + - column + - button + - table + - form_container + - dropdown + - checkbox + - iframe + - auth_form + type: string + description: |- + * `heading` - heading + * `text` - text + * `link` - link + * `image` - image + * `input_text` - input_text + * `column` - column + * `button` - button + * `table` - table + * `form_container` - form_container + * `dropdown` - dropdown + * `checkbox` - checkbox + * `iframe` - iframe + * `auth_form` - auth_form + Type5f7Enum: + enum: + - local_baserow + type: string + description: '* `local_baserow` - local_baserow' + Type60cEnum: + enum: + - notification + - open_page + - create_row + - update_row + - logout + type: string + description: |- + * `notification` - notification + * `open_page` - open_page + * `create_row` - create_row + * `update_row` - update_row + * `logout` - logout + Type880Enum: + enum: + - 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 + - lower_than + - 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 + - single_select_equal + - single_select_not_equal + - 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 + type: string + description: |- + * `equal` - equal + * `not_equal` - not_equal + * `filename_contains` - filename_contains + * `files_lower_than` - files_lower_than + * `has_file_type` - has_file_type + * `contains` - contains + * `contains_not` - contains_not + * `contains_word` - contains_word + * `doesnt_contain_word` - doesnt_contain_word + * `length_is_lower_than` - length_is_lower_than + * `higher_than` - higher_than + * `lower_than` - lower_than + * `is_even_and_whole` - is_even_and_whole + * `date_equal` - date_equal + * `date_before` - date_before + * `date_before_or_equal` - date_before_or_equal + * `date_after_days_ago` - date_after_days_ago + * `date_after` - date_after + * `date_after_or_equal` - date_after_or_equal + * `date_not_equal` - date_not_equal + * `date_equals_today` - date_equals_today + * `date_before_today` - date_before_today + * `date_after_today` - date_after_today + * `date_within_days` - date_within_days + * `date_within_weeks` - date_within_weeks + * `date_within_months` - date_within_months + * `date_equals_days_ago` - date_equals_days_ago + * `date_equals_months_ago` - date_equals_months_ago + * `date_equals_years_ago` - date_equals_years_ago + * `date_equals_week` - date_equals_week + * `date_equals_month` - date_equals_month + * `date_equals_day_of_month` - date_equals_day_of_month + * `date_equals_year` - date_equals_year + * `single_select_equal` - single_select_equal + * `single_select_not_equal` - single_select_not_equal + * `link_row_has` - link_row_has + * `link_row_has_not` - link_row_has_not + * `link_row_contains` - link_row_contains + * `link_row_not_contains` - link_row_not_contains + * `boolean` - boolean + * `empty` - empty + * `not_empty` - not_empty + * `multiple_select_has` - multiple_select_has + * `multiple_select_has_not` - multiple_select_has_not + * `multiple_collaborators_has` - multiple_collaborators_has + * `multiple_collaborators_has_not` - multiple_collaborators_has_not + * `user_is` - user_is + * `user_is_not` - user_is_not + TypeC03Enum: + enum: + - local_baserow_get_row + - local_baserow_list_rows + - local_baserow_upsert_row + type: string + description: |- + * `local_baserow_get_row` - local_baserow_get_row + * `local_baserow_list_rows` - local_baserow_list_rows + * `local_baserow_upsert_row` - local_baserow_upsert_row + TypeC5eEnum: + enum: + - duplicate_application + - install_template + - create_snapshot + - restore_snapshot + - airtable + - file_import + - duplicate_table + - duplicate_field + - duplicate_page + - publish_domain + - audit_log_export + type: string + description: |- + * `duplicate_application` - duplicate_application + * `install_template` - install_template + * `create_snapshot` - create_snapshot + * `restore_snapshot` - restore_snapshot + * `airtable` - airtable + * `file_import` - file_import + * `duplicate_table` - duplicate_table + * `duplicate_field` - duplicate_field + * `duplicate_page` - duplicate_page + * `publish_domain` - publish_domain + * `audit_log_export` - audit_log_export + TypeD64Enum: + enum: + - text + - long_text + - url + - email + - number + - rating + - boolean + - date + - last_modified + - last_modified_by + - created_on + - created_by + - duration + - link_row + - file + - single_select + - multiple_select + - phone_number + - formula + - count + - rollup + - lookup + - multiple_collaborators + - uuid + - autonumber + - password + type: string + description: |- + * `text` - text + * `long_text` - long_text + * `url` - url + * `email` - email + * `number` - number + * `rating` - rating + * `boolean` - boolean + * `date` - date + * `last_modified` - last_modified + * `last_modified_by` - last_modified_by + * `created_on` - created_on + * `created_by` - created_by + * `duration` - duration + * `link_row` - link_row + * `file` - file + * `single_select` - single_select + * `multiple_select` - multiple_select + * `phone_number` - phone_number + * `formula` - formula + * `count` - count + * `rollup` - rollup + * `lookup` - lookup + * `multiple_collaborators` - multiple_collaborators + * `uuid` - uuid + * `autonumber` - autonumber + * `password` - password + TypeF4fEnum: + enum: + - database + - builder + type: string + description: |- + * `database` - database + * `builder` - builder + TypeFc4Enum: + enum: + - left_border_color + - background_color + type: string + description: |- + * `left_border_color` - left_border_color + * `background_color` - background_color + TypeFormulaRequest: + type: object + properties: + formula: + type: string + name: + type: string + maxLength: 255 + required: + - formula + - name + TypeFormulaResult: + type: object + properties: + date_time_format: + nullable: true + description: |- + 24 (14:30) or 12 (02:30 PM) + + * `24` - 24 hour + * `12` - 12 hour + oneOf: + - $ref: '#/components/schemas/DateTimeFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_include_time: + type: boolean + nullable: true + description: Indicates if the field also includes a time. + array_formula_type: + nullable: true + oneOf: + - $ref: '#/components/schemas/ArrayFormulaTypeEnum' + - $ref: '#/components/schemas/NullEnum' + duration_format: + nullable: true + description: |- + The format of the duration. + + * `h:mm` - hours:minutes + * `h:mm:ss` - hours:minutes:seconds + * `h:mm:ss.s` - hours:minutes:seconds:deciseconds + * `h:mm:ss.ss` - hours:minutes:seconds:centiseconds + * `h:mm:ss.sss` - hours:minutes:seconds:milliseconds + * `d h` - days:hours + * `d h:mm` - days:hours:minutes + * `d h:mm:ss` - days:hours:minutes:seconds + oneOf: + - $ref: '#/components/schemas/DurationFormatEnum' + - $ref: '#/components/schemas/NullEnum' + date_force_timezone: + type: string + nullable: true + description: Force a timezone for the field overriding user profile settings. + maxLength: 255 + date_format: + nullable: true + description: |- + EU (20/02/2020), US (02/20/2020) or ISO (2020-02-20) + + * `EU` - European (D/M/Y) + * `US` - US (M/D/Y) + * `ISO` - ISO (Y-M-D) + oneOf: + - $ref: '#/components/schemas/DateFormatEnum' + - $ref: '#/components/schemas/NullEnum' + number_decimal_places: + nullable: true + description: |- + The amount of digits allowed after the point. + + * `0` - 1 + * `1` - 1.0 + * `2` - 1.00 + * `3` - 1.000 + * `4` - 1.0000 + * `5` - 1.00000 + * `6` - 1.000000 + * `7` - 1.0000000 + * `8` - 1.00000000 + * `9` - 1.000000000 + * `10` - 1.0000000000 + minimum: -2147483648 + maximum: 2147483647 + oneOf: + - $ref: '#/components/schemas/NumberDecimalPlacesEnum' + - $ref: '#/components/schemas/NullEnum' + nullable: + type: boolean + error: + type: string + nullable: true + date_show_tzinfo: + type: boolean + nullable: true + description: Indicates if the time zone should be shown. + formula: + type: string + formula_type: + $ref: '#/components/schemas/FormulaTypeEnum' + required: + - formula + - nullable + URLFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + URLFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + URLFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + URLFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + UUIDFieldCreateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + required: + - name + - type + UUIDFieldField: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + required: + - id + - name + - order + - read_only + - table_id + - type + UUIDFieldFieldSerializerWithRelatedFields: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + description: Lowest first. + type: + type: string + readOnly: true + description: The type of the related field. + primary: + type: boolean + description: >- + Indicates if the field is a primary field. If `true` the field + cannot be deleted and the value should represent the whole row. + read_only: + type: boolean + readOnly: true + description: >- + Indicates whether the field is a read only field. If true, it's not + possible to update the cell value. + related_fields: + type: array + items: + $ref: '#/components/schemas/Field' + readOnly: true + description: A list of related fields which also changed. + required: + - id + - name + - order + - read_only + - related_fields + - table_id + - type + UUIDFieldUpdateField: + type: object + properties: + name: + type: string + maxLength: 255 + type: + $ref: '#/components/schemas/TypeD64Enum' + UndoRedoAction: + type: object + properties: + action_type: + type: string + nullable: true + description: >- + If an action was undone/redone/skipped due to an error this field + will contain the type of the action that was undone/redone. + action_scope: + type: string + nullable: true + description: >- + If an action was undone/redone/skipped due to an error this field + will contain the scope of the action that was undone/redone. + UndoRedoResponse: + type: object + properties: + actions: + type: array + items: + $ref: '#/components/schemas/UndoRedoAction' + result_code: + type: string + description: >- + Indicates the result of the undo/redo operation. Will be 'SUCCESS' + on success, 'NOTHING_TO_DO' when there is no action to undo/redo and + 'SKIPPED_DUE_TO_ERROR' when the undo/redo failed due to a conflict + or error and was skipped over. + required: + - actions + - result_code + UniqueRowValues: + type: object + properties: + values: + type: array + items: + type: string + required: + - values + User: + type: object + properties: + username: + type: string + description: >- + Required. 150 characters or fewer. Letters, digits and @/./+/-/_ + only. + pattern: ^[\w.@+-]+$ + maxLength: 150 + required: + - username + UserAdminCreate: + type: object + description: >- + Serializes a request body for creating a new user. Do not use for + returning user + + data as the password will be returned also. + properties: + username: + type: string + format: email + name: + type: string + maxLength: 150 + is_active: + type: boolean + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + is_staff: + type: boolean + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + password: + type: string + required: + - name + - password + - username + UserAdminGroups: + type: object + properties: + id: + type: integer + name: + type: string + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + required: + - id + - name + UserAdminResponse: + type: object + description: >- + Serializes the safe user attributes to expose for a response back to the + user. + properties: + id: + type: integer + readOnly: true + username: + type: string + format: email + name: + type: string + maxLength: 150 + groups: + type: array + items: + $ref: '#/components/schemas/UserAdminGroups' + workspaces: + type: array + items: + $ref: '#/components/schemas/UserAdminGroups' + last_login: + type: string + format: date-time + nullable: true + date_joined: + type: string + format: date-time + is_active: + type: boolean + title: Active + description: >- + Designates whether this user should be treated as active. Set this + to false instead of deleting accounts. + is_staff: + type: boolean + title: Staff status + description: >- + Designates whether this user is an admin and has access to all + workspaces and Baserow's admin areas. + required: + - groups + - id + - name + - username + - workspaces + UserFile: + type: object + properties: + size: + type: integer + maximum: 2147483647 + minimum: 0 + mime_type: + type: string + maxLength: 127 + is_image: + type: boolean + image_width: + type: integer + maximum: 32767 + minimum: 0 + nullable: true + image_height: + type: integer + maximum: 32767 + minimum: 0 + nullable: true + uploaded_at: + type: string + format: date-time + readOnly: true + url: + type: string + format: uri + readOnly: true + thumbnails: + type: object + additionalProperties: {} + readOnly: true + name: + type: string + readOnly: true + original_name: + type: string + maxLength: 255 + required: + - name + - original_name + - size + - thumbnails + - uploaded_at + - url + UserFileUploadViaURLRequest: + type: object + properties: + url: + type: string + format: uri + required: + - url + UserSourceUser: + type: object + description: A serializer used to serialize a UserSourceUser object. + properties: + id: + type: integer + username: + type: string + email: + type: string + format: email + user_source_id: + type: integer + required: + - email + - id + - user_source_id + - username + UserWorkspaceInvitation: + type: object + description: >- + This serializer is used for displaying the invitation to the user that + doesn't + + have access to the workspace yet, so not for invitation management + purposes. + properties: + id: + type: integer + readOnly: true + invited_by: + type: string + readOnly: true + group: + type: string + readOnly: true + workspace: + type: string + readOnly: true + email: + type: string + format: email + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + maxLength: 254 + message: + type: string + readOnly: true + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + created_on: + type: string + format: date-time + readOnly: true + email_exists: + type: boolean + readOnly: true + required: + - created_on + - email + - email_exists + - group + - id + - invited_by + - message + - workspace + User_SourceBasePublicUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceBasePublicUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceBasePublicUserSource' + User_SourceCreateUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceCreateUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceCreateUserSource' + User_SourceUserSource: + oneOf: + - $ref: '#/components/schemas/LocalBaserowUserSourceUserSource' + discriminator: + propertyName: type + mapping: + local_baserow: '#/components/schemas/LocalBaserowUserSourceUserSource' + UsersPerUserSource: + type: object + description: The response of the list user source users endpoint. + properties: + users_per_user_sources: + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/UserSourceUser' + description: >- + An object keyed by the id of the user source and the value being the + list of users for this user source. + required: + - users_per_user_sources + ValueProviderTypeEnum: + enum: + - single_select_color + - conditional_color + type: string + description: |- + * `` - + * `single_select_color` - single_select_color + * `conditional_color` - conditional_color + VariantEnum: + enum: + - link + - button + type: string + description: |- + * `link` - Link + * `button` - Button + View: + type: object + properties: + id: + type: integer + readOnly: true + table_id: + type: integer + readOnly: true + name: + type: string + maxLength: 255 + order: + type: integer + maximum: 2147483647 + minimum: 0 + type: + type: string + readOnly: true + table: + $ref: '#/components/schemas/Table' + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters: + type: array + items: + $ref: '#/components/schemas/ViewFilter' + filter_groups: + type: array + items: + $ref: '#/components/schemas/ViewFilterGroup' + sortings: + type: array + items: + $ref: '#/components/schemas/ViewSort' + group_bys: + type: array + items: + $ref: '#/components/schemas/ViewGroupBy' + decorations: + type: array + items: + $ref: '#/components/schemas/ViewDecoration' + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_has_password: + type: boolean + description: >- + Indicates whether the public view is password protected or not. + + + :return: True if the public view is password protected, False + otherwise. + readOnly: true + show_logo: + type: boolean + ownership_type: + type: string + owned_by_id: + type: integer + required: + - id + - name + - order + - ownership_type + - public_view_has_password + - table + - table_id + - type + ViewCreateView: + oneOf: + - $ref: '#/components/schemas/GridViewCreateView' + - $ref: '#/components/schemas/GalleryViewCreateView' + - $ref: '#/components/schemas/FormViewCreateView' + - $ref: '#/components/schemas/KanbanViewCreateView' + - $ref: '#/components/schemas/CalendarViewCreateView' + discriminator: + propertyName: type + mapping: + grid: '#/components/schemas/GridViewCreateView' + gallery: '#/components/schemas/GalleryViewCreateView' + form: '#/components/schemas/FormViewCreateView' + kanban: '#/components/schemas/KanbanViewCreateView' + calendar: '#/components/schemas/CalendarViewCreateView' + ViewDecoration: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the decoration applies. Each view can have his own + decorations. + type: + type: string + description: >- + The decorator type. This is then interpreted by the frontend to + display the decoration. + maxLength: 255 + value_provider_type: + type: string + description: The value provider type that gives the value to the decorator. + maxLength: 255 + value_provider_conf: + type: object + additionalProperties: {} + description: The configuration consumed by the value provider. + order: + type: integer + maximum: 32767 + minimum: -32768 + description: >- + The position of the decorator has within the view, lowest first. If + there is another decorator with the same order value then the + decorator with the lowest id must be shown first. + required: + - id + ViewFieldOptions: + anyOf: + - $ref: '#/components/schemas/grid_view_field_options' + - $ref: '#/components/schemas/gallery_view_field_options' + - $ref: '#/components/schemas/form_view_field_options' + - $ref: '#/components/schemas/kanban_view_field_options' + - $ref: '#/components/schemas/calendar_view_field_options' + ViewFilter: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the filter applies. Each view can have his own + filters. + field: + type: integer + description: The field of which the value must be compared to the filter value. + type: + type: string + description: >- + Indicates how the field's value must be compared to the filter's + value. The filter is always in this order `field` `type` `value` + (example: `field_1` `contains` `Test`). + maxLength: 48 + value: + type: string + description: The filter value that must be compared to the field's value. + maxLength: 255 + preload_values: + type: object + additionalProperties: {} + readOnly: true + description: >- + Can contain unique preloaded values per filter. This is for example + used by the `link_row_has` filter to communicate the display name if + a value is provided. + group: + type: integer + nullable: true + description: >- + The id of the filter group this filter belongs to. If this is null, + the filter is not part of a filter group. + required: + - field + - id + - preload_values + - type + - view + ViewFilterGroup: + type: object + properties: + id: + type: integer + readOnly: true + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR) in the group to be shown. + + + * `AND` - And + + * `OR` - Or + view: + type: integer + description: >- + The view to which the filter group applies to. Each view can have + its own filter groups. + required: + - id + - view + ViewGroupBy: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the group by applies. Each view can have his own + group bys. + field: + type: integer + description: The field that must be grouped by. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + width: + type: integer + maximum: 2147483647 + minimum: 0 + description: The pixel width of the group by in the related view. + required: + - field + - id + - view + ViewSort: + type: object + properties: + id: + type: integer + readOnly: true + view: + type: integer + description: >- + The view to which the sort applies. Each view can have his own + sortings. + field: + type: integer + description: The field that must be sorted on. + order: + allOf: + - $ref: '#/components/schemas/OrderEnum' + description: >- + Indicates the sort order direction. ASC (Ascending) is from A to Z + and DESC (Descending) is from Z to A. + + + * `ASC` - Ascending + + * `DESC` - Descending + required: + - field + - id + - view + ViewTypesEnum: + enum: + - grid + - gallery + - form + - kanban + - calendar + type: string + description: |- + * `grid` - grid + * `gallery` - gallery + * `form` - form + * `kanban` - kanban + * `calendar` - calendar + ViewView: + oneOf: + - $ref: '#/components/schemas/GridViewView' + - $ref: '#/components/schemas/GalleryViewView' + - $ref: '#/components/schemas/FormViewView' + - $ref: '#/components/schemas/KanbanViewView' + - $ref: '#/components/schemas/CalendarViewView' + discriminator: + propertyName: type + mapping: + grid: '#/components/schemas/GridViewView' + gallery: '#/components/schemas/GalleryViewView' + form: '#/components/schemas/FormViewView' + kanban: '#/components/schemas/KanbanViewView' + calendar: '#/components/schemas/CalendarViewView' + WidthEnum: + enum: + - auto + - full + type: string + description: |- + * `auto` - Auto + * `full` - Full + Workspace: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + required: + - id + - name + WorkspaceAdminUsers: + type: object + properties: + id: + type: integer + email: + type: string + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + required: + - email + - id + WorkspaceInvitation: + type: object + properties: + id: + type: integer + readOnly: true + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: >- + The workspace that the user will get access to once the invitation + is accepted. + email: + type: string + format: email + description: >- + The email address of the user that the invitation is meant for. Only + a user with that email address can accept it. + maxLength: 254 + permissions: + type: string + description: >- + The permissions that the user is going to get within the workspace + after accepting the invitation. + maxLength: 32 + message: + type: string + description: >- + An optional message that the invitor can provide. This will be + visible to the receiver of the invitation. + maxLength: 250 + created_on: + type: string + format: date-time + readOnly: true + required: + - created_on + - email + - group + - id + - workspace + WorkspaceUser: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + readOnly: true + description: User defined name. + email: + type: string + readOnly: true + description: User email. + group: + type: integer + description: >- + DEPRECATED: Please use the functionally identical `workspace` + instead as this field is being removed in the future. + workspace: + type: integer + description: The workspace that the user has access to. + permissions: + type: string + description: The permissions that the user has within the workspace. + maxLength: 32 + created_on: + type: string + format: date-time + readOnly: true + user_id: + type: integer + description: The user that has access to the workspace. + readOnly: true + to_be_deleted: + type: boolean + description: True if user account is pending deletion. + required: + - created_on + - email + - group + - id + - name + - to_be_deleted + - user_id + - workspace + WorkspaceUserEnterpriseTeam: + type: object + description: A serializer for the `WorkspaceUserSerializer.teams` field. + properties: + id: + type: integer + readOnly: true + description: The unique identifier for this team. + name: + type: string + readOnly: true + description: The team name that this group user belongs to. + required: + - id + - name + WorkspaceUserWorkspace: + type: object + description: >- + This serializers includes relevant fields of the Workspace model, but + also + + some WorkspaceUser specific fields related to the workspace user + relation. + + + Additionally, the list of users are included for each workspace. + properties: + id: + type: integer + readOnly: true + description: Workspace id. + name: + type: string + readOnly: true + description: Workspace name. + users: + type: array + items: + $ref: '#/components/schemas/WorkspaceUser' + readOnly: true + description: List of all workspace users. + order: + type: integer + readOnly: true + description: The requesting user's order within the workspace users. + permissions: + type: string + readOnly: true + description: The requesting user's permissions for the workspace. + unread_notifications_count: + type: integer + readOnly: true + description: The number of unread notifications for the requesting user. + required: + - id + - name + - order + - permissions + - unread_notifications_count + - users + WorkspacesAdminResponse: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 165 + users: + type: array + items: + $ref: '#/components/schemas/WorkspaceAdminUsers' + application_count: + type: integer + row_count: + type: integer + readOnly: true + storage_usage: + type: integer + maximum: 2147483647 + minimum: -2147483648 + nullable: true + seats_taken: + type: integer + free_users: + type: integer + readOnly: true + created_on: + type: string + format: date-time + readOnly: true + required: + - application_count + - created_on + - free_users + - id + - name + - row_count + - seats_taken + - users + calendar_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/CalendarViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + calendar_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + date_field: + type: integer + nullable: true + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + form_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/FormViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + form_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + title: + type: string + description: The title that is displayed at the beginning of the form. + description: + type: string + description: The description that is displayed at the beginning of the form. + mode: + allOf: + - $ref: '#/components/schemas/ModeC5eEnum' + description: |- + Configurable mode of the form. + + * `form` - form + * `survey` - survey + cover_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The cover image that must be displayed at the top of the form. + logo_image: + allOf: + - $ref: '#/components/schemas/UserFile' + nullable: true + description: The logo image that must be displayed at the top of the form. + submit_text: + type: string + description: The text displayed on the submit button. + submit_action: + allOf: + - $ref: '#/components/schemas/SubmitActionEnum' + description: >- + The action that must be performed after the visitor has filled out + the form. + + + * `MESSAGE` - Message + + * `REDIRECT` - Redirect + submit_action_message: + type: string + description: >- + If the `submit_action` is MESSAGE, then this message will be shown + to the visitor after submitting the form. + submit_action_redirect_url: + type: string + format: uri + description: >- + If the `submit_action` is REDIRECT,then the visitors will be + redirected to the this URL after submitting the form. + maxLength: 200 + receive_notification_on_submit: + type: boolean + readOnly: true + description: >- + A boolean indicating if the current user should be notified when the + form is submitted. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - receive_notification_on_submit + - slug + gallery_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GalleryViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + gallery_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + grid_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/GridViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + grid_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + row_identifier_type: + $ref: '#/components/schemas/RowIdentifierTypeEnum' + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + kanban_view_field_options: + type: object + properties: + field_options: + type: object + additionalProperties: + $ref: '#/components/schemas/KanbanViewFieldOptions' + description: >- + An object containing the field id as key and the properties related + to view as value. + required: + - field_options + kanban_view_update: + type: object + properties: + name: + type: string + maxLength: 255 + filter_type: + allOf: + - $ref: '#/components/schemas/ConditionTypeEnum' + description: >- + Indicates whether all the rows should apply to all filters (AND) or + to any filter (OR). + + + * `AND` - And + + * `OR` - Or + filters_disabled: + type: boolean + description: >- + Allows users to see results unfiltered while still keeping the + filters saved for the view. + public_view_password: + type: string + description: >- + The new password or an empty string to remove any previous password + from the view and make it publicly accessible again. + maxLength: 256 + minLength: 8 + ownership_type: + type: string + description: >- + Indicates how the access to the view is determined. By default, + views are collaborative and shared for all users that have access to + the table. + maxLength: 255 + single_select_field: + type: integer + nullable: true + card_cover_image_field: + type: integer + nullable: true + description: >- + References a file field of which the first image must be shown as + card cover image. + public: + type: boolean + description: Indicates whether the view is publicly accessible to visitors. + slug: + type: string + readOnly: true + description: The unique slug that can be used to construct a public URL. + required: + - slug + public_Builder_Workflow_Action_TypeBuilderWorkflowAction: + oneOf: + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + - $ref: '#/components/schemas/PublicNone' + discriminator: + propertyName: type + mapping: + public_notification: '#/components/schemas/PublicNone' + public_open_page: '#/components/schemas/PublicNone' + public_create_row: '#/components/schemas/PublicNone' + public_update_row: '#/components/schemas/PublicNone' + public_logout: '#/components/schemas/PublicNone' + securitySchemes: + Database token: + type: http + scheme: bearer + bearerFormat: Token your_token + JWT: + type: http + scheme: bearer + bearerFormat: JWT your_token +tags: + - name: Settings + - name: User + - name: User files + - name: Groups + - name: Group invitations + - name: Workspaces + - name: Workspace invitations + - name: Templates + - name: Trash + - name: Applications + - name: Snapshots + - name: Jobs + - name: Integrations + - name: User sources + - name: Database tables + - name: Database table fields + - name: Database table views + - name: Database table view filters + - name: Database table view sortings + - name: Database table view decorations + - name: Database table view groupings + - name: Database table grid view + - name: Database table gallery view + - name: Database table form view + - name: Database table kanban view + - name: Database table calendar view + - name: Database table rows + - name: Database table export + - name: Database table webhooks + - name: Database tokens + - name: Builder pages + - name: Builder elements + - name: Builder domains + - name: Builder public + - name: Builder data sources + - name: Builder workflow actions + - name: Builder theme + - name: Admin +servers: + - url: api.baserow.io diff --git a/sdks/db/intermediate-fixed-specs/beam/openapi.yaml b/sdks/db/intermediate-fixed-specs/beam/openapi.yaml index ecb1cf5c35..e383b9ab1b 100644 --- a/sdks/db/intermediate-fixed-specs/beam/openapi.yaml +++ b/sdks/db/intermediate-fixed-specs/beam/openapi.yaml @@ -18,7 +18,7 @@ info: statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated - credit decisions. + credit decisions. Our completely digital customer onboarding process allows for near-instant diff --git a/sdks/db/intermediate-fixed-specs/browse-ai/openapi.yaml b/sdks/db/intermediate-fixed-specs/browse-ai/openapi.yaml new file mode 100644 index 0000000000..3802b9aa8e --- /dev/null +++ b/sdks/db/intermediate-fixed-specs/browse-ai/openapi.yaml @@ -0,0 +1,8159 @@ +openapi: 3.1.0 +info: + title: Browse AI API Documentation + description: >- + If you are still using the deprecated API v1 version, you can see its + documentation [here](https://www.browse.ai/docs/api/v1). + version: v2 +servers: + - url: https://api.browse.ai/v2 +tags: + - name: internal + x-displayName: Internal + description: > + There are some endpoints that are only used by our integrations, so we + don't add this tag to our core resources + - name: system + x-displayName: System + description: > + This tag is used for endpoints that are used to check the status of Browse + AI infrastructure + - name: robots + x-displayName: Robots + description: > + A robot can be trained do almost anything you do manually on the web. For + example: + + - Open a webpage, + - Log in, + - Click on buttons, + - Fill out forms, + - Extract structured data from a webpage into a spreadsheet, + - Take screenshots, + - Monitor specific parts of webpages for visual or content changes. + + Robots are created either by using Prebuilt Robots or using Browse AI + Recorder and its click-and-extract interface. Every robot has a few input + parameters (like the webpage address) that you can adjust every time you + run it. + - name: tasks + x-displayName: Tasks + description: > + Each robot is trained to perform a certain task. Every time you run that + robot, it will perform that task and the details, including the extracted + data, will be stored under that task. + + + If you set up a monitoring robot to monitor a webpage for changes daily, + it will have to run a task every day or about 30 tasks per month for you. + - name: monitors + x-displayName: Monitors + description: > + Each robot on Browse AI can optionally have one or more monitors. + Monitoring robots come with one monitor by default. + + + For example, if you set up a monitoring robot to monitor a category page + on an e-commerce site for changes daily, you can set up additional + monitors to monitor other category pages on the same site using the same + robot. + + + Each monitor can have different input parameters and schedule. + - name: webhooks + x-displayName: Webhooks + description: | + After a robot finishes a task, its webhooks will be called. + - name: bulk runs + x-displayName: Bulk Runs + description: > + You can run up to 50,000 tasks at once using a robot with different input + parameters for each task. +x-tagGroups: + - name: Core Resources + tags: + - system + - robots + - tasks + - monitors + - webhooks + - bulk runs +paths: + /status: + get: + tags: + - system + summary: Endpoint for checking the status of Browse AI infrastructure + operationId: getSystemStatus + description: > + This endpoint provides you with real-time information regarding the + operational status of the Browse AI infrastructure. It gives insights + into the condition of the tasks queue, thus allowing you to understand + if the services are running smoothly or are under maintenance. + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/status"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/status\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/status") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/status", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/status', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/status"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/status", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/status", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/status" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/status") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/status \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/status + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/status")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON containing Browse AI infrastructure status + content: + application/json: + schema: + $ref: '#/components/schemas/getSystemStatus-200' + /teams: + get: + tags: + - internal + summary: Retrieve list of teams under user account + operationId: getUserTeams + description: > + this endpoint be used on Browse AI integrations to fetch all of the + teams by auth0 access token + parameters: + - $ref: '#/components/parameters/authorization' + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/teams"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/teams\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/teams") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/teams", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/teams', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/teams"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/teams", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/teams", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/teams" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/teams") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/teams \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/teams + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/teams")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON containing the total number of the user. + content: + application/json: + schema: + $ref: '#/components/schemas/getUserTeams-200' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + /robots: + get: + tags: + - robots + summary: Retrieve list of robots under your account + operationId: getRobots + description: > + If you have already created a few robots on [your + dashboard](https://dashboard.browse.ai), you can use this endpoint to + retrieve a list of them. + + You can then use other endpoints to retrieve more information about your + robots or run robots. + parameters: + - $ref: '#/components/parameters/authorization' + x-codeSamples: + - lang: C# + label: C# + source: | + var client = new RestClient("https://api.browse.ai/v2/robots"); + var request = new RestRequest(Method.GET); + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/robots", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: >- + A JSON containing the total number of robots and an array of robots + under this team. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobots-200' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + /robots/{robotId}: + get: + tags: + - robots + summary: Retrieve single robot by ID + operationId: getRobot + description: | + You can use this endpoint to retrieve a single robot by ID. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID You can find a robot's ID by opening it on the + dashboard and copying its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: | + import http.client + + conn = http.client.HTTPSConnection("api.browse.ai") + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + conn.request("GET", "/v2/robots/{robotId}", headers=headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: >- + A JSON containing the total number of robots and an array of robots + under this team. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobot-200' + '400': + description: A JSON containing an error code and message. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobot-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/cookies: + patch: + tags: + - robots + summary: Update a robot's cookies + operationId: upsertRobotCookies + description: Update a robot's cookies + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/RobotCookie' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.PATCH); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":false,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":16}\")\n\n\treq, _ := http.NewRequest(\"PATCH\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.patch("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "PATCH", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'PATCH', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @NO, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @16 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"PATCH"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "PATCH", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("PATCH", "/v2/robots/{robotId}/monitors/{monitorId}", + payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": False, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 16 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("PATCH", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Patch.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request PATCH \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method PATCH \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": false, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 16 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "PATCH" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the updated monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/upsertRobotCookies-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/upsertRobotCookies-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/tasks: + get: + tags: + - tasks + summary: Get all tasks by a robot + operationId: getRobotTasks + description: | + Get all of a robot's tasks + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + description: Page number + - in: query + name: pageSize + schema: + type: integer + minimum: 1 + maximum: 10 + default: 10 + example: 10 + required: false + description: Page size + - in: query + name: status + schema: + type: string + enum: + - failed + - successful + - in-progress + example: successful + required: false + description: Task status + - in: query + name: robotBulkRunId + schema: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + required: false + description: filter the result based on robot bulk run ID + - in: query + name: sort + schema: + type: string + example: '-createdAt,finishedAt' + required: false + description: >- + A comma separated list of fields to sort by. Default sorting is + ascending and prefixing field names with a hyphen '-' yields a + descending order. + - in: query + name: includeRetried + schema: + type: boolean + example: false + required: false + description: by passing false you can exclude the retried tasks + - in: query + name: fromDate + schema: + type: integer + example: 1678795867879 + required: false + description: From task creation date and time in the form of a Unix timestamp + - in: query + name: toDate + schema: + type: integer + example: 1678795867879 + required: false + description: To task creation date and time in the form of a Unix timestamp + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/tasks?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/tasks?page=1") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/tasks?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/tasks?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks?page=1")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTasks-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTasks-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + post: + tags: + - tasks + summary: Run a robot + operationId: newRobotTask + description: > + Run a robot on-demand with custom input parameters. + + + When you need to run a robot and get its captured data, you can use this + endpoint to run the task, and then use webhooks to receive the captured + data as soon as the task is finished. Alternatively, you can poll the + GET endpoint to retrieve a task's details as soon as it is finished. + requestBody: + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/NewRobotTaskBodyParams' + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks\"\n\n\tpayload := strings.NewReader(\"{\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/tasks") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + } + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + } + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"inputParameters": @{ @"originUrl": + @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" + } }; + + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/tasks", payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks" + + + payload = {"inputParameters": {"originUrl": + "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}} + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/tasks") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = + "{\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"}}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/tasks \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/tasks + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = ["inputParameters": ["originUrl": + "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"]] + as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/newRobotTask-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/newRobotTask-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: The request can not be processed + content: + application/json: + schema: + $ref: '#/components/schemas/CreditsLimitReachedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + '503': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/RobotUnderMaintenanceResponse' + /robots/{robotId}/tasks/{taskId}: + get: + tags: + - tasks + summary: Retrieve a task + operationId: getRobotTask + description: Retrieve a task's details and captured data. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: taskId + schema: + type: string + required: true + example: f3672790-4561-424b-8a7b-7b7df182b236 + description: Unique task ID + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/tasks/{taskId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/tasks/{taskId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/tasks/{taskId}")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including robots list. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTask-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getRobotTask-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + /robots/{robotId}/monitors: + get: + tags: + - monitors + summary: Retrieve a robot's monitors + operationId: getMonitors + description: Retrieve a robot's monitors list. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/monitors", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including monitors list. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitors-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitors-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + post: + tags: + - monitors + summary: Create a new monitor on a robot + operationId: createNewMonitor + description: Create a new monitor on a robot. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNewMonitorRequestBody' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":true,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":15}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @YES, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @15 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/monitors", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": True, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 15 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": true, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 15 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the newly created monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorBadRequestResponse' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorForbiddenResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/monitors/{monitorId}: + get: + tags: + - monitors + summary: Retrieve a robot's monitor + operationId: getMonitor + description: Retrieve a robot's monitor. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/monitors/{monitorId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getMonitor-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + patch: + tags: + - monitors + summary: Update a robot's monitor + operationId: updateMonitor + description: Update a robot's monitor + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitorUpdateBodyParams' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.PATCH); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":false,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":16}\")\n\n\treq, _ := http.NewRequest(\"PATCH\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.patch("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "PATCH", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'PATCH', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: false, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 16 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @NO, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @16 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"PATCH"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "PATCH", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("PATCH", "/v2/robots/{robotId}/monitors/{monitorId}", + payload, headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": False, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 16 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("PATCH", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Patch.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":false,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":16}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request PATCH \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method PATCH \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":false,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":16}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": false, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 16 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "PATCH" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the updated monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/updateMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorBadRequestResponse' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrUpdateMonitorForbiddenResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + delete: + tags: + - monitors + summary: Delete a robot's monitor + operationId: deleteMonitor + description: Delete a robot's monitor. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: monitorId + schema: + type: string + required: true + example: e524ab69-4269-4d9d-b3d8-678112a10d29 + description: > + Unique monitor ID + + + You can find a monitor's ID by opening it on the dashboard and + copying its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"); + + var request = new RestRequest(Method.DELETE); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.delete("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "DELETE", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors/{monitorId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'DELETE', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"DELETE"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "DELETE", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("DELETE", "/v2/robots/{robotId}/monitors/{monitorId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("DELETE", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Delete.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request DELETE \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method DELETE \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors/{monitorId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "DELETE" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the deleted monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteMonitor-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteMonitor-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/bulk-runs: + post: + tags: + - bulk runs + summary: Bulk run tasks + operationId: newBulkRun + description: Bulk run up to 1,000 tasks at a time using a robot. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BulkRunBodyParams' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs\"\n\n\tpayload := strings.NewReader(\"{\\\"title\\\":\\\"Bulk Run Title\\\",\\\"inputParameters\\\":[{\\\"originUrl\\\":\\\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\\\"},{\\\"originUrl\\\":\\\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\\\"}]}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/bulk-runs") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"title\":\"Bulk Run Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + title: 'Bulk Run Title', + inputParameters: [ + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories' + }, + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers' + } + ] + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + title: 'Bulk Run Title', + inputParameters: [ + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories' + }, + { + originUrl: 'https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers' + } + ] + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"title": @"Bulk Run Title", + @"inputParameters": @[ @{ @"originUrl": @"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories" }, @{ @"originUrl": @"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers" } ] }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"title\":\"Bulk Run Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/bulk-runs", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/bulk-runs" + + + payload = { + "title": "Bulk Run Title", + "inputParameters": [{"originUrl": "https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"}, {"originUrl": "https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}] + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"title\":\"Bulk Run + Title\",\"inputParameters\":[{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories\"},{\"originUrl\":\"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers\"}]}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/bulk-runs \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"title":"Bulk Run Title","inputParameters":[{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"},{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}]}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"title":"Bulk Run Title","inputParameters":[{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"},{"originUrl":"https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"}]}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/bulk-runs + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "title": "Bulk Run Title", + "inputParameters": [["originUrl": "https://www.seattlecoffeegear.com/shop-gear/accessories/espresso-accessories"], ["originUrl": "https://www.seattlecoffeegear.com/shop-gear/coffee-makers/drip-brewers"]] + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the newly created Bulk run. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '403': + description: A JSON containing error attributes. + content: + application/json: + schema: + $ref: '#/components/schemas/newBulkRun-403' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + '503': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/RobotUnderMaintenanceResponse' + get: + tags: + - bulk runs + summary: Retrieve a robot's bulk runs list + operationId: getBulkRuns + description: Retrieve a robot's bulk runs list. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + description: Page number + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/bulk-runs?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/bulk-runs" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs?page=1")! as + URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the bulk runs list. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRuns-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRuns-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + /robots/{robotId}/bulk-runs/{bulkRunId}: + get: + tags: + - bulk runs + summary: Retrieve a robot's bulk run + operationId: getBulkRun + description: >- + Retrieve a robot's bulk run along with a list of tasks run within the + bulk run. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: bulkRunId + schema: + type: string + required: true + example: 5aa4df52-25bb-48da-bf38-ce4f2bd98dd5 + description: | + Unique bulk run ID + - in: query + name: page + schema: + type: integer + minimum: 1 + example: 1 + required: false + description: Page number + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}', + qs: {page: '1'}, + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", + "/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}" + + + querystring = {"page":"1"} + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("GET", url, headers=headers, + params=querystring) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Get.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1' \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - 'https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1' + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/bulk-runs/{bulkRunId}?page=1")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: >- + A JSON object containing the bulk run information along with a + paginated list of all its tasks. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRun-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getBulkRun-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + /robots/{robotId}/webhooks: + get: + tags: + - webhooks + summary: Retrieve a robot's webhooks + operationId: getWebhooks + description: Retrieve a robot's webhook list. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/webhooks"); + + var request = new RestRequest(Method.GET); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/webhooks\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.get("https://api.browse.ai/v2/robots/{robotId}/webhooks") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "GET", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/webhooks", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'GET', + url: 'https://api.browse.ai/v2/robots/{robotId}/webhooks', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/webhooks"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"GET"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/webhooks", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("GET", "/v2/robots/{robotId}/webhooks", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: | + import requests + + url = "https://api.browse.ai/v2/robots/{robotId}/webhooks" + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + response = requests.request("GET", url, headers=headers) + + print(response.text) + - lang: Ruby + label: Ruby + source: | + require 'uri' + require 'net/http' + require 'openssl' + + url = URI("https://api.browse.ai/v2/robots/{robotId}/webhooks") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Get.new(url) + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + response = http.request(request) + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request GET \ + --url https://api.browse.ai/v2/robots/{robotId}/webhooks \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method GET \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/webhooks + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/webhooks")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "GET" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON including monitors list. + content: + application/json: + schema: + $ref: '#/components/schemas/getWebhooks-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/getWebhooks-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + post: + tags: + - webhooks + summary: Create a new webhook on a robot + operationId: createNewWebhook + description: Create a new webhook on a robot + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNewWebhookBodyParams' + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/monitors"); + + var request = new RestRequest(Method.POST); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + request.AddParameter("undefined", "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + ParameterType.RequestBody); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/monitors\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"Monitor products\\\",\\\"inputParameters\\\":{\\\"originUrl\\\":\\\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\\\"},\\\"schedule\\\":\\\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\\\",\\\"notifyOnCapturedScreenshotChange\\\":true,\\\"notifyOnCapturedTextChange\\\":true,\\\"capturedScreenshotNotificationThreshold\\\":15}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.post("https://api.browse.ai/v2/robots/{robotId}/monitors") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .body("{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "POST", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/monitors", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.write(JSON.stringify({ + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + })); + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'POST', + url: 'https://api.browse.ai/v2/robots/{robotId}/monitors', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'}, + body: { + name: 'Monitor products', + inputParameters: { + originUrl: 'https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines' + }, + schedule: 'FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR', + notifyOnCapturedScreenshotChange: true, + notifyOnCapturedTextChange: true, + capturedScreenshotNotificationThreshold: 15 + }, + json: true + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + NSDictionary *parameters = @{ @"name": @"Monitor products", + @"inputParameters": @{ @"originUrl": @"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines" }, + @"schedule": @"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + @"notifyOnCapturedScreenshotChange": @YES, + @"notifyOnCapturedTextChange": @YES, + @"capturedScreenshotNotificationThreshold": @15 }; + + NSData *postData = [NSJSONSerialization + dataWithJSONObject:parameters options:0 error:nil]; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/monitors"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"POST"]; + + [request setAllHTTPHeaderFields:headers]; + + [request setHTTPBody:postData]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/monitors", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => "{\"name\":\"Monitor products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + payload = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("POST", "/v2/robots/{robotId}/monitors", payload, + headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = "https://api.browse.ai/v2/robots/{robotId}/monitors" + + + payload = { + "name": "Monitor products", + "inputParameters": {"originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"}, + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": True, + "notifyOnCapturedTextChange": True, + "capturedScreenshotNotificationThreshold": 15 + } + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("POST", url, json=payload, + headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = URI("https://api.browse.ai/v2/robots/{robotId}/monitors") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Post.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + request.body = "{\"name\":\"Monitor + products\",\"inputParameters\":{\"originUrl\":\"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines\"},\"schedule\":\"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR\",\"notifyOnCapturedScreenshotChange\":true,\"notifyOnCapturedTextChange\":true,\"capturedScreenshotNotificationThreshold\":15}" + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request POST \ + --url https://api.browse.ai/v2/robots/{robotId}/monitors \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method POST \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --body-data '{"name":"Monitor products","inputParameters":{"originUrl":"https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"},"schedule":"FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR","notifyOnCapturedScreenshotChange":true,"notifyOnCapturedTextChange":true,"capturedScreenshotNotificationThreshold":15}' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/monitors + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + let parameters = [ + "name": "Monitor products", + "inputParameters": ["originUrl": "https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines"], + "schedule": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR", + "notifyOnCapturedScreenshotChange": true, + "notifyOnCapturedTextChange": true, + "capturedScreenshotNotificationThreshold": 15 + ] as [String : Any] + + + let postData = JSONSerialization.data(withJSONObject: parameters, + options: []) + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/monitors")! as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "POST" + + request.allHTTPHeaderFields = headers + + request.httpBody = postData as Data + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the newly created monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewWebhook-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/createNewWebhook-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' + /robots/{robotId}/webhooks/{webhookId}: + delete: + tags: + - webhooks + summary: Delete a robot's webhook + operationId: deleteWebhook + description: Delete a robot's webhook. + parameters: + - $ref: '#/components/parameters/authorization' + - in: path + name: robotId + schema: + type: string + required: true + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: > + Unique robot ID + + + You can find a robot's ID by opening it on the dashboard and copying + its ID in the browser address bar. + - in: path + name: webhookId + schema: + type: string + required: true + example: 6d7f1218-43fb-4735-ac71-21e81b1ab23e + description: | + Unique webhookId ID + x-codeSamples: + - lang: C# + label: C# + source: > + var client = new + RestClient("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}"); + + var request = new RestRequest(Method.DELETE); + + request.AddHeader("Authorization", "Bearer YOUR_SECRET_API_KEY"); + + IRestResponse response = client.Execute(request); + - lang: Go + label: Go + source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"Bearer YOUR_SECRET_API_KEY\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}\n" + - lang: Java + label: Java + source: > + HttpResponse response = + Unirest.delete("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}") + .header("Authorization", "Bearer YOUR_SECRET_API_KEY") + .asString(); + - lang: Node + label: Node (Native) + source: | + const http = require("https"); + + const options = { + "method": "DELETE", + "hostname": "api.browse.ai", + "port": null, + "path": "/v2/robots/{robotId}/webhooks/{webhookId}", + "headers": { + "Authorization": "Bearer YOUR_SECRET_API_KEY" + } + }; + + const req = http.request(options, function (res) { + const chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function () { + const body = Buffer.concat(chunks); + console.log(body.toString()); + }); + }); + + req.end(); + - lang: Node + label: Node (request) + source: | + const request = require('request'); + + const options = { + method: 'DELETE', + url: 'https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}', + headers: {Authorization: 'Bearer YOUR_SECRET_API_KEY'} + }; + + request(options, function (error, response, body) { + if (error) throw new Error(error); + + console.log(body); + }); + - lang: Objective-C + label: Objective-C + source: > + #import + + + NSDictionary *headers = @{ @"Authorization": @"Bearer + YOUR_SECRET_API_KEY" }; + + + NSMutableURLRequest *request = [NSMutableURLRequest + requestWithURL:[NSURL + URLWithString:@"https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}"] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:10.0]; + [request setHTTPMethod:@"DELETE"]; + + [request setAllHTTPHeaderFields:headers]; + + + NSURLSession *session = [NSURLSession sharedSession]; + + NSURLSessionDataTask *dataTask = [session + dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + NSLog(@"%@", error); + } else { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; + NSLog(@"%@", httpResponse); + } + }]; + [dataTask resume]; + - lang: PHP + label: PHP + source: | + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "DELETE", + CURLOPT_HTTPHEADER => [ + "Authorization: Bearer YOUR_SECRET_API_KEY" + ], + ]); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + echo $response; + } + - lang: Python + label: Python (python3) + source: > + import http.client + + + conn = http.client.HTTPSConnection("api.browse.ai") + + + headers = { 'Authorization': "Bearer YOUR_SECRET_API_KEY" } + + + conn.request("DELETE", "/v2/robots/{robotId}/webhooks/{webhookId}", + headers=headers) + + + res = conn.getresponse() + + data = res.read() + + + print(data.decode("utf-8")) + - lang: Python + label: Python (requests) + source: > + import requests + + + url = + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}" + + + headers = {"Authorization": "Bearer YOUR_SECRET_API_KEY"} + + + response = requests.request("DELETE", url, headers=headers) + + + print(response.text) + - lang: Ruby + label: Ruby + source: > + require 'uri' + + require 'net/http' + + require 'openssl' + + + url = + URI("https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}") + + + http = Net::HTTP.new(url.host, url.port) + + http.use_ssl = true + + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + + request = Net::HTTP::Delete.new(url) + + request["Authorization"] = 'Bearer YOUR_SECRET_API_KEY' + + + response = http.request(request) + + puts response.read_body + - lang: Shell + label: Shell (cURL) + source: | + curl --request DELETE \ + --url https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId} \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' + - lang: Shell + label: Shell (wget) + source: | + wget --quiet \ + --method DELETE \ + --header 'Authorization: Bearer YOUR_SECRET_API_KEY' \ + --output-document \ + - https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId} + - lang: Swift + label: Swift + source: > + import Foundation + + + let headers = ["Authorization": "Bearer YOUR_SECRET_API_KEY"] + + + let request = NSMutableURLRequest(url: NSURL(string: + "https://api.browse.ai/v2/robots/{robotId}/webhooks/{webhookId}")! + as URL, + cachePolicy: .useProtocolCachePolicy, + timeoutInterval: 10.0) + request.httpMethod = "DELETE" + + request.allHTTPHeaderFields = headers + + + let session = URLSession.shared + + let dataTask = session.dataTask(with: request as URLRequest, + completionHandler: { (data, response, error) -> Void in + if (error != nil) { + print(error) + } else { + let httpResponse = response as? HTTPURLResponse + print(httpResponse) + } + }) + + + dataTask.resume() + responses: + '200': + description: A JSON object containing the deleted monitor. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteWebhook-200' + '400': + description: >- + A JSON containing error attributes. This will happen if any of the + parameters are not valid. + content: + application/json: + schema: + $ref: '#/components/schemas/deleteWebhook-400' + '401': + description: The request is not authorized + content: + application/json: + schema: + $ref: '#/components/schemas/UnauthorizedResponse' + '404': + description: The resource is not found + content: + application/json: + schema: + $ref: '#/components/schemas/NotFoundResponse' + '500': + description: There was an error on the server + content: + application/json: + schema: + $ref: '#/components/schemas/InternalServerResponse' +webhooks: + taskWebhook: + post: + summary: Task Finished + tags: + - webhooks + requestBody: + content: + application/json: + schema: + type: object + required: + - event + - task + properties: + event: + type: string + enum: + - task.finishedSuccessfully + - task.finishedWithError + - task.capturedDataChanged + example: task.finishedSuccessfully + description: The event type that triggered the webhook + task: + $ref: '#/components/schemas/RobotTaskWebhook' + responses: + '200': + description: >- + Your webhook URL is called only once – regardless of the response + status. This behavior may change in the future and we may introduce + automatic retries in cases where the response status is not 200 and + your software is having a downtime. At this time, however, you need + to make sure that the webhook URL is always available and set the + response status code to 200. + content: + application/json: + example: + status: success + tableExportWebhook: + post: + summary: Table Export Finished (Beta) + tags: + - webhooks + - Beta + description: > + This webhook is called when a table export is finished. The exported + file can be a CSV, JSON, or zip file. + + + Your webhook URL is called only once regardless of the response status. + requestBody: + content: + application/json: + schema: + type: object + required: + - exportId + - exportFile + - robotName + - robotId + - exportFinishedAt + - exportCreatedAt + properties: + exportId: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: The unique ID of the export + robotId: + type: string + example: c3689adb-50aa-44af-b265-a7e0d4e5846e + description: The unique ID of the robot + fileTemporaryUrl: + type: string + example: https://s3.amazonaws.com/some-bucket/your-export.csv + description: The URL of the exported file + fileTemporaryUrlExpiresAt: + type: number + format: timestamp + example: 1678795867879 + description: >- + The unix timestamp of when the file URL expires in + milliseconds + exportFinishedAt: + type: number + format: timestamp + example: 1678795867879 + description: >- + The unix timestamp of when the export was finished in + milliseconds + exportCreatedAt: + type: number + format: timestamp + example: 1678795867879 + description: >- + The unix timestamp of when the export was created in + milliseconds + responses: + '200': + content: + application/json: + example: + status: success +components: + schemas: + getSystemStatus-200: + type: object + required: + - tasksQueueStatus + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + tasksQueueStatus: + type: string + enum: + - OK + - UNDER_MAINTENANCE + example: OK + Team: + type: object + required: + - id + - api + - createdAt + properties: + id: + type: string + example: b04eaafa-00c2-41a2-9c6a-7f7d32805a91 + description: Unique team ID + name: + type: string + nullable: true + example: Browse AI team + description: Team name + api: + type: boolean + example: true + description: API accessibility + createdAt: + type: integer + example: 1678795867879 + description: Team creation date and time in the form of a Unix timestamp + getUserTeams-200: + type: object + required: + - statusCode + - messageCode + - teams + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + teams: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of Team this user has. + items: + type: array + items: + $ref: '#/components/schemas/Team' + UnauthorizedResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 401 + messageCode: + type: string + enum: + - unauthorized + - no_api_access + example: unauthorized + CommonParameterPart: + type: object + required: + - name + - label + properties: + type: + type: string + description: Parameter type + name: + type: string + example: originUrl + description: Parameter name + label: + type: string + example: Origin URL + description: Parameter title + TextParameter: + title: Text Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - defaultValue + - encrypted + properties: + encrypted: + type: boolean + example: false + description: Whether parameter value and defaultValue are encrypted + defaultValue: + type: string + example: >- + https://www.espressozone.com/espresso-machines/semi-automatic-espresso-machines + description: > + Parameter default value that will be used as a fallback if you + do not specify a parameter's value when running a robot. If + `encrypted` is `true`, this will appear as an arbitrary string + like `******`. Parameter default values can be updated on robot + Settings page on your dashboard. + value: + type: string + nullable: true + example: null + description: > + Parameter value specified when running robot. If `encrypted` is + `true`, this will appear as an arbitrary string like `******`. + type: + type: string + enum: ["text"] + example: "text" + description: Parameter type + pattern: + type: string + description: Parameter Pattern + NumberParameter: + title: Numeric Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - type + - name + - label + - defaultValue + properties: + type: + type: string + enum: + - number + example: number + description: Parameter type + name: + type: string + example: limit + description: Parameter name + label: + type: string + example: Limit + description: Parameter title + defaultValue: + type: number + example: 10 + description: >- + Parameter default value that will be used if you do not specify + a parameter's value when running a robot. + value: + type: number + nullable: true + example: null + description: Parameter value specified when running robot. + min: + type: number + nullable: true + example: 0 + description: Minimum value this parameter accepts + max: + type: number + nullable: true + example: 200 + description: Maximum value this parameter accepts + URLParameter: + title: URL Parameter + allOf: + - $ref: '#/components/schemas/TextParameter' + - type: object + required: + - type + - encrypted + properties: + type: + type: string + enum: + - url + example: url + description: Parameter type + encrypted: + type: boolean + example: false + description: Whether parameter value and defaultValue are encrypted + SelectParameterOption: + type: object + required: + - label + - value + properties: + label: + type: string + example: Option 1 + description: The label for the select option + value: + type: string + example: option1 + description: The value for the select option + SelectParameter: + title: Select Parameter + allOf: + - $ref: '#/components/schemas/CommonParameterPart' + - type: object + required: + - type + - name + - label + - defaultValue + - options + properties: + type: + type: string + enum: + - select + example: select + description: Parameter type + name: + type: string + example: choice + description: Parameter name + label: + type: string + example: Choice + description: Parameter title + defaultValue: + type: array + items: + type: string + example: + - option_1 + - option_2 + description: > + Parameter default value that will be used as a fallback if you + do not specify a parameter's value when running a robot. + + It should be an array of string values. Each string value should + be one of the `value` or `label` of the `options` array. For + each string value, if there is a matching `value` in the + `options` array, it will be used as the default value. + Otherwise, it looks for the `label` in the `options` and uses + the `value` of the option with that `label`. If no matching + `value` or `label` is found, it throws an error. + value: + type: array + items: + type: string + nullable: true + example: + - option_1 + - option_2 + description: > + Parameter value specified when running robot. + + If it is specified, it should be an array of string values. Each + string value should be one of the `value` or `label` of the + `options` array. For each string value, if there is a matching + `value` in the `options` array, it will be used as the default + value. Otherwise, it looks for the `label` in the `options` and + uses the `value` of the option with that `label`. If no matching + `value` or `label` is found, it throws an error. + options: + type: array + items: + $ref: '#/components/schemas/SelectParameterOption' + example: + - label: Option 1 label + value: option_1 + - label: Option 2 label + value: option_2 + description: Available options for the select parameter + RobotInputParameters: + type: array + items: + oneOf: + - $ref: '#/components/schemas/TextParameter' + - $ref: '#/components/schemas/NumberParameter' + - $ref: '#/components/schemas/URLParameter' + - $ref: '#/components/schemas/SelectParameter' + Robot: + type: object + required: + - id + - createdAt + properties: + id: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + name: + type: string + example: Extract data from Realtor.com + description: Robot name + createdAt: + type: integer + example: 1678795867879 + description: Robot creation date and time in the form of a Unix timestamp + inputParameters: + $ref: '#/components/schemas/RobotInputParameters' + getRobots-200: + type: object + required: + - statusCode + - messageCode + - robots + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + robots: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of robots this team has. + items: + type: array + items: + $ref: '#/components/schemas/Robot' + getRobot-200: + type: object + required: + - statusCode + - messageCode + - robot + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + robot: + $ref: '#/components/schemas/Robot' + getRobot-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + NotFoundResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 404 + messageCode: + type: string + enum: + - not_found + InternalServerResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 500 + messageCode: + type: string + enum: + - internal_server_error + RobotCookie: + type: object + properties: + name: + type: string + description: The name of the cookie. + example: ACCOUNT_CHOOSER + value: + type: string + description: The value of the cookie. + example: 12341234 + domain: + type: string + description: >- + The domain associated with the cookie. Specifies the domains to + which the cookie should be sent. + example: .example.com + expirationDate: + type: number + format: int64 + description: >- + The expiration date of the cookie in seconds since the UNIX epoch + (e.g., POSIX time). If not provided, the cookie will be treated as a + session cookie. + example: 1723659417 + path: + type: string + description: >- + The URL path to which the cookie should be sent. If not provided, it + defaults to the current path of the document location. + example: /products/ + secure: + type: boolean + description: >- + Indicates whether the cookie should only be sent over secure (HTTPS) + connections. If true, the cookie will not be sent over unencrypted + HTTP connections. + example: true + httpOnly: + type: boolean + description: >- + If true, the cookie is accessible only through the HTTP(S) protocol + and cannot be accessed through JavaScript or other client-side + scripts. + example: true + hostOnly: + type: boolean + description: >- + If true, the cookie is only sent to the exact domain specified in + the "domain" property. If false, the cookie is sent to subdomains as + well, provided that the "domain" property allows it. + example: true + required: + - name + - value + upsertRobotCookies-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + cookies: + type: array + items: + $ref: '#/components/schemas/RobotCookie' + CookieError: + type: object + required: + - summary + - fields + properties: + name: + type: string + description: Name of the cookie + example: ACCOUNT_CHOOSER + summary: + type: string + description: Summary of the error + example: Errors found in existing cookie fields + fields: + type: array + items: + type: object + required: + - field + - message + properties: + field: + type: string + description: Field name with the error + example: value + message: + type: string + description: Error message for the field + example: Required + upsertRobotCookies-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + example: bad_request + errors: + type: array + items: + $ref: '#/components/schemas/CookieError' + InputParameters: + type: object + description: An object of input parameters to override default input parameters. + example: + originUrl: https://www.ycombinator.com/companies/airbnb + companies_skip: 0 + companies_limit: 10 + additionalProperties: + oneOf: + - type: string + - type: number + - type: array + items: + type: string + CapturedTexts: + type: object + description: Captured texts + example: + Product Name: Alexis + Width: '15' + Pattern Repeat: PATTERN REPEAT + Construction: Hand woven + Fiber: 100% Wool + Color: null + Main Image: >- + https://isteam.wsimg.com/ip/e31f7bba-252b-4669-9209-639d1c00765d/ols/258_original + additionalProperties: + type: string + nullable: true + CapturedScreenshots: + type: object + description: All screenshots captured in this task. + example: + top-ads: + id: b4d132f3-12d9-4770-ac7d-88e481fc5b47 + name: Top ads + src: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + width: 600 + height: 120 + x: 201 + 'y': 142 + deviceScaleFactor: 1.2 + full: page + comparedToScreenshotId: 29d742c2-6f45-4f29-9d48-ba6fe66e6e3d + diffImageSrc: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + changePercentage: 20 + diffThreshold: 5 + fileRemovedAt: 1678795867879 + additionalProperties: + type: object + required: + - id + - src + - width + - height + - x + - 'y' + - deviceScaleFactor + - changePercentage + - diffThreshold + properties: + id: + type: string + example: b4d132f3-12d9-4770-ac7d-88e481fc5b47 + description: Unique screenshot ID + name: + type: string + nullable: true + example: Top ads + description: Screenshot name + src: + type: string + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + description: Screenshot image link + width: + type: number + example: 600 + minimum: 0 + description: Screenshot rectangle width in pixels + height: + type: number + example: 120 + minimum: 0 + description: Screenshot rectangle height in pixels + x: + type: number + example: 201 + description: >- + Screenshot rectangle distance from the left edge of the page in + pixels + 'y': + type: number + example: 142 + description: >- + Screenshot rectangle distance from the top edge of the page in + pixels + deviceScaleFactor: + type: number + example: 1.2 + description: Device scale factor when screenshot was taken + full: + type: string + nullable: true + example: page + description: > + Whether this is a full *page* screenshot, a *viewport* screenshot, + or a different type of screenshot. + + + `null` means it is either an HTML element screenshot or a + particular rectangle (x, y, w, h) screenshot. + comparedToScreenshotId: + type: string + nullable: true + example: 29d742c2-6f45-4f29-9d48-ba6fe66e6e3d + description: >- + If screenshot was taken in a monitoring check, this is the ID of + the screenshot it was compared to. + diffImageSrc: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/00001-user-1620230947-6f113cf2-90ef-4c66-a448-9d5c6bd64873.png + description: >- + A transparent PNG highlighting changes compared to previous + screenshot in red + changePercentage: + type: number + example: 20 + minimum: 0 + description: How much screenshot changed compared to previous screenshot + diffThreshold: + type: integer + example: 5 + minimum: 0 + description: >- + The change percentage threshold above which the user would be + notified of the change, based on monitor settings. + fileRemovedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + After your account's data retention period, screenshots get + removed and this field will be screenshot removal date and time + in the form of a Unix timestamp. + CapturedLists: + type: object + description: All lists captured in this task. + example: + companies: + - Position: '1' + name: Airbnb + location: San Francisco, CA, USA + description: Book accommodations around the world. + - Position: '2' + name: Coin base + location: San Francisco, CA, USA + description: Buy, sell, and manage crypto currencies. + - Position: '3' + name: DoorDash + location: San Francisco, CA, USA + description: Restaurant delivery. + additionalProperties: + type: array + items: + $ref: '#/components/schemas/CapturedTexts' + RobotTask: + type: object + required: + - id + - inputParameters + - robotId + - createdAt + - runByAPI + - triedRecordingVideo + - capturedTexts + - capturedScreenshots + - capturedLists + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique task ID + inputParameters: + $ref: '#/components/schemas/InputParameters' + robotId: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + status: + type: string + enum: + - failed + - successful + - in-progress + example: successful + description: task status + runByUserId: + type: string + nullable: true + example: null + description: User ID who ran the robot on the dashboard + robotBulkRunId: + type: string + nullable: true + example: null + description: Robot bulk run ID associated with this task + runByTaskMonitorId: + type: string + nullable: true + example: null + description: Monitor ID that ran this check + runByAPI: + type: boolean + example: true + description: Whether the robot was ran through the API + createdAt: + type: integer + example: 1678795867879 + description: Task creation date and time in the form of a Unix timestamp + startedAt: + type: integer + nullable: true + example: 1678795867879 + description: Task start date and time in the form of a Unix timestamp + finishedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + Task finish date and time in the form of a Unix timestamp. + + + If `null`, it means robot is still running and capturing data. + + + Tasks time out with an error if they are not finished within 15 + minutes (or the maximum duration allowed on your plan). + userFriendlyError: + type: string + nullable: true + example: null + description: If task fails, a user-friendly error will be provided here. + triedRecordingVideo: + type: boolean + example: true + description: > + Whether the robot tried to record a video while performing this + task. + + + You can change a robot's video recording setting on its Settings + page. + + + Robots try to record a video when a task is failed and auto-retried + as well. + videoUrl: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4 + description: >- + If a video was recorded for this task, this is the link to the + video. + videoRemovedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + After your account's data retention period, task videos get removed + and this field will be video removal date and time in the form of a + Unix timestamp. + retriedOriginalTaskId: + type: string + nullable: true + example: 673da019-bf0c-476e-9c4f-d35252a151dc + description: >- + The ID of the original failed task this task was retrying. For + example, if task A failed and was retried by task B, and task B was + retried by task C, `retriedOriginalTaskId` will point to task A in + both task B and C. + retriedByTaskId: + type: string + nullable: true + example: null + description: > + The ID of the task that retried this task, if this task failed with + an error and was retried. + + + Failed tasks get retried if "Double Check" option is enabled on + robot Settings page. "Double Check" is enabled by default. + capturedDataTemporaryUrl: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAQVG3TPBVXHSCAX63%2F20221031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221031T185642Z&X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEJP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQDfX8VNAl5kBgttrCU85U5wc1ZtSOmshO6%2FPilXOv8nvgIhAIveFfsk%2B2CnEkrMZWriodEPsj0osO5a5zV6eVu%2FXfuZKp8DCHwQAhoMMDQ1NTU3NzA4OTA3IgyrbhVK0MP1WMFBXh0q%2FAJulP5qfaV5mn3NRbINqZN4hy4Dg3IujNrZjw8ef32sWE1Gj2D%2Fc0YTJUzvx%2Fnm7LxyNO6AR35mrVy%2FBm9Q80UIspkcLMl45EK%2FoUDO0fAvoUF8g6iZ905qS3MvnOTxXkObhM1PVmpFeJFMw3jksnOPfKE4X7Ut%2FJXNwD%2F5QzdkQCXkGem%2BlrYSSSf8jB8lihTAjT%2FNXmOKMv3jktmZ13T8J1R8F8zeuLPMQf7QphUzlKn5joPb28cConluQC97y%2BjwxqIYjvIFKXY9cZEoaHGh4c6FbXsia714zG3CQp8NSGLbqCCu93oJI1Z61E%2BZ6PhB3vZGdBvXi61AlJcxZ7sti6i0h4VAbWspiJIgWwoZzrsTtneBNNpUW9tvtacGgEZIwAKV%2F3AhVEZu3WC1eQ9HtfjT9%2FjW99SEB8VVGXwkM%2FA9mtT%2FuiL0cAfQZRMhtbQJXXDRdkYEw%2FWuhjJ3zxEtEB2m3uH%2B%2BUEzOzGTd5Knm%2Bero%2BhMfN8X%2Botm3DDbtICbBjqcAf5Riii0XE1w2TZvpm%2FPNHTchCu7FnNz5hfvflv8scpgO5M4bGpy%2FadI4%2F7AUQqCQXFw4scF0FCCdb8AKJZsFGG18W1jjDHyR0YuxZFQ%2FJQRt0JP3yr%2BkVxjAH7qTtc0AzF%2FnGTgy3MOF%2Bm6Y7EkyCWyV2r6o1JTBQMftlf7MI8Uvw4cSZE6JoZviaFtmKVLGGgR4F3cDiyU56augA%3D%3D&X-Amz-Signature=a7bb4d7597ad37cdf1f260890c3c474f7f49334db58c9650d75302a34126f7bc&X-Amz-SignedHeaders=host + description: >- + If your task's captured data exceeds 100KB, the data will be only + accessible through this link. There's a 24 hours expiration time for + this link (you need to call this API again to get a new link if it + expires). + capturedTexts: + $ref: '#/components/schemas/CapturedTexts' + capturedScreenshots: + $ref: '#/components/schemas/CapturedScreenshots' + capturedLists: + $ref: '#/components/schemas/CapturedLists' + getRobotTasks-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + required: + - robotTasks + properties: + robotTasks: + type: object + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of tasks this robot has. + pageNumber: + type: integer + example: 1 + description: Current page number. + hasMore: + type: boolean + example: true + description: Whether there are more tasks on the next page. + items: + type: array + items: + $ref: '#/components/schemas/RobotTask' + getRobotTasks-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - invalid_from_date + - invalid_to_date + example: invalid_robot_id + NewRobotTaskBodyParams: + type: object + properties: + recordVideo: + type: boolean + example: false + description: >- + Try to record a video while running the task. This is not guaranteed + to work as the robot might skip video recording if the site is too + heavy. + minLength: 1 + maxLength: 200 + required: false + inputParameters: + $ref: '#/components/schemas/InputParameters' + newRobotTask-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/RobotTask' + newRobotTask-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - body_parse_error + - invalid_robot_id + - invalid_input_parameters + example: bad_request + CreditsLimitReachedResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - credits_limit_reached + RobotUnderMaintenanceResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 503 + messageCode: + type: string + enum: + - robot_under_maintenance + getRobotTask-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/RobotTask' + getRobotTask-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + - invalid_task_id + example: bad_request + Schedules: + type: array + description: | + Array of schedules. + deprecated: true + items: + type: object + title: Fixed interval schedule + required: + - type + - everyMinutes + properties: + type: + type: string + enum: + - FIXED_INTERVAL + example: FIXED_INTERVAL + description: Schedule type + everyMinutes: + type: number + example: 60 + description: Schedule interval in minutes + example: + - type: FIXED_INTERVAL + everyMinutes: 60 + Schedule: + type: string + description: | + recurring schedule. + example: FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR + Monitor: + type: object + required: + - id + - name + - status + - pausedReason + - inputParameters + - notifyOnCapturedScreenshotChange + - notifyOnCapturedTextChange + - capturedScreenshotNotificationThreshold + - createdAt + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique robot monitor ID + name: + type: string + example: Monitor Products + description: Monitor name + status: + type: string + enum: + - active + - paused + example: active + description: >- + Represents the current state of the monitor. 'active' indicates that + the monitor is currently operational and performing its intended + functions, while 'paused' signifies that the monitor's activities + are temporarily suspended. The 'paused' state may be due to reasons + specified in the 'pausedReason' attribute. + pausedReason: + type: string + nullable: true + enum: + - lowCredits + - tooManyFailures + - userRequested + - userInactivity + example: null + description: Specifies the reason why the monitor is in a paused state. + inputParameters: + $ref: '#/components/schemas/InputParameters' + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + notifyOnCapturedTextChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + capturedScreenshotNotificationThreshold: + type: number + example: 15 + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + createdAt: + type: integer + example: 1678795867879 + description: Monitor creation date and time in the form of a Unix timestamp. + pausedAt: + type: integer + nullable: true + example: 1678795867879 + description: Monitor pause date and time in the form of a Unix timestamp. + updatedAt: + type: integer + nullable: true + example: 1678795867879 + description: Monitor last update date and time in the form of a Unix timestamp. + getMonitors-200: + type: object + required: + - statusCode + - messageCode + - monitors + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitors: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: number + example: 10 + description: Total number of monitors this robot has + items: + type: array + description: Array of all monitors + items: + $ref: '#/components/schemas/Monitor' + getMonitors-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + example: bad_request + CreateNewMonitorRequestBody: + type: object + required: + - name + - inputParameters + - notifyOnCapturedScreenshotChange + - notifyOnCapturedTextChange + - capturedScreenshotNotificationThreshold + properties: + name: + type: string + example: Monitor Products + description: Monitor name + minLength: 1 + maxLength: 200 + inputParameters: + $ref: '#/components/schemas/InputParameters' + description: An object of input parameters to override default input parameters. + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + notifyOnCapturedTextChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + capturedScreenshotNotificationThreshold: + type: number + example: 15 + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + createNewMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + CreateOrUpdateMonitorBadRequestResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + - invalid_name + - invalid_status + - invalid_input_parameters + - invalid_notifyOnCapturedScreenshotChange + - invalid_notifyOnCapturedTextChange + - invalid_capturedScreenshotNotificationThreshold + - invalid_schedules + - invalid_schedule + - invalid_monitor_id + example: bad_request + CreateOrUpdateMonitorForbiddenResponse: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - schedule_interval_below_minimum + example: schedule_interval_below_minimum + getMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + getMonitor-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - invalid_monitor_id + example: bad_request + deleteMonitor-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + deleteMonitor-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - invalid_monitor_id + example: invalid_robot_id + MonitorUpdateBodyParams: + type: object + properties: + name: + type: string + example: Monitor Products + description: Monitor name + nullable: true + status: + type: string + enum: + - active + - paused + example: active + description: >- + If set to `paused`, the monitor will stop working until an `active` + status is sent. + nullable: true + inputParameters: + $ref: '#/components/schemas/InputParameters' + nullable: true + schedules: + $ref: '#/components/schemas/Schedules' + schedule: + $ref: '#/components/schemas/Schedule' + notifyOnCapturedScreenshotChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured screenshots. + nullable: true + notifyOnCapturedTextChange: + type: boolean + example: true + description: >- + If set to `true`, an email notification will be sent to you when a + change is detected in captured texts. + nullable: true + capturedScreenshotNotificationThreshold: + type: number + example: 15 + description: >- + The "screenshot changed" email notification will be sent to you if + the change is greater than this threshold (in percent). + nullable: true + updateMonitor-200: + type: object + required: + - statusCode + - messageCode + - monitor + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + monitor: + $ref: '#/components/schemas/Monitor' + BulkRun: + type: object + required: + - id + - tasksCount + - robotId + - createdAt + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique bulk run ID + title: + type: string + nullable: true + example: Bulk Run Title + description: An optional string that describes the bulk run. + minLength: 1 + maxLength: 200 + tasksCount: + type: integer + example: 10 + description: Number of tasks under this bulk run. + robotId: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + createdAt: + type: integer + example: 1678795867879 + description: Bulk run creation date and time in the form of a Unix timestamp. + BulkRuns: + type: object + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of bulk runs a robot has had. + pageNumber: + type: integer + example: 1 + description: Current page number. + hasMore: + type: boolean + example: true + description: Whether there are more bulk runs on the next page. + items: + type: array + items: + $ref: '#/components/schemas/BulkRun' + getBulkRuns-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + $ref: '#/components/schemas/BulkRuns' + getBulkRuns-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + ArrayOfUserInputParameters: + type: array + description: >- + An array of input parameters to override the task's default input + parameters. + example: + - originUrl: https://www.ycombinator.com/companies/airbnb + companies_skip: 0 + companies_limit: 10 + - originUrl: https://www.ycombinator.com/companies/coinbase + companies_skip: 0 + companies_limit: 20 + items: + $ref: '#/components/schemas/InputParameters' + BulkRunBodyParams: + type: object + required: + - inputParameters + properties: + title: + type: string + example: Bulk Run Title + description: A string that describes the bulk run. + minLength: 1 + maxLength: 200 + required: false + inputParameters: + $ref: '#/components/schemas/ArrayOfUserInputParameters' + newBulkRun-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + properties: + bulkRun: + $ref: '#/components/schemas/BulkRun' + newBulkRun-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - body_parse_error + - invalid_robot_id + - invalid_input_parameters + - zero_length_parameters + example: bad_request + newBulkRun-403: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 403 + messageCode: + type: string + enum: + - credits_limit_reached + - exceeded_bulk_run_threshold + example: exceeded_bulk_run_threshold + RobotTasks: + type: object + description: A paginated list of tasks. + required: + - totalCount + - pageNumber + - hasMore + - items + properties: + totalCount: + type: integer + example: 20 + description: Total number of tasks. + pageNumber: + type: integer + example: 1 + description: Current page number. + hasMore: + type: boolean + example: true + description: Whether there are more tasks on the next page. + items: + type: array + items: + $ref: '#/components/schemas/RobotTask' + getBulkRun-200: + type: object + required: + - statusCode + - messageCode + - result + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + result: + type: object + required: + - bulkRun + - robotTasks + properties: + bulkRun: + $ref: '#/components/schemas/BulkRun' + robotTasks: + $ref: '#/components/schemas/RobotTasks' + getBulkRun-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - bad_request + - invalid_robot_id + example: bad_request + Webhook: + type: object + required: + - id + - url + - webhookEvent + - createdAt + properties: + id: + type: string + example: 6d7f1218-43fb-4735-ac71-21e81b1ab23e + description: Unique webhook ID + url: + type: string + example: https://example.com/v2/webhooks/callback/events + description: Webhook URL + webhookEvent: + type: string + enum: + - taskCapturedDataChanged + - taskFinished + - taskFinishedSuccessfully + - taskFinishedWithError + - tableExportFinishedSuccessfully + example: taskFinished + createdAt: + type: integer + example: 1678795867879 + description: Monitor creation date and time in the form of a Unix timestamp. + getWebhooks-200: + type: object + required: + - statusCode + - messageCode + - webhooks + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + webhooks: + type: object + required: + - totalCount + - items + properties: + totalCount: + type: number + example: 10 + description: Total number of webhooks this robot has + items: + type: array + description: Array of all webhooks + items: + $ref: '#/components/schemas/Webhook' + getWebhooks-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + example: bad_request + CreateNewWebhookBodyParams: + type: object + required: + - hookUrl + - eventType + properties: + hookUrl: + type: string + example: https://example.com/v2/webhooks/callback/events + description: Webhook URL + eventType: + type: string + enum: + - taskCapturedDataChanged + - taskFinished + - taskFinishedSuccessfully + - taskFinishedWithError + - tableExportFinishedSuccessfully + example: taskFinished + createNewWebhook-200: + type: object + required: + - statusCode + - messageCode + - webhook + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + webhook: + $ref: '#/components/schemas/Webhook' + createNewWebhook-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - bad_request + - body_parse_error + - invalid_hookUrl + - invalid_eventType + example: bad_request + deleteWebhook-200: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 200 + messageCode: + type: string + enum: + - success + deleteWebhook-400: + type: object + required: + - statusCode + - messageCode + properties: + statusCode: + type: number + enum: + - 400 + messageCode: + type: string + enum: + - invalid_robot_id + - invalid_webhook_id + - bad_request + example: invalid_robot_id + RobotTaskWebhook: + type: object + required: + - id + - inputParameters + - robotId + - createdAt + - runByAPI + - triedRecordingVideo + - capturedTexts + - capturedScreenshots + - capturedLists + properties: + id: + type: string + example: f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0 + description: Unique task ID + inputParameters: + $ref: '#/components/schemas/InputParameters' + robotId: + type: string + example: 4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06 + description: Unique robot ID + status: + type: string + enum: + - failed + - successful + - in-progress + example: successful + description: task status + runByUserId: + type: string + nullable: true + example: null + description: User ID who ran the robot on the dashboard + robotBulkRunId: + type: string + nullable: true + example: null + description: Robot bulk run ID associated with this task + runByTaskMonitorId: + type: string + nullable: true + example: null + description: Monitor ID that ran this check + runByAPI: + type: boolean + example: true + description: Whether the robot was ran through the API + createdAt: + type: integer + example: 1678795867879 + description: Task creation date and time in the form of a Unix timestamp + startedAt: + type: integer + nullable: true + example: 1678795867879 + description: Task start date and time in the form of a Unix timestamp + finishedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + Task finish date and time in the form of a Unix timestamp. + + + If `null`, it means robot is still running and capturing data. + + + Tasks time out with an error if they are not finished within 15 + minutes (or the maximum duration allowed on your plan). + userFriendlyError: + type: string + nullable: true + example: null + description: If task fails, a user-friendly error will be provided here. + triedRecordingVideo: + type: boolean + example: true + description: > + Whether the robot tried to record a video while performing this + task. + + + You can change a robot's video recording setting on its Settings + page. + + + Robots try to record a video when a task is failed and auto-retried + as well. + videoUrl: + type: string + nullable: true + example: >- + https://prod-browseai-captured-data.s3.amazonaws.com/1fae674a-2788-46a8-83c8-95c4664c6d25/6326b3c1-7b16-4256-a323-7d8d8954bd4e/1061671f-7f71-42ac-bb9a-207d126d1f3a/system-1620230966-b1a9688b-05d3-4682-beeb-9ce035e482b1.mp4 + description: >- + If a video was recorded for this task, this is the link to the + video. + videoRemovedAt: + type: integer + nullable: true + example: 1678795867879 + description: > + After your account's data retention period, task videos get removed + and this field will be video removal date and time in the form of a + Unix timestamp. + retriedOriginalTaskId: + type: string + nullable: true + example: 673da019-bf0c-476e-9c4f-d35252a151dc + description: >- + The ID of the original failed task this task was retrying. For + example, if task A failed and was retried by task B, and task B was + retried by task C, `retriedOriginalTaskId` will point to task A in + both task B and C. + retriedByTaskId: + type: string + nullable: true + example: null + description: > + The ID of the task that retried this task, if this task failed with + an error and was retried. + + + Failed tasks get retried if "Double Check" option is enabled on + robot Settings page. "Double Check" is enabled by default. + capturedTexts: + $ref: '#/components/schemas/CapturedTexts' + capturedScreenshots: + $ref: '#/components/schemas/CapturedScreenshots' + capturedLists: + $ref: '#/components/schemas/CapturedLists' + parameters: + authorization: + in: header + name: authorization + required: true + schema: + type: string + example: Bearer YOUR_SECRET_API_KEY + description: > + You can generate a new API key on [your + dashboard](https://dashboard.browse.ai/api) if you do not have one. diff --git a/sdks/db/intermediate-fixed-specs/chatkitty/openapi.yaml b/sdks/db/intermediate-fixed-specs/chatkitty/openapi.yaml new file mode 100644 index 0000000000..20a357a284 --- /dev/null +++ b/sdks/db/intermediate-fixed-specs/chatkitty/openapi.yaml @@ -0,0 +1,15837 @@ +openapi: 3.0.1 +info: + title: ChatKitty Platform API + description: |- + OpenAPI specification (OAS) for the ChatKitty Platform API. + See the Interactive Docs to try ChatKitty API methods without writing code, + and get the complete schema of resources exposed by the API. + termsOfService: https://chatkitty.com/terms-of-service + contact: + name: Support + url: mailto:support@chatkitty.com + license: + name: MIT + url: https://opensource.org/licenses/MIT + version: 2.57.0 +externalDocs: + description: Platform API Interactive Docs + url: https://api.chatkitty.com/docs/reference +servers: + - url: https://api.chatkitty.com +tags: + - name: analytics + description: Export analytics data from your ChatKitty application + x-displayName: Analytics + - name: application + description: Configure and manage your ChatKitty application + x-displayName: Application + - name: channels + description: Operations to create, retrieve, update and delete channels + x-displayName: Channels + - name: chat-sessions + description: Chat session operations + x-displayName: Chat Sessions + - name: function-versions + description: Chat function version operations + x-displayName: Chat Function Versions + - name: functions + description: Chat function operations + x-displayName: Chat Functions + - name: imports + description: Import user, channel, message data into your ChatKitty application + x-displayName: Imports + - name: jobs + description: >- + Retrieve information about long running scheduled jobs like imports and + exports + x-displayName: Jobs + - name: messages + description: Operations to retrieve, update and delete messages + x-displayName: Messages + - name: runtime + description: Chat runtime operations + x-displayName: Chat Runtime + - name: threads + description: Message thread operations + x-displayName: Threads + - name: user-sessions + description: User session operations + x-displayName: User Sessions + - name: users + description: User operations + x-displayName: Users +paths: + /v1/analytics/messages: + post: + tags: + - analytics + summary: Export message analytics + description: Batch export message analytics data + operationId: export-message-analytics + responses: + '202': + description: Export job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + x-codeSamples: [] + /v1/analytics/users: + post: + tags: + - analytics + summary: Export user analytics + description: Batch export user analytics data + operationId: export-user-analytics + responses: + '202': + description: Export job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: [] + /v1/application: + get: + tags: + - application + summary: Retrieve the authenticated application + description: >- + Returns the ChatKitty application associated with the authentication + credentials used. + + + You must use an **OAuth V2 Bearer token** to access this endpoint. + operationId: retrieve-authenticated-application + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:application + x-codeSamples: + - lang: cURL + source: | + curl -X 'GET' \ + 'https://api.chatkitty.com/v1/application' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Application.retrieveAuthenticatedApplication() + /v1/application/settings: + get: + tags: + - application + summary: Retrieve the authenticated application settings + description: Returns the current settings configuring this application + operationId: retrieve-authenticated-application-settings + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:application + x-codeSamples: + - lang: cURL + source: | + curl -X 'GET' \ + 'https://api.chatkitty.com/v1/application/settings' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: > + // npm install chatkitty-platform-sdk + + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await + chatkitty.Application.retrieveAuthenticatedApplicationSettings() + put: + tags: + - application + summary: Update the authenticated application settings + description: Update the settings configuring this application + operationId: update-authenticated-application-settings + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationSettingsResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - update:application + x-codeSamples: + - lang: cURL + source: | + curl -X 'PUT' \ + 'https://api.chatkitty.com/v1/application/settings' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "guestUsers": "DISABLED", + "userCreatedChannels": "DISABLED" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Application.updateAuthenticatedApplicationSettings({ + guestUsers: 'DISABLED', + userCreatedChannels: 'DISABLED' + }) + /v1/channels: + get: + tags: + - channels + summary: List channels + description: Returns a page of channels belonging to this application + operationId: list-channels + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: type + in: query + description: Filters by channel type + required: false + schema: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + - name: members + in: query + description: Filters by channel members using their usernames + required: false + schema: + uniqueItems: true + type: array + items: + type: string + - name: startTime + in: query + description: 'Filters for channels created within a time range: start time' + required: false + schema: + type: string + format: date-time + - name: endTime + in: query + description: 'Filters for channels created within a time range: end time' + required: false + schema: + type: string + format: date-time + - name: properties + in: query + description: Filters by channel custom properties + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels?page=0&size=5' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannels() + post: + tags: + - channels + summary: Create a channel + description: Creates a new channel or returns an equivalent existing channel + operationId: create-channel + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "PUBLIC", + "name": "b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.createChannel({ + type: "PUBLIC", + name: "b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7" + }) + /v1/channels/{id}: + get: + tags: + - channels + summary: Retrieve a channel + description: Returns a channel by ID + operationId: retrieve-channel + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.retrieveChannel(55913) + delete: + tags: + - channels + summary: Delete a channel + description: Deletes a channel by ID + operationId: delete-channel + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - delete:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.deleteChannel(55913) + patch: + tags: + - channels + summary: Update a channel + description: Updates a channel properties + operationId: update-channel + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - update:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PATCH' \ + 'https://api.chatkitty.com/v1/channels/55913' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json+merge-patch' \ + -d '{ + "displayName": "A chatty channel" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.updateChannel(55913, { + displayName: "A chatty channel" + }) + /v1/channels/{id}/events: + post: + tags: + - channels + summary: Send a channel event + description: Sends a custom channel event + operationId: send-channel-event + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelGenericEventResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelGenericEventResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - create:channel_event + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/events' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "My Custom Event", + "properties": { + "payload": "Boom!", + "stuff": { + "favoriteNumber": 42, + "favoriteMovie": "Lilo and Stitch" + } + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelEvent(55913, { + type: "My Custom Event", + properties: { + payload: "Boom!", + stuff: { + "favoriteNumber": 42, + "favoriteMovie": "Lilo and Stitch" + } + } + }) + /v1/channels/{id}/invites: + get: + tags: + - channels + summary: List channel invites + description: Returns a page of invites sent to join this channel + operationId: list-channel-invites + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelInviteResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel_invite + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/invites?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelInvites(67026) + post: + tags: + - channels + summary: Send a channel invite + description: Sends a channel invite to user + operationId: send-channel-invite + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChannelInviteResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelInviteResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:channel_invite + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/67026/invites' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + user: { + "username": "jane@chatkitty.com" + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelInvite(67026, { + user: { + username: "jane@chatkitty.com" + } + }) + /v1/channels/{id}/keystrokes: + post: + tags: + - channels + summary: Send channel keystrokes + description: Sends keystrokes in this channel on behalf of a user + operationId: send-channel-keystrokes + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/CreateDelegatedReplyThreadKeystrokesResource + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:keystrokes + x-codeSamples: [] + /v1/channels/{id}/members: + get: + tags: + - channels + summary: List a channel's members + description: Returns a page of channel members + operationId: list-channel-members + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/members?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMembers(67026) + post: + tags: + - channels + summary: Add a channel member + description: Makes a user a group channel member + operationId: add-channel-member + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserReference' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/members' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "username": "jane@chatkitty.com" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.addChannelMember(55913, { + username: "jane@chatkitty.com" + }) + /v1/channels/{id}/members/{user_id}: + delete: + tags: + - channels + summary: Remove a channel member + description: Removes a member from a group channel + operationId: remove-channel-member + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: user_id + in: path + description: User ID of member to be removed + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - delete:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913/members/14503' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.removeChannelMember(55913, 14503) + /v1/channels/{id}/memberships: + get: + tags: + - channels + summary: List channel memberships + description: Returns a page of channel membership info for this channel + operationId: list-channel-memberships + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelMembershipResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/memberships?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMemberships(702) + /v1/channels/{id}/messages: + get: + tags: + - channels + summary: List channel messages + description: Returns a page of messages sent in this channel + operationId: list-channel-messages + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - name: username + in: query + required: false + schema: + type: string + - name: query + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelMessages(702) + post: + tags: + - channels + summary: Send a channel message + description: Sends a message in this channel as the system or on behalf of a user + operationId: send-channel-message + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateMessageResource' + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + format: binary + groupTag: + type: string + username: + type: string + properties: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - create:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/702/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "TEXT", + "body": "🌞" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.sendChannelMessage(702, { + "type": "TEXT", + "body": "🌞" + }) + /v1/channels/{id}/moderators: + get: + tags: + - channels + summary: Lists a channel's moderators + description: Returns a page of channel moderators + operationId: list-channel-moderators + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:channel_moderator + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/67026/moderators?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelModerators(67026) + post: + tags: + - channels + summary: Add a channel moderator + description: Makes a user a group channel moderator + operationId: add-channel-moderator + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserReference' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - read:channel_membership + - create:channel_moderator + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/channels/55913/moderators' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "username": "jane@chatkitty.com" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.addChannelModerator(55913, { + username: "jane@chatkitty.com" + }) + /v1/channels/{id}/moderators/{user_id}: + delete: + tags: + - channels + summary: Remove a channel moderator + description: Removes a moderator from a group channel + operationId: remove-channel-moderator + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: user_id + in: path + description: User ID of moderator to be removed + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:user + - delete:channel_moderator + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/channels/55913/moderators/14503' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.removeChannelModerator(55913, 14503) + /v1/channels/{id}/participants: + get: + tags: + - channels + summary: List channel participants + description: >- + Returns a page of channel active participants: members that currently + online + operationId: list-channel-participants + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:chat_session + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/channels/702/participants?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Channels.listChannelParticipants(702) + /v1/channels/{id}/reported-messages: + get: + tags: + - channels + summary: List channel reported messages + description: Returns a page of reported messages in this channel + operationId: list-channel-reported-messages + parameters: + - name: id + in: path + description: Channel ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:channel + - read:message_report + x-codeSamples: [] + /v1/chat-sessions: + get: + tags: + - chat-sessions + summary: List chat sessions + description: Returns a page of chat sessions belonging to this application + operationId: list-chat-sessions + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: state + in: query + description: Filters by state + required: false + schema: + type: string + enum: + - ACTIVE + - ENDED + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatSessionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:chat_session + x-codeSamples: [] + /v1/function-versions/{id}: + get: + tags: + - function-versions + summary: Retrieve a chat function version + description: Returns a chat function version by ID + operationId: retrieve-function-version + parameters: + - name: id + in: path + description: Chat function version ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/function-versions/13515' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.FunctionVersions.retrieveFunctionVersion(13515) + /v1/functions/{id}: + get: + tags: + - functions + summary: Retrieve a chat function + description: Returns a chat function by ID + operationId: retrieve-function + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.retrieveFunction(1) + + + /v1/functions/{id}/current-version: + get: + tags: + - functions + summary: Retrieve chat function current version + description: Returns the version of this chat function currently deployed + operationId: retrieve-function-current-version + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - read:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/13515/current-version' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.retrieveFunctionCurrentVersion(13515) + + + /v1/functions/{id}/invocations: + get: + tags: + - functions + summary: List chat function invocations + description: >- + Returns a page of invocations of this chat function. A log of previous + runs of the function + operationId: list-function-invocations + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionInvocationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - read:function_invocation + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1/invocations?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Functions.listFunctionInvocations(1) + /v1/functions/{id}/versions: + get: + tags: + - functions + summary: List chat function versions + description: Returns a page of versions of this chat function + operationId: list-function-versions + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - read:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/functions/1/versions?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Functions.listFunctionVersions(1) + + post: + tags: + - functions + summary: Create a chat function version + description: Creates a new version of this chat function + operationId: create-function-version + parameters: + - name: id + in: path + description: Chat function ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChatFunctionVersionResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionVersionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:function + - create:function_version + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/functions/1/versions' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "handlerScript": "const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('\''Hello '\'' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n '\''name'\'': email,\n '\''displayName'\'': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { '\''id'\'': user.data.id });\n });\n\n return logs;\n}" + } + + ' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Functions.createFunctionVersion(13515,{ + "handlerScript": "const logs = [];\n\nasync function handleEvent(event: UserAttemptedStartSessionEvent, context: Context) {\n let email = event.username;\n let displayName = event.authParams.displayName || email;\n\n let userApi = context.getUserApi();\n\n logs.push('Hello ' + event.username);\n\n await userApi.getUserExists(email)\n .catch(async () => {\n let user = await userApi.createUser(\n {\n 'name': email,\n 'displayName': displayName\n }\n );\n\n let channelApi = context.getChannelApi();\n\n await channelApi.createChannelMember(702, { 'id': user.data.id });\n });\n\n return logs;\n}" + }) + /v1/imports/channels: + post: + tags: + - imports + summary: Import channels + description: Batch imports channels from a JSON array file + externalDocs: + description: >- + Learn more about importing channels and the channel import JSON array + file format + url: https://chatkitty.com/docs/concepts/imports#importing-channels + operationId: import-channels + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with channels + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:channel + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/channels' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@channels_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["jane@chatkitty.com","john@chatkitty.com"]}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importChannels(file) + /v1/imports/channels/{id}/members: + post: + tags: + - imports + summary: Import channel members + description: Batch imports channel members from a JSON array file + externalDocs: + description: >- + Learn more about importing channel members and the channel member + import JSON array file format + url: https://chatkitty.com/docs/concepts/imports#importing-channel-members + operationId: import-channel-members + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with user references to be added as members + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 205 + type: CHANNEL_MEMBERS_IMPORT + state: PENDING + createdTime: '2022-05-28T05:30:44.265Z' + endedTime: '2022-05-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/205 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:channel_membership + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/channels/1/members' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@members_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"idempotencyKey":"unique-external-id","type":"DIRECT","members":["b2a6da08-88bf-4778-b993-7234e6d8a3ff","c6f75947-af48-4893-a78e-0e0b9bd68580"]}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importChannelMembers(1, [{ + idempotencyKey: "123", + username: "string" + }]) + /v1/imports/messages: + post: + tags: + - imports + summary: Import messages + description: Batch imports messages from a JSON array file + externalDocs: + description: >- + Learn more about importing messages and the message import JSON array + file format + url: https://chatkitty.com/docs/concepts/imports#importing-messages + operationId: import-messages + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with messages + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 203 + type: MESSAGE_IMPORT + state: PENDING + createdTime: '2022-04-28T05:30:44.265Z' + endedTime: '2022-04-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/203 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@messages_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{"type":"TEXT","body":"Hello, World!"}]'], + "import.json", + { + type: "application/json" + }) + + await chatkitty.Imports.importMessages(file) + /v1/imports/users: + post: + tags: + - imports + summary: Import users + description: Batch imports users from a JSON array file + externalDocs: + description: >- + Learn more about importing users and the user import JSON array file + format + url: https://chatkitty.com/docs/concepts/imports#importing-users + operationId: import-users + requestBody: + content: + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + description: JSON array file with users + format: binary + responses: + '202': + description: Import job accepted + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + example: + id: 202 + type: USER_IMPORT + state: PENDING + createdTime: '2022-03-28T05:30:44.265Z' + endedTime: '2022-03-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/202 + application: + href: https://api.chatkitty.com/v1/applications/1 + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/imports/users' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: multipart/form-data' \ + -F 'file=@users_import_file.json;type=application/json + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + const file = new File( + ['[{name:"jane@chatkitty.com",displayName:"JaneDoe",isGuest:false,properties:{favoriteNumber:42}}]'], + "import.json", + { + type: "application/json" + }) + + + await chatkitty.Imports.importUsers(file) + /v1/jobs: + get: + tags: + - jobs + summary: List jobs + description: Returns a page of jobs created for this application + operationId: list-jobs + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: running + in: query + description: Filters for jobs currently running + required: false + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelApplicationJobResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:job + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/jobs' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Jobs.listJobs() + /v1/jobs/{id}: + get: + tags: + - jobs + summary: Retrieve a job + description: Returns a job by ID + operationId: retrieve-job + parameters: + - name: id + in: path + description: Job ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationJobResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:job + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/jobs/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Jobs.retrieveJob(1) + /v1/messages: + get: + tags: + - messages + summary: List messages + description: Returns a page of messages belonging to this application + operationId: list-messages + parameters: + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - name: username + in: query + description: Filters messages by a sender's username + required: false + schema: + type: string + - name: query + in: query + description: Filters text messages by text contained in the message body + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.listMessages() + delete: + tags: + - messages + summary: Delete messages + description: Deletes all messages belonging to this application + operationId: delete-messages + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - delete:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.deleteMessages() + /v1/messages/{id}: + get: + tags: + - messages + summary: Retrieve a message + description: Returns a message by ID + operationId: retrieve-message + parameters: + - name: id + in: path + description: Message ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages/44902' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.retrieveMessage(44902) + delete: + tags: + - messages + summary: Delete a message + description: Deletes a message by ID + operationId: delete-message + parameters: + - name: id + in: path + description: Message ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - delete:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/messages/67528' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.deleteMessage(67528) + + patch: + tags: + - messages + summary: Update a message + description: Updates a message properties + operationId: update-message + parameters: + - name: id + in: path + description: Message ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - update:message + x-codeSamples: [] + /v1/messages/{id}/read-receipts: + get: + tags: + - messages + summary: List message read receipts + description: Returns a page of read receipts for this message + operationId: list-message-read-receipts + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelMessageReadReceiptResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:message + - read:read_receipt + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/messages/1/read-receipts?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Messages.listMessageReadReceipts(1) + + /v1/runtimes/nodejs: + get: + tags: + - runtime + summary: Retrieve NodeJS chat runtime + description: Return this application's NodeJS chat runtime + operationId: retrieve-nodejs-runtime + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.retrieveNodejsRuntime() + + /v1/runtimes/nodejs/dependencies: + put: + tags: + - runtime + summary: Update NodeJS chat runtime NPM dependencies + description: Updates the NPM dependencies for this application's NodeJS chat runtime + operationId: update-nodejs-runtime-dependencies + requestBody: + content: + application/vnd.chatkitty+json: + schema: + type: array + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/dependencies' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '[ + { + "name": "firebase", + "version": "^9.8.2" + } + ]' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeDependencies([ + { + "name": "firebase", + "version": "^9.8.2" + } + ]) + /v1/runtimes/nodejs/environment-variables: + put: + tags: + - runtime + summary: Update NodeJS chat runtime environment variables + description: >- + Updates the runtime environment variables of this application's NodeJS + chat runtime + operationId: update-nodejs-runtime-environment-variables + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeEnvironmentVariablesProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/environment-variables' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "CUSTOM_ENV_AWS_REGION": "us-east-1" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeEnvironmentVariables({ + "CUSTOM_ENV_AWS_REGION": "us-east-1" + }) + /v1/runtimes/nodejs/functions: + get: + tags: + - runtime + summary: List NodeJS chat runtime functions + description: Returns a page of functions for this application's NodeJS chat runtime + operationId: list-nodejs-runtime-functions + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - read:function + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/functions?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.listNodejsRuntimeFunctions() + + post: + tags: + - runtime + summary: Create a NodeJS chat runtime function + description: Creates a NodeJS chat function for this runtime + operationId: create-nodejs-runtime-function + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreateChatFunctionResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatFunctionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - read:function + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/functions' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "user.attempted.start_session", + "name": "User Attempted Start Session" + }' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + + await chatkitty.Runtime.createNodejsRuntimeFunction({ + "type": "user.attempted.start_session", + "name": "User Attempted Start Session" + }) + + /v1/runtimes/nodejs/initialization-script: + put: + tags: + - runtime + summary: Update NodeJS chat runtime initialization script + description: >- + Updates the initialization script for this application's NodeJS chat + runtime + operationId: update-nodejs-runtime-initialization-script + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatRuntimeResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:runtime + - update:runtime + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/runtimes/nodejs/initialization-script' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "script": "import firebase from '\''firebase'\'';\r\nimport '\''@firebase/auth'\'';\r\nimport '\''@firebase/firestore'\'';\r\n\r\nconst firebaseConfig = {\r\n apiKey: '\''AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY'\'',\r\n authDomain: '\''chatkitty-example.firebaseapp.com'\'',\r\n databaseURL: '\''https://chatkitty-example.firebaseio.com'\'',\r\n projectId: '\''chatkitty-example'\'',\r\n storageBucket: '\''chatkitty-example.appspot.com'\'',\r\n messagingSenderId: '\''540634290949'\'',\r\n appId: '\''1:540634290949:web:cd754ff7e98087230ff56c'\'',\r\n measurementId: '\''G-BB7Q5DRQK6'\'',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Runtime.updateNodejsRuntimeInitializationScript({ + "script": "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + }) + /v1/threads/{id}: + get: + tags: + - threads + summary: Retrieve a thread + description: Returns a thread by ID + operationId: retrieve-thread + parameters: + - name: id + in: path + description: Reply thread ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/threads/67528' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: |+ + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.retrieveThread(67528) + + /v1/threads/{id}/keystrokes: + post: + tags: + - threads + summary: Send thread keystrokes + description: Sends keystrokes in this thread on behalf of a user + operationId: send-thread-keystrokes + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: >- + #/components/schemas/CreateDelegatedReplyThreadKeystrokesResource + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ReplyThreadKeystrokesResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + - read:user + - create:keystrokes + x-codeSamples: [] + /v1/threads/{id}/messages: + get: + tags: + - threads + summary: List reply thread messages + description: Returns a page of replies sent in this thread + operationId: list-thread-messages + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + - read:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/threads/1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.listThreadMessages(1) + post: + tags: + - threads + summary: Send a reply thread message + description: >- + Sends a reply message in this thread as the system or on behalf of a + user + operationId: send-thread-message + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateMessageResource' + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + format: binary + groupTag: + type: string + properties: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/MessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:thread + - read:user + - create:message + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/threads/44902/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "type": "TEXT", + "body": "🌞", + + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Threads.sendThreadMessage(44902, { + "type": "TEXT", + "body": "🌞", + + }) + /v1/user-sessions: + get: + tags: + - user-sessions + summary: List user sessions + description: Returns a page of user sessions belonging to this application + operationId: list-user-sessions + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: state + in: query + description: Filters by state + required: false + schema: + type: string + enum: + - ACTIVE + - ENDED + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserSessionResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user_session + x-codeSamples: [] + /v1/users: + get: + tags: + - users + summary: List users + description: Returns a page of users belonging to this application + operationId: list-users + parameters: + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + - name: name + in: query + description: Filters by username + required: false + schema: + type: string + - name: properties + in: query + description: Filters by user custom properties + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUsers() + post: + tags: + - users + summary: Create a user + description: Creates a new user + operationId: create-user + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CreatePersonChatUserResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - create:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/users' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "name": "jane@chatkitty.com", + "displayName": "Jane Doe", + "isGuest": false, + "properties": { + "favoriteNumber": 42 + } + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.createUser({ + "name": "jane@chatkitty.com", + "displayName": "Jane Doe", + "isGuest": false, + "properties": { + "favoriteNumber": 42 + } + }) + head: + tags: + - users + summary: Check a user exists + description: Checks if a user exists + operationId: check-user-exists + parameters: + - name: name + in: query + description: Username of the user + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Empty object + application/vnd.chatkitty+json: + schema: + type: object + description: Empty object + application/vnd.hal+json: + schema: + type: object + description: Empty object + application/hal+json: + schema: + type: object + description: Empty object + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: User does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'HEAD' \ + 'https://api.chatkitty.com/v1/users?name=Jane%20Doe' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.checkUserExists("Jane Doe") + /v1/users/{id}: + get: + tags: + - users + summary: Retrieve a user + description: Returns a user by ID + operationId: retrieve-user + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.retrieveUser(1) + delete: + tags: + - users + summary: Delete a user + description: Delets a user + operationId: delete-user + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ApplicationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - delete:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.deleteUser(1) + patch: + tags: + - users + summary: Update a user + description: Updates a user + operationId: update-user + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json+merge-patch: + schema: + $ref: '#/components/schemas/JsonMergePatch' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - update:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PATCH' \ + 'https://api.chatkitty.com/v1/users/1' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json+merge-patch' \ + -d '{ + "displayName": "Jane Doe" + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.updateUser(1) + /v1/users/{id}/channels: + get: + tags: + - users + summary: List a user's channels + description: Returns a page of channels for this user created or joined + operationId: list-user-channels + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: page + in: query + description: Zero-based page index (0..N) + required: false + schema: + minimum: 0 + type: integer + default: 0 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + minimum: 1 + type: integer + default: 25 + - name: sort + in: query + description: >- + Sorting criteria in the format: property,(asc|desc). Default sort + order is ascending. Multiple sort criteria are supported. + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + application/hal+json: + schema: + $ref: '#/components/schemas/PagedModelChannelResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - read:channels + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/channels?page=0&size=25' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserChannels(1) + /v1/users/{id}/display-picture: + post: + tags: + - users + summary: Update a user's display picture + description: Updates a user's display picture + operationId: update-user-display-picture + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateExternalFileProperties' + multipart/form-data: + schema: + required: + - file + type: object + properties: + file: + type: string + format: binary + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - update:user + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'POST' \ + 'https://api.chatkitty.com/v1/users/1/display-picture' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "url": "https://example.com/files/jane.png", + "name": "jane.png", + "contentType": "image/png", + "size": 32768 + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.updateUserDisplayPicture(1, { + "url": "https://example.com/files/jane.png", + "name": "jane.png", + "contentType": "image/png", + "size": 32768 + }) + /v1/users/{id}/messages: + get: + tags: + - users + summary: List a user's messages + description: Returns a page of messages sent by this user + operationId: list-user-messages + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + - name: unread + in: query + description: Filters by returning unread messages + required: false + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelMessageResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - read:channels + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/messages' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserMessages(1) + /v1/users/{id}/notifications: + get: + tags: + - users + summary: List a user's notifications + description: Returns a page of notifications received by this user + operationId: list-user-notifications + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: size + in: query + description: The size of the page to be returned + required: false + schema: + type: integer + format: int32 + - name: start + in: query + description: >- + Start cursor value. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: integer + format: int64 + - name: next + in: query + description: >- + Next page cursor value. Do not set manually. Provided by the + Platform API pagination engine to fetch subsequent pages + required: false + schema: + type: integer + format: int64 + - name: relation + in: query + description: >- + Page cursor relation. Do not set manually. Provided by the Platform + API pagination engine to fetch previous or next pages + required: false + schema: + type: string + enum: + - SELF + - PREVIOUS + - NEXT + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + application/hal+json: + schema: + $ref: '#/components/schemas/CursorPagedModelNotificationResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - read:notifications + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/notifications' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.listUserNotifications(1) + /v1/users/{id}/secrets/{name}: + get: + tags: + - users + summary: Retrieve a user secret + description: Returns a user secret + operationId: retrieve-user-secret + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: name + in: path + description: The secret's name + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SecretResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/SecretResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/SecretResource' + application/hal+json: + schema: + $ref: '#/components/schemas/SecretResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user_secret + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'GET' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Secret%20Name' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.retrieveUserSecret(1,"Secret Name") + put: + tags: + - users + summary: Set a user secret + description: Sets a user secret's value + operationId: set-user-secret + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: name + in: path + description: The secret's name + required: true + schema: + type: string + requestBody: + content: + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/SecretResource' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - update:user_secret + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'PUT' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Jane%20Doe' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' \ + -H 'Content-Type: application/json' \ + -d '{ + "secret": "My secret is... well, I'\''d never tell." + }' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.setUserSecret(1, "Jane Doe", { + "secret": "My secret is... well, I'd never tell." + }) + delete: + tags: + - users + summary: Remove a user secret + description: Removes a user secret's value + operationId: remove-user-secret + parameters: + - name: id + in: path + description: User ID + required: true + schema: + type: integer + format: int64 + - name: name + in: path + description: The secret's name + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.chatkitty+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/vnd.hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + application/hal+json: + schema: + $ref: '#/components/schemas/ChatUserResource' + '400': + description: Client error + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ClientError + message: A client error occurred, check your request + timestamp: '2022-01-16T06:26:49.627204600Z' + '401': + description: >- + Unauthorized: Full authentication is required to access this + resource + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: unauthorized + error_description: Full authentication is required to access this resource + '403': + description: Access is denied + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationError' + example: + error: access_denied + error_description: Access is denied + '404': + description: Resource not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + example: + error: ResourceNotFoundError + message: Resource not found + timestamp: '2022-01-16T06:26:49.627204600Z' + security: + - application_authorization: + - read:user + - delete:user_secret + x-codeSamples: + - lang: cURL + source: | + curl --location --request 'DELETE' \ + 'https://api.chatkitty.com/v1/users/1/secrets/Secret%20Name' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ACCESS-TOKEN' + - lang: JavaScript + source: | + // npm install chatkitty-platform-sdk + + const chatkitty = new ChatKitty({ + clientId: 'CLIENT-ID', + clientSecret: 'CLIENT-SECRET' + }) + + await chatkitty.Users.removeUserSecret(1,"Secret Name") +components: + schemas: + AuthenticationError: + required: + - error + - error_description + type: object + properties: + error: + type: string + error_description: + type: string + ApiError: + required: + - error + - message + - timestamp + type: object + properties: + error: + type: string + explanation: + type: string + message: + type: string + properties: + type: object + additionalProperties: + type: object + writeOnly: true + timestamp: + type: string + SecretResource: + type: object + properties: + secret: + type: object + description: Secret value + example: + secret: My secret is... well, I'd never tell. + ChatUserPresenceProperties: + required: + - online + - status + type: object + properties: + online: + type: boolean + description: True if this user has an active user session + status: + type: string + description: The availability status of this user + description: Presence status of this user + ChatUserProperties: + required: + - display_name + - display_picture_url + - id + - isGuest + - name + - presence + - properties + - type + type: object + properties: + type: + type: string + description: Type of user + enum: + - PERSON + - BOT + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + call_status: + type: string + description: Call presence status of this user + enum: + - AVAILABLE + - IN_CALL + display_name: + type: string + description: Human readable name of this user. Shown to other users + display_picture_url: + type: string + description: URL for this user's display picture + isGuest: + type: boolean + description: True if this user was created by a guest user session + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + presence: + $ref: '#/components/schemas/ChatUserPresenceProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + ChatUserResource: + required: + - display_name + - display_picture_url + - id + - isGuest + - name + - presence + - properties + - type + type: object + properties: + type: + type: string + description: Type of user + enum: + - PERSON + - BOT + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + call_status: + type: string + description: Call presence status of this user + enum: + - AVAILABLE + - IN_CALL + display_name: + type: string + description: Human readable name of this user. Shown to other users + display_picture_url: + type: string + description: URL for this user's display picture + isGuest: + type: boolean + description: True if this user was created by a guest user session + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + presence: + $ref: '#/components/schemas/ChatUserPresenceProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/1 + channels: + href: https://api.chatkitty.com/v1/applications/1/users/1/channels + notifications: + href: https://api.chatkitty.com/v1/applications/1/users/1/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/1/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + Link: + type: object + properties: + href: + type: string + hreflang: + type: string + title: + type: string + type: + type: string + deprecation: + type: string + profile: + type: string + name: + type: string + templated: + type: boolean + ChatRuntimeScriptProperties: + required: + - script + type: object + properties: + script: + type: string + description: The JavaScript/TypeScript source of this script + example: + script: "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + ChatRuntimeDependencyProperties: + required: + - default_dependency + - name + - version + type: object + properties: + default_dependency: + type: boolean + description: >- + True if this NPM package is automatically installed by ChatKitty and + available by default in your chat functions + name: + type: string + description: The name of the dependency NPM package + version: + type: string + description: The version of the NPM package + description: The NPM dependencies version of this runtime + example: + name: firebase + version: ^9.8.2 + ChatRuntimeEnvironmentVariablesProperties: + type: object + additionalProperties: + type: string + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this runtime + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this runtime + example: + CUSTOM_ENV_AWS_REGION: us-east-1 + ChatRuntimeProperties: + required: + - dependencies + - environment_variables + - id + - type + - version + type: object + properties: + type: + type: string + description: The type of this runtime. Always NODEJS + enum: + - NODEJS + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + dependencies: + type: array + description: The NPM dependencies version of this runtime + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + environment_variables: + type: object + additionalProperties: + type: string + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + initialization_script: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + version: + type: string + description: The semantic version of this runtime + example: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + ChatRuntimeResource: + required: + - dependencies + - environment_variables + - id + - type + - version + type: object + properties: + type: + type: string + description: The type of this runtime. Always NODEJS + enum: + - NODEJS + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + dependencies: + type: array + description: The NPM dependencies version of this runtime + items: + $ref: '#/components/schemas/ChatRuntimeDependencyProperties' + environment_variables: + type: object + additionalProperties: + type: string + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + description: >- + Environment variable set for this runtime. Accessible in the + initialization script and chat functions associated with this + runtime + initialization_script: + $ref: '#/components/schemas/ChatRuntimeScriptProperties' + version: + type: string + description: The semantic version of this runtime + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/runtimes/nodejs + dependencies: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/dependencies + initializationScript: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/initialization-script + functions: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationSettingsProperties: + required: + - guest_users + - user_created_channels + type: object + properties: + guest_users: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + user_created_channels: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + ApplicationSettingsResource: + required: + - guest_users + - user_created_channels + type: object + properties: + guest_users: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + user_created_channels: + type: string + description: Toggle state of this settings option + enum: + - DISABLED + - ENABLED + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + features: + guest_users: ENABLED + user_created_channels: DISABLED + CreateExternalFileProperties: + required: + - content_type + - name + - size + - url + type: object + properties: + content_type: + type: string + description: File MIME content type + name: + type: string + description: File name + size: + type: integer + description: File size in bytes + format: int64 + url: + type: string + description: External file URL + example: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreatePersonChatUserResource: + required: + - display_name + - is_guest + - name + type: object + properties: + display_name: + type: string + description: Human readable name of this user. Shown to other users + is_guest: + type: boolean + description: True if this user was created by a guest user session + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + example: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMessageMentionProperties: + required: + - channel + - end_position + - start_position + - tag + - type + type: object + description: A channel mention + allOf: + - $ref: '#/components/schemas/MessageMentionProperties' + - type: object + properties: + channel: + $ref: '#/components/schemas/MessageMentionChannelProperties' + ChatUserMessageMentionProperties: + required: + - end_position + - start_position + - tag + - type + - user + type: object + description: A user mention + allOf: + - $ref: '#/components/schemas/MessageMentionProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + EmojiProperties: + required: + - aliases + - character + - description + - tags + type: object + properties: + aliases: + uniqueItems: true + type: array + description: List of possible aliases for this emoji + items: + type: string + description: List of possible aliases for this emoji + character: + type: string + description: The unicode character of this emoji + description: + type: string + description: Description of this emoji + tags: + uniqueItems: true + type: array + description: Tags used to describe this emoji + items: + type: string + description: Tags used to describe this emoji + description: The emoji these users reacted with + FileChatUserMessageProperties: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + - user + type: object + description: A file message sent by or behalf of a user + allOf: + - $ref: '#/components/schemas/FileMessageProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + - $ref: '#/components/schemas/MessageProperties' + FileChatUserMessageResource: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + - user + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + file: + $ref: '#/components/schemas/FileProperties' + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44904 + type: FILE + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44904 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + FileMessageProperties: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + allOf: + - $ref: '#/components/schemas/MessageProperties' + - type: object + properties: + file: + $ref: '#/components/schemas/FileProperties' + FileProperties: + required: + - content_type + - name + - size + - type + - url + type: object + properties: + type: + type: string + description: The type of this file. Either external or hosted by ChatKitty + enum: + - HOSTED + - EXTERNAL + content_type: + type: string + description: The mime type of this file + name: + type: string + description: The file name + size: + type: integer + description: The size of this file in bytes + format: int64 + url: + type: string + description: The file URL + description: The file data of this message + FileSystemMessageProperties: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + description: >- + A file message sent by this application itself. Used for systems + announcements independent of any user + allOf: + - $ref: '#/components/schemas/FileMessageProperties' + - $ref: '#/components/schemas/MessageProperties' + FileSystemMessageResource: + required: + - channel_id + - created_time + - file + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + file: + $ref: '#/components/schemas/FileProperties' + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44905 + type: SYSTEM_FILE + channelId: 702 + file: + url: https://example.com/files/my-application-file.png + name: file.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44905 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + MessageLinkPreviewImageProperties: + required: + - source + type: object + properties: + source: + type: string + description: The url source of this image + description: Image data of this link preview + MessageLinkPreviewProperties: + required: + - image + - title + - url + type: object + properties: + description: + type: string + description: Description of this link preview + image: + $ref: '#/components/schemas/MessageLinkPreviewImageProperties' + site_name: + type: string + description: The name of the site linked + title: + type: string + description: The title of this link + url: + type: string + description: The URL of the link being previewed + description: Embedded link preview data + MessageLinkProperties: + required: + - end_position + - source + - start_position + type: object + properties: + end_position: + type: integer + description: The ending index of this link within the message + format: int32 + preview: + $ref: '#/components/schemas/MessageLinkPreviewProperties' + source: + type: string + description: The href of the URL this message link represents + start_position: + type: integer + description: The starting index of this link within the message + format: int32 + description: Link previews in this message + MessageMentionChannelProperties: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: >- + Human readable name of this channel shown to users. Present if this + is a group channel + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + Present if this is a group channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: Channel properties embedded in channel mentions + MessageMentionProperties: + required: + - end_position + - start_position + - tag + - type + type: object + properties: + type: + type: string + description: The type of this message mention + enum: + - CHANNEL + - USER + end_position: + type: integer + description: The ending position of this mention reference inside its message + format: int32 + start_position: + type: integer + description: The starting position of this mention reference inside its message + format: int32 + tag: + type: string + description: The literal text referencing the mentioned entity inside the message + description: Mentions in this message + discriminator: + propertyName: type + mapping: + CHANNEL: '#/components/schemas/ChannelMessageMentionProperties' + USER: '#/components/schemas/ChatUserMessageMentionProperties' + MessageProperties: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageProperties' + FILE: '#/components/schemas/FileChatUserMessageProperties' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageProperties' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageProperties' + MessageReactionsSummaryProperties: + required: + - count + - emoji + - users + type: object + properties: + count: + type: integer + description: The number of users that reacted with this emoji + format: int64 + emoji: + $ref: '#/components/schemas/EmojiProperties' + users: + type: array + description: The users that reacted with this emoji + items: + $ref: '#/components/schemas/ChatUserProperties' + description: Reactions to this message + MessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + FILE: '#/components/schemas/FileChatUserMessageResource' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/FileChatUserMessageResource' + - $ref: '#/components/schemas/TextSystemMessageResource' + - $ref: '#/components/schemas/FileSystemMessageResource' + TextChatUserMessageProperties: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + - user + type: object + description: A text message sent by or behalf of a user + allOf: + - $ref: '#/components/schemas/TextMessageProperties' + - type: object + properties: + user: + $ref: '#/components/schemas/ChatUserProperties' + - $ref: '#/components/schemas/MessageProperties' + TextChatUserMessageResource: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + - user + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + body: + type: string + description: The text body of this message + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + links: + type: array + description: Link previews in this message + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + type: array + description: Mentions in this message + items: + $ref: '#/components/schemas/MessageMentionProperties' + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextMessageProperties: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + allOf: + - $ref: '#/components/schemas/MessageProperties' + - type: object + properties: + body: + type: string + description: The text body of this message + links: + type: array + description: Link previews in this message + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + type: array + description: Mentions in this message + items: + $ref: '#/components/schemas/MessageMentionProperties' + TextSystemMessageProperties: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + description: >- + A text message sent by this application itself. Used for systems + announcements independent of any user + allOf: + - $ref: '#/components/schemas/TextMessageProperties' + - $ref: '#/components/schemas/MessageProperties' + TextSystemMessageResource: + required: + - body + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + body: + type: string + description: The text body of this message + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + links: + type: array + description: Link previews in this message + items: + $ref: '#/components/schemas/MessageLinkProperties' + mentions: + type: array + description: Mentions in this message + items: + $ref: '#/components/schemas/MessageMentionProperties' + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 44903 + type: SYSTEM_TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: This is a system announcement. Keep calm and carry on. + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44903 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChatUserIdReference: + required: + - id + type: object + description: Reference to a user by ID + allOf: + - $ref: '#/components/schemas/ChatUserReference' + - type: object + properties: + id: + type: integer + description: 'User ID associated with this user ' + format: int64 + ChatUserReference: + type: object + description: Reference to a user + example: + username: jane@chatkitty.com + ChatUserUsernameReference: + required: + - username + type: object + description: Reference to a user by username + allOf: + - $ref: '#/components/schemas/ChatUserReference' + - type: object + properties: + username: + type: string + description: Username associated with this user + CreateFileMessageResource: + required: + - file + type: object + example: + type: FILE + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + allOf: + - $ref: '#/components/schemas/CreateMessageResource' + - type: object + properties: + file: + $ref: '#/components/schemas/CreateExternalFileProperties' + CreateMessageResource: + required: + - type + type: object + properties: + type: + type: string + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + user: + $ref: '#/components/schemas/ChatUserReference' + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/CreateTextMessageResource' + FILE: '#/components/schemas/CreateFileMessageResource' + CreateTextMessageResource: + required: + - body + type: object + example: + type: TEXT + body: Hello, World! + allOf: + - $ref: '#/components/schemas/CreateMessageResource' + - type: object + properties: + body: + type: string + description: The text body of this message + CreateDelegatedReplyThreadKeystrokesResource: + required: + - keys + - user + type: object + properties: + keys: + type: string + user: + $ref: '#/components/schemas/ChatUserReference' + ReplyThreadKeystrokesResource: + required: + - keys + - username + type: object + properties: + keys: + type: string + username: + type: string + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + CreateChatFunctionResource: + required: + - initialize_asynchronously + - name + - type + type: object + properties: + type: + type: string + description: + type: string + initialize_asynchronously: + type: boolean + name: + type: string + example: + type: user.attempted.start_session + name: User Attempted Start Session + ChatFunctionChatRuntimeProperties: + required: + - id + - type + - version + type: object + properties: + type: + type: string + description: The type of this runtime. Always NODEJS + enum: + - NODEJS + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + version: + type: string + description: The semantic version of this runtime + description: The runtime this function executes on. Always a NodeJS runtime + ChatFunctionResource: + required: + - current_version_number + - enabled + - id + - name + - runtime + - type + type: object + properties: + type: + type: string + description: The type of this function + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + current_version_number: + type: integer + description: >- + The current version number of this function. Incremented every time + a new version is deployed + format: int64 + description: + type: string + description: Optional description of this function + enabled: + type: boolean + description: True if this function is enabled + name: + type: string + description: The name of this function + runtime: + $ref: '#/components/schemas/ChatFunctionChatRuntimeProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationJobResource: + required: + - created_time + - id + - state + - type + type: object + properties: + type: + type: string + description: The type of application job + enum: + - CHANNEL_IMPORT + - CHANNEL_MEMBERS_IMPORT + - MESSAGE_IMPORT + - USER_IMPORT + - MESSAGE_ANALYTICS_EXPORT + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + format: date-time + ended_time: + type: string + format: date-time + file: + type: string + state: + type: string + description: The running state of an application job + enum: + - PENDING + - RUNNING + - FINISHED + - FAILED + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChatFunctionVersionResource: + required: + - handler_script + type: object + properties: + handler_script: + type: string + description: JavaScript/TypeScript code that runs when this function is executed + example: + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + ChatFunctionVersionResource: + required: + - handler_script + - id + - version_number + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + handler_script: + type: string + description: JavaScript/TypeScript code that runs when this function is executed + version_number: + type: integer + description: >- + The version number of this function version. Incremented from the + previous version + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChannelProperties: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelProperties' + PRIVATE: '#/components/schemas/PrivateChannelProperties' + DIRECT: '#/components/schemas/DirectChannelProperties' + ChannelResource: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelResource' + PRIVATE: '#/components/schemas/PrivateChannelResource' + DIRECT: '#/components/schemas/DirectChannelResource' + oneOf: + - $ref: '#/components/schemas/PublicChannelResource' + - $ref: '#/components/schemas/PrivateChannelResource' + - $ref: '#/components/schemas/DirectChannelResource' + DirectChannelProperties: + required: + - created_time + - id + - members + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + members: + type: array + description: >- + The members of this channel. Present if this is a direct channel. + For other channel types, use [**list channel + messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) + items: + $ref: '#/components/schemas/ChatUserProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: A direct channel + DirectChannelResource: + required: + - created_time + - id + - members + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + last_received_message: + $ref: '#/components/schemas/MessageProperties' + members: + type: array + description: >- + The members of this channel. Present if this is a direct channel. + For other channel types, use [**list channel + messages**](https://chatkitty.com/docs/api/reference#tag/channels/operation/list-channel-messages) + items: + $ref: '#/components/schemas/ChatUserProperties' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 19354 + type: DIRECT + creator: + id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + members: + - id: 2 + type: PERSON + name: aaron + displayName: aaron + displayPictureUrl: https://api.chatkitty.com/v1/picture/aaron + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + - id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + properties: {} + createdTime: '2021-05-18T20:40:29.472Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/19354 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/19354/events + application: + href: https://api.chatkitty.com/v1/applications/1 + PrivateChannelProperties: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: A private channel + PrivateChannelResource: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 55914 + type: PRIVATE + name: a3e9118e-4c60-4a87-a19f-cb8bf5351462 + displayName: Our private channel + properties: {} + createdTime: '2021-09-28T01:45:20.542Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55914 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + PublicChannelProperties: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + description: A public channel + PublicChannelResource: + required: + - created_time + - display_name + - id + - name + - properties + - type + type: object + properties: + type: + type: string + description: The type of this channel + enum: + - DIRECT + - PUBLIC + - PRIVATE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this channel was created + format: date-time + creator: + $ref: '#/components/schemas/ChatUserProperties' + display_name: + type: string + description: Human readable name of this channel shown to users + last_received_message: + $ref: '#/components/schemas/MessageProperties' + name: + type: string + description: The unique name of this channel used to reference the channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelInviteResource: + required: + - user + type: object + properties: + user: + $ref: '#/components/schemas/ChatUserReference' + example: + user: + username: jane@chatkitty.com + ChannelInviteResource: + required: + - created_time + type: object + properties: + created_time: + type: string + description: The time this invite was created + format: date-time + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelGenericEventResource: + required: + - properties + - type + type: object + properties: + type: + type: string + description: Custom type of this event + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this event + description: Custom data associated with this event + example: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + ChannelGenericEventResource: + required: + - properties + - type + type: object + properties: + type: + type: string + description: Custom type of this event + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this event + description: Custom data associated with this event + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelResource: + required: + - type + type: object + properties: + type: + type: string + creator: + $ref: '#/components/schemas/ChatUserReference' + members: + uniqueItems: true + type: array + description: List of user references of members of this channel + items: + $ref: '#/components/schemas/ChatUserReference' + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/CreatePublicChannelResource' + PRIVATE: '#/components/schemas/CreatePrivateChannelResource' + DIRECT: '#/components/schemas/CreateDirectChannelResource' + CreateDirectChannelResource: + required: + - members + type: object + description: Creates a direct channel + example: + type: DIRECT + members: + - username: jane@chatkitty.com + - username: john@chatkitty.com + allOf: + - $ref: '#/components/schemas/CreateChannelResource' + CreateGroupChannelResource: + type: object + allOf: + - $ref: '#/components/schemas/CreateChannelResource' + - type: object + properties: + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + CreatePrivateChannelResource: + type: object + description: Creates a private channel + example: + type: PRIVATE + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/CreateGroupChannelResource' + - $ref: '#/components/schemas/CreateChannelResource' + CreatePublicChannelResource: + type: object + description: Creates a public channel + example: + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/CreateGroupChannelResource' + - $ref: '#/components/schemas/CreateChannelResource' + JsonMergePatch: + type: object + ApplicationSentSystemMessageNotificationData: + required: + - channel_id + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID channel the message was sent. Deprecated: Use the channel + property of this notification + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/SystemMessageResource' + description: Sent when a system message is sent + ChatUserMentionedChannelNotificationData: + required: + - channel_id + - mentioned_channel + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID of the channel the mentioning message was sent. Deprecated: + Use the channel property of this notification + format: int64 + deprecated: true + mentioned_channel: + $ref: '#/components/schemas/ChannelResource' + message: + $ref: '#/components/schemas/TextMessageResource' + description: Sent when a user mentions a channel in a message + ChatUserMentionedChatUserNotificationData: + required: + - channel_id + - mentioned_user + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID of the channel the mentioning message was sent. Deprecated: + Use the channel property of this notification + format: int64 + deprecated: true + mentioned_user: + $ref: '#/components/schemas/ChatUserResource' + message: + $ref: '#/components/schemas/TextMessageResource' + description: Sent when a user mentions a user in a message + ChatUserMessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + description: The message that was sent + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + FILE: '#/components/schemas/FileChatUserMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/FileChatUserMessageResource' + ChatUserRepliedToChatUserMessageNotificationData: + required: + - channel_id + - message + - parent + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID of channel the reply message was sent. Deprecated: Use the + channel property of this notification + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/MessageResource' + parent: + $ref: '#/components/schemas/MessageResource' + description: Sent when a user replies to a message + ChatUserSentChatUserMessageNotificationData: + required: + - channel_id + - message + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: >- + The ID channel the message was sent. Deprecated: Use the channel + property of this notification + format: int64 + deprecated: true + message: + $ref: '#/components/schemas/ChatUserMessageResource' + description: Sent when a user sends a message + CursorPageMetadata: + required: + - size + type: object + properties: + next: + type: string + size: + type: integer + format: int64 + start: + type: string + CursorPagedModelNotificationResource: + required: + - page + type: object + properties: + _embedded: + type: object + properties: + notifications: + type: array + items: + $ref: '#/components/schemas/NotificationResource' + page: + $ref: '#/components/schemas/CursorPageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + notifications: + - id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3255805 + title: System message sent + body: Hello, World! + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85216 + type: SYSTEM_TEXT + channelId: 702 + body: Hello, World! + properties: {} + createdTime: '2022-06-02T16:34:58.871950Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85216 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85216.relay + createdTime: '2022-06-02T16:35:14.296158Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1750641 + title: hey sent a message + body: 🌞 + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T16:45:33.696Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44902.relay + createdTime: '2021-09-16T16:45:48.351Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749995 + title: ho sent a message + body: ok + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T05:13:48.030Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44759.relay + createdTime: '2021-09-16T05:14:00.993Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749225 + title: Nisar sent a message + body: hi + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44559 + type: TEXT + channelId: 702 + user: + id: 39827 + type: PERSON + name: ss@dd.com + displayName: Nisar + displayPictureUrl: https://api.chatkitty.com/v1/picture/Nisar + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-14T20:13:37.357Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44559 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39827 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44559.relay + createdTime: '2021-09-14T20:13:49.998Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=NEXT + page: + size: 5 + NotificationData: + required: + - type + type: object + properties: + type: + type: string + description: >- + The type of notification that was received. This specifies the + schema of the notification data + description: Additional context data of this notification + discriminator: + propertyName: type + mapping: + SYSTEM:SENT:MESSAGE: '#/components/schemas/ApplicationSentSystemMessageNotificationData' + USER:MENTIONED:CHANNEL: '#/components/schemas/ChatUserMentionedChannelNotificationData' + USER:MENTIONED:USER: '#/components/schemas/ChatUserMentionedChatUserNotificationData' + USER:REPLIED_TO:MESSAGE: >- + #/components/schemas/ChatUserRepliedToChatUserMessageNotificationData + USER:SENT:MESSAGE: '#/components/schemas/ChatUserSentChatUserMessageNotificationData' + NotificationResource: + required: + - body + - created_time + - data + - id + - muted + - title + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + body: + type: string + description: The text body of this notification + channel: + $ref: '#/components/schemas/ChannelProperties' + created_time: + type: string + description: Time this notification was created + format: date-time + data: + $ref: '#/components/schemas/NotificationData' + muted: + type: boolean + description: True if this notification should be muted + read_time: + type: string + description: Time this notification was read + format: date-time + title: + type: string + description: The title of this notification + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + SystemMessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + description: The message that was sent + discriminator: + propertyName: type + mapping: + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + SYSTEM_FILE: '#/components/schemas/FileSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextSystemMessageResource' + - $ref: '#/components/schemas/FileSystemMessageResource' + TextMessageResource: + required: + - channel_id + - created_time + - id + - nested_level + - properties + - type + type: object + properties: + type: + type: string + description: The type of this message + enum: + - TEXT + - FILE + - SYSTEM_TEXT + - SYSTEM_FILE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + channel_id: + type: integer + description: The ID of the channel this message belongs to + format: int64 + created_time: + type: string + description: The time this message was created + format: date-time + group_tag: + type: string + description: >- + Optional string to associate this message with other messages. Can + be used to group messages into a gallery + last_edited_time: + type: string + description: The time this message was last edited + format: date-time + nested_level: + type: integer + description: The nested thread level of this message + format: int32 + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this message + description: Custom data associated with this message + reactions: + type: array + description: Reactions to this message + items: + $ref: '#/components/schemas/MessageReactionsSummaryProperties' + replies_count: + type: integer + description: The number of replies to this message + format: int64 + report_count: + type: integer + description: The number of times this message has been reported + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + description: The message in which the user was mentioned + discriminator: + propertyName: type + mapping: + TEXT: '#/components/schemas/TextChatUserMessageResource' + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageResource' + oneOf: + - $ref: '#/components/schemas/TextChatUserMessageResource' + - $ref: '#/components/schemas/TextSystemMessageResource' + CursorPagedModelMessageResource: + required: + - page + type: object + properties: + _embedded: + type: object + properties: + messages: + type: array + items: + $ref: '#/components/schemas/MessageResource' + page: + $ref: '#/components/schemas/CursorPageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + messages: + - id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44701 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: test + properties: {} + createdTime: '2021-09-16T14:57:55.903Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44701 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44700 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-16T14:57:46.056Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44700 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44760 + type: TEXT + channelId: 1255 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: do? + properties: {} + createdTime: '2021-09-16T09:14:09.585Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44760 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/1255 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T09:13:48.030Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=NEXT + page: + size: 5 + PageMetadata: + type: object + properties: + number: + type: integer + format: int64 + size: + type: integer + format: int64 + total_elements: + type: integer + format: int64 + total_pages: + type: integer + format: int64 + PagedModelChannelResource: + type: object + properties: + _embedded: + type: object + properties: + channels: + type: array + items: + $ref: '#/components/schemas/ChannelResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + channels: + - id: 15252 + type: DIRECT + creator: + id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + members: + - id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + - id: 19452 + type: PERSON + name: aa + displayName: emra + displayPictureUrl: https://api.chatkitty.com/v1/picture/emra + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2021-05-05T00:38:24.888Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/15252 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/events + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 2402 + type: PUBLIC + name: '#test' + displayName: Test Channel + creator: + id: 4153 + type: PERSON + name: test@mail.com + displayName: mridx + displayPictureUrl: https://api.chatkitty.com/v1/picture/mridx + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2020-12-13T21:12:09.195Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/2402 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 856 + type: PUBLIC + name: mkm + displayName: Meme Channel + creator: + id: 1504 + type: PERSON + name: njnj@vghf.jk + displayName: mkm + displayPictureUrl: https://api.chatkitty.com/v1/picture/mkm + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 17654 + type: TEXT + channelId: 856 + user: + id: 15402 + type: PERSON + name: paras@code.co + displayName: Paras + displayPictureUrl: https://api.chatkitty.com/v1/picture/Paras + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: ghk + properties: {} + createdTime: '2021-03-31T06:00:28.680Z' + properties: {} + createdTime: '2020-11-25T07:46:45.775Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/856 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1302 + type: PUBLIC + name: SONU KUMAR + displayName: SONU KUMAR + creator: + id: 2302 + type: PERSON + name: '852122' + displayName: SONU KUMAR + displayPictureUrl: https://api.chatkitty.com/v1/picture/SONU+KUMAR + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 44530 + type: TEXT + channelId: 1302 + user: + id: 39826 + type: PERSON + name: steve@innersync.com + displayName: Steve Williams + displayPictureUrl: https://api.chatkitty.com/v1/picture/Steve+Williams + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: Checking out + properties: {} + createdTime: '2021-09-14T18:02:56.066Z' + properties: {} + createdTime: '2020-12-02T05:10:01.260Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/1302 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + page: + size: 5 + totalElements: 2020 + totalPages: 404 + number: 0 + PagedModelChatUserResource: + type: object + properties: + _embedded: + type: object + properties: + users: + type: array + items: + $ref: '#/components/schemas/ChatUserResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + users: + - id: 14503 + type: PERSON + name: jane@chatkitty.com + displayName: Jane + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/14503 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3004 + type: PERSON + name: '1' + displayName: ChatKittyUser + displayPictureUrl: https://api.chatkitty.com/v1/picture/ChatKittyUser + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3004 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: PERSON + name: 10zxc13@gmail.com + displayName: Jack + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jack + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6152 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3353 + type: PERSON + name: '12121' + displayName: '12121' + displayPictureUrl: https://api.chatkitty.com/v1/picture/12121 + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3353 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6602 + type: PERSON + name: '123' + displayName: '123' + displayPictureUrl: https://api.chatkitty.com/v1/picture/123 + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6602 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/users?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/users?page=114&size=5 + page: + size: 5 + totalElements: 571 + totalPages: 115 + number: 0 + ChatUserSessionProperties: + required: + - created_time + - id + - state + - user + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: Time this session was created + format: date-time + end_time: + type: string + description: Time this session ended. Present if state is ENDED + format: date-time + state: + type: string + description: State of this session. ACTIVE or ENDED + enum: + - ACTIVE + - ENDED + user: + $ref: '#/components/schemas/ChatUserProperties' + user_agent: + type: string + description: User agent used to start this session + ChatUserSessionResource: + required: + - created_time + - id + - state + - user + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: Time this session was created + format: date-time + end_time: + type: string + description: Time this session ended. Present if state is ENDED + format: date-time + state: + type: string + description: State of this session. ACTIVE or ENDED + enum: + - ACTIVE + - ENDED + user: + $ref: '#/components/schemas/ChatUserProperties' + user_agent: + type: string + description: User agent used to start this session + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatUserSessionResource: + type: object + properties: + _embedded: + type: object + properties: + sessions: + type: array + items: + $ref: '#/components/schemas/ChatUserSessionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + sessions: + - id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635641 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:35:08.587Z' + createdTime: '2021-11-12T08:25:33.885Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635669 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:55:36.282Z' + createdTime: '2021-11-12T08:38:54.982Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39806 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635644 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:54:48.309Z' + createdTime: '2021-11-12T08:45:13.682Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635651 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T09:06:40.409Z' + createdTime: '2021-11-12T09:04:53.490Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/user-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/user-sessions?page=328&size=5 + page: + size: 5 + totalElements: 1645 + totalPages: 329 + number: 0 + ReplyThreadResource: + required: + - created_time + - id + - properties + - type + type: object + properties: + type: + type: string + description: The type of this thread + enum: + - MAIN + - STANDALONE + - MESSAGE + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: The ISO date-time this thread was created + format: date-time + name: + type: string + description: The name of this thread + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this thread + description: Custom data associated with this thread + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 67528 + type: MAIN + properties: {} + createdTime: '2022-02-04T13:19:06.764939Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/threads/67528 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelChatFunctionResource: + type: object + properties: + _embedded: + type: object + properties: + functions: + type: array + items: + $ref: '#/components/schemas/ChatFunctionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + functions: + - id: 202 + type: user.received.notification + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Received Notification + enabled: true + currentVersionNumber: 5 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/202 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4552 + type: user.sent.message + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Sent Message + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/4552 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: user.started.chat_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Started Chat Session + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/6152 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions?page=0&size=5 + page: + size: 5 + totalElements: 4 + totalPages: 1 + number: 0 + MessageReadReceiptResource: + required: + - created_time + - user + type: object + properties: + created_time: + type: string + description: Time the user read this message + format: date-time + user: + $ref: '#/components/schemas/ChatUserProperties' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelMessageReadReceiptResource: + type: object + properties: + _embedded: + type: object + properties: + receipts: + type: array + items: + $ref: '#/components/schemas/MessageReadReceiptResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + receipts: + - user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/67026/read-receipts?page=0&size=25 + page: + size: 1 + totalElements: 1 + totalPages: 1 + number: 0 + PagedModelApplicationJobResource: + type: object + properties: + _embedded: + type: object + properties: + jobs: + type: array + items: + $ref: '#/components/schemas/ApplicationJobResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + jobs: + - id: 1 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T04:19:41.255Z' + endedTime: '2021-09-28T04:19:42.230Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/1 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 52 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T05:30:08.902Z' + endedTime: '2021-09-28T05:30:09.571Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 53 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 54 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:35:35.075Z' + endedTime: '2021-09-28T05:36:15.755Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/54 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 102 + type: CHANNEL_MEMBERS_IMPORT + state: FINISHED + createdTime: '2021-09-29T04:52:22.895Z' + endedTime: '2021-09-29T04:52:58.941Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/102 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/jobs?running=false&page=0&size=25 + page: + size: 25 + totalElements: 5 + totalPages: 1 + number: 0 + PagedModelChatFunctionVersionResource: + type: object + properties: + _embedded: + type: object + properties: + versions: + type: array + items: + $ref: '#/components/schemas/ChatFunctionVersionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + versions: + - id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 13461 + versionNumber: 33 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello!'); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13461 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4802 + versionNumber: 32 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return {payload: true}; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4652 + versionNumber: 31 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return true; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4652 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4555 + versionNumber: 30 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return { + status: "SUCCESS" + }; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4555 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=6&size=5 + page: + size: 5 + totalElements: 35 + totalPages: 7 + number: 0 + ChatFunctionInvocationResource: + required: + - args + - created_time + - id + - result + - status + - version_number + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + args: + type: object + additionalProperties: + type: object + description: >- + The function arguments passed into this function for this + invocation + description: The function arguments passed into this function for this invocation + created_time: + type: string + description: The ISO date-time of this invocation when the function was called + format: date-time + result: + type: object + additionalProperties: + type: object + description: The result of this invocation when it completed + description: The result of this invocation when it completed + status: + type: string + description: The running status of this invocation + enum: + - RUNNING + - SUCCEEDED + - FAILED + version_number: + type: integer + description: >- + The version number of this function version when this invocation + occured + format: int64 + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + PagedModelChatFunctionInvocationResource: + type: object + properties: + _embedded: + type: object + properties: + invocations: + type: array + items: + $ref: '#/components/schemas/ChatFunctionInvocationResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + invocations: + - id: 468510 + versionNumber: 34 + args: + authParams: + displayName: Niyati + username: asac@sfas.com + status: SUCCEEDED + result: + payload: + - Hello asac@sfas.com + createdTime: '2021-09-20T06:37:01.766Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468453 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + - 'Hello ' + createdTime: '2021-09-19T09:34:40.190Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468452 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + createdTime: '2021-09-19T09:34:26.890Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467243 + versionNumber: 34 + args: + authParams: + displayName: '' + username: aaron + status: SUCCEEDED + result: + payload: + - Hello aaron + createdTime: '2021-09-17T17:00:31.396Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467162 + versionNumber: 34 + args: + authParams: + displayName: bob + username: fwfe@efw.com + status: SUCCEEDED + result: + payload: + - Hello fwfe@efw.com + createdTime: '2021-09-17T09:15:50.072Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1515&size=5 + page: + size: 5 + totalElements: 7578 + totalPages: 1516 + number: 0 + ChatSessionResource: + required: + - created_time + - id + - session + - state + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: Time this session was created + format: date-time + end_time: + type: string + description: Time this session ended. Present if state is ENDED + format: date-time + session: + $ref: '#/components/schemas/ChatUserSessionProperties' + state: + type: string + description: State of this session. ACTIVE or ENDED + enum: + - ACTIVE + - ENDED + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatSessionResource: + type: object + properties: + _embedded: + type: object + properties: + sessions: + type: array + items: + $ref: '#/components/schemas/ChatSessionResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + sessions: + - id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480795 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:35:43.597Z' + createdTime: '2021-09-19T04:33:41.710Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480731 + session: + id: 544216 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:38:45.272Z' + createdTime: '2021-09-19T04:35:45.028Z' + state: ENDED + endTime: '2021-09-19T04:35:55.360Z' + createdTime: '2021-09-19T04:35:45.685Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544216 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481281 + session: + id: 545001 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:12.242Z' + createdTime: '2021-09-20T12:13:09.900Z' + state: ENDED + endTime: '2021-09-20T12:13:12.255Z' + createdTime: '2021-09-20T12:13:10.352Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545001 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481282 + session: + id: 545052 + user: + id: 39807 + type: PERSON + name: 8fadc920-f3e6-49ff-9398-1e58b3dc44dd + displayName: Zaria Bria + displayPictureUrl: https://api.chatkitty.com/v1/picture/Zaria+Bria + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:22.564Z' + createdTime: '2021-09-20T12:13:20.105Z' + state: ENDED + endTime: '2021-09-20T12:13:22.575Z' + createdTime: '2021-09-20T12:13:20.553Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545052 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/chat-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/chat-sessions?page=1037&size=5 + page: + size: 5 + totalElements: 5190 + totalPages: 1038 + number: 0 + PagedModelMessageResource: + type: object + properties: + _embedded: + type: object + properties: + messages: + type: array + items: + $ref: '#/components/schemas/MessageResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + ChannelMembershipResource: + required: + - created_time + type: object + properties: + created_time: + type: string + format: date-time + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + PagedModelChannelMembershipResource: + type: object + properties: + _embedded: + type: object + properties: + memberships: + type: array + items: + $ref: '#/components/schemas/ChannelMembershipResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + memberships: + - createdTime: '2020-12-02T21:52:33.976Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/2 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/2 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-02T22:03:28.742Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/52 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T13:03:17.433Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/352 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/352 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-07T22:28:47.620Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/403 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/403 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T14:34:29.580Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/452 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/452 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=107&size=5 + page: + size: 5 + totalElements: 537 + totalPages: 108 + number: 0 + PagedModelChannelInviteResource: + type: object + properties: + _embedded: + type: object + properties: + invites: + type: array + items: + $ref: '#/components/schemas/ChannelInviteResource' + page: + $ref: '#/components/schemas/PageMetadata' + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + _embedded: + invites: + - createdTime: '2022-06-02T16:51:03.206366Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/67026/invites?page=0&size=25 + page: + size: 25 + totalElements: 1 + totalPages: 1 + number: 0 + ApplicationResource: + required: + - created_time + - id + - key + - properties + type: object + properties: + id: + type: integer + description: 64-bit integer identifier associated with this resource + format: int64 + created_time: + type: string + description: ISO date-time this application was created + format: date-time + key: + type: string + description: Primary API key assigned to this application + properties: + type: object + additionalProperties: + type: object + description: Custom properties attached to this application + description: Custom properties attached to this application + _links: + type: array + description: Hypermedia control links for this resource + items: + $ref: '#/components/schemas/Link' + example: + id: 1 + key: 19b458d0-2b50-491c-8f13-65ec12f3978e + properties: {} + created_time: '2020-10-02T20:29:25.316Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1 + Links: + type: object + additionalProperties: + $ref: '#/components/schemas/Link' + MessageImport: + required: + - channel_id + - type + type: object + properties: + type: + type: string + channel_id: + type: integer + description: ID of the channel this message belongs to + format: int64 + group_tag: + type: string + description: Tag identifying the message group this message belongs to + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + properties: + type: object + additionalProperties: + type: object + description: Map of custom data attached to this message + description: Map of custom data attached to this message + example: + idempotencyKey: unique-external-id + type: TEXT + body: Hello, World! + discriminator: + propertyName: type + mapping: + SYSTEM_TEXT: '#/components/schemas/TextSystemMessageImport' + TEXT: '#/components/schemas/TextChatUserMessageImport' + ChatUserImport: + required: + - display_name + - guest + - name + - properties + type: object + properties: + display_name: + type: string + description: Human readable name of this user. Shown to other users + display_picture: + $ref: '#/components/schemas/FileImport' + guest: + type: boolean + description: True if this user was created by a guest user session + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + name: + type: string + description: >- + The unique name used to identify this user across ChatKitty. Also + known as username + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this user + description: Custom data associated with this user + example: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMembershipImport: + required: + - username + type: object + properties: + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + username: + type: string + description: Username of the user to be added as a member + example: + username: jane@chatkitty.com + FileImport: + required: + - content_type + - name + - size + - url + type: object + properties: + content_type: + type: string + description: The mime type of this file + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + name: + type: string + description: The file name + size: + type: integer + description: The size of this file in bytes + format: int64 + url: + type: string + description: The file URL + description: External file properties + ChannelImport: + required: + - members + - type + type: object + properties: + type: + type: string + creator: + type: string + description: Username of the user who created this channel + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + members: + type: array + description: List of usernames of members of this channel + items: + type: string + description: List of usernames of members of this channel + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + example: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + discriminator: + propertyName: type + mapping: + PUBLIC: '#/components/schemas/PublicChannelImport' + PRIVATE: '#/components/schemas/PrivateChannelImport' + DIRECT: '#/components/schemas/DirectChannelImport' + TextMessageImport: + required: + - body + - channel_id + type: object + properties: + body: + type: string + description: The text body of this message + channel_id: + type: integer + description: ID of the channel this message belongs to + format: int64 + group_tag: + type: string + description: Tag identifying the message group this message belongs to + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + properties: + type: object + additionalProperties: + type: object + description: Map of custom data attached to this message + description: Map of custom data attached to this message + DirectChannelImport: + required: + - members + type: object + description: Imports a direct channel + example: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + allOf: + - $ref: '#/components/schemas/ChannelImport' + GroupChannelImport: + required: + - members + type: object + properties: + creator: + type: string + description: Username of the user who created this channel + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + idempotency_key: + type: string + description: >- + Unique value generated by the client which ChatKitty uses to + recognize subsequent retries of the same request. Optional but + recommended + members: + type: array + description: List of usernames of members of this channel + items: + type: string + description: List of usernames of members of this channel + name: + type: string + description: >- + The unique name of this channel used to reference the channel. If + absent defaults to a random UUID + properties: + type: object + additionalProperties: + type: object + description: Custom data associated with this channel + description: Custom data associated with this channel + TextSystemMessageImport: + required: + - body + - channel_id + type: object + description: Imports a system text message + example: + type: TEXT + body: Hello, World! + allOf: + - $ref: '#/components/schemas/MessageImport' + - type: object + properties: + body: + type: string + description: The text body of this message + TextChatUserMessageImport: + required: + - body + - channel_id + - user + type: object + description: Imports a user text message + example: + type: TEXT + body: Hello, World! + user: jane@chatkitty.com + allOf: + - $ref: '#/components/schemas/MessageImport' + - type: object + properties: + body: + type: string + description: The text body of this message + user: + type: string + description: Username of the user who sent this message + PublicChannelImport: + required: + - members + type: object + description: Imports a public channel + example: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/ChannelImport' + - type: object + properties: + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + PrivateChannelImport: + required: + - members + type: object + description: Imports a private channel + example: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + allOf: + - $ref: '#/components/schemas/ChannelImport' + - type: object + properties: + name: + type: string + description: >- + The unique name of this channel used to reference the channel. + If absent defaults to a random UUID + display_name: + type: string + description: >- + Human readable name of this channel shown to users. If absent + defaults to the channel name + examples: + SecretResource: + value: + secret: My secret is... well, I'd never tell. + ChatUserResource: + value: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/1 + channels: + href: https://api.chatkitty.com/v1/applications/1/users/1/channels + notifications: + href: https://api.chatkitty.com/v1/applications/1/users/1/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/1/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + Link: + value: + href: https://api.chatkitty.com/v1/applications/1 + ChatRuntimeScriptProperties: + value: + script: "import firebase from 'firebase';\r\nimport '@firebase/auth';\r\nimport '@firebase/firestore';\r\n\r\nconst firebaseConfig = {\r\n apiKey: 'AIzaSyBEqSZdB3qTeSTyycvYDgJ5qG-5Xg9rQZY',\r\n authDomain: 'chatkitty-example.firebaseapp.com',\r\n databaseURL: 'https://chatkitty-example.firebaseio.com',\r\n projectId: 'chatkitty-example',\r\n storageBucket: 'chatkitty-example.appspot.com',\r\n messagingSenderId: '540634290949',\r\n appId: '1:540634290949:web:cd754ff7e98087230ff56c',\r\n measurementId: 'G-BB7Q5DRQK6',\r\n};\r\n\r\nif (!firebase.apps.length) {\r\n firebase.initializeApp(firebaseConfig);\r\n}\r\n\r\nexport { firebase };" + ChatRuntimeDependencyProperties: + value: + name: firebase + version: ^9.8.2 + ChatRuntimeEnvironmentVariablesProperties: + value: + CUSTOM_ENV_AWS_REGION: us-east-1 + ChatRuntimeProperties: + value: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + ChatRuntimeResource: + value: + id: 1 + type: NODEJS + version: v0.0.29 + dependencies: + - name: axios + version: ^0.19.2 + defaultDependency: true + - name: axios-token-interceptor + version: ^0.2.0 + defaultDependency: true + - name: chatkitty-platform-sdk + version: 1.0.1 + defaultDependency: true + - name: qs + version: 6.9.4 + defaultDependency: true + - name: firebase + version: ^9.8.2 + defaultDependency: false + initializationScript: + script: var foo = 8; + environmentVariables: + CHATKITTY_CLIENT_SECRET: 34e65736-70c2-4d30-b80a-8ad9887c860b + CHATKITTY_CLIENT_ID: 19b458d0-2b50-491c-8f13-65ec12f3978e + CHATKITTY_CHAT_SERVICE_BASE_URL: https://api.chatkitty.com + CHATKITTY_APPLICATION_ID: '1' + CHATKITTY_AUTHORIZATION_SERVICE_BASE_URL: https://authorization.chatkitty.com + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/runtimes/nodejs + dependencies: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/dependencies + initializationScript: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/initialization-script + functions: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationSettingsResource: + value: + features: + guest_users: ENABLED + user_created_channels: DISABLED + CreateExternalFileProperties: + value: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreatePersonChatUserResource: + value: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + FileChatUserMessageResource: + value: + id: 44904 + type: FILE + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44904 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + FileSystemMessageResource: + value: + id: 44905 + type: SYSTEM_FILE + channelId: 702 + file: + url: https://example.com/files/my-application-file.png + name: file.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44905 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + MessageResource: + value: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextChatUserMessageResource: + value: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + TextSystemMessageResource: + value: + id: 44903 + type: SYSTEM_TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: This is a system announcement. Keep calm and carry on. + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44903 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChatUserReference: + value: + username: jane@chatkitty.com + CreateFileMessageResource: + value: + type: FILE + file: + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + CreateTextMessageResource: + value: + type: TEXT + body: Hello, World! + CreateChatFunctionResource: + value: + type: user.attempted.start_session + name: User Attempted Start Session + ChatFunctionResource: + value: + id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + ApplicationJobResource: + value: + id: 53 + type: CHANNEL_IMPORT + state: PENDING + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChatFunctionVersionResource: + value: + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + ChatFunctionVersionResource: + value: + id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: UserAttemptedStartSessionEvent, + context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + ChannelResource: + value: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + DirectChannelResource: + value: + id: 19354 + type: DIRECT + creator: + id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + members: + - id: 2 + type: PERSON + name: aaron + displayName: aaron + displayPictureUrl: https://api.chatkitty.com/v1/picture/aaron + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + - id: 20953 + type: PERSON + name: jake@giftata.com + displayName: Jake + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jake + presence: + status: UNAVAILABLE + online: false + properties: {} + properties: {} + createdTime: '2021-05-18T20:40:29.472Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/19354 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/19354/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/19354/events + application: + href: https://api.chatkitty.com/v1/applications/1 + PrivateChannelResource: + value: + id: 55914 + type: PRIVATE + name: a3e9118e-4c60-4a87-a19f-cb8bf5351462 + displayName: Our private channel + properties: {} + createdTime: '2021-09-28T01:45:20.542Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55914 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55914/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55914/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + PublicChannelResource: + value: + id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelInviteResource: + value: + user: + username: jane@chatkitty.com + ChannelInviteResource: + value: + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateChannelGenericEventResource: + value: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + ChannelGenericEventResource: + value: + type: My Custom Event + properties: + payload: Boom! + stuff: + favoriteNumber: 42 + favoriteMovie: Lilo and Stitch + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + CreateDirectChannelResource: + value: + type: DIRECT + members: + - username: jane@chatkitty.com + - username: john@chatkitty.com + CreatePrivateChannelResource: + value: + type: PRIVATE + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + CreatePublicChannelResource: + value: + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + CursorPagedModelNotificationResource: + value: + _embedded: + notifications: + - id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3255805 + title: System message sent + body: Hello, World! + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85216 + type: SYSTEM_TEXT + channelId: 702 + body: Hello, World! + properties: {} + createdTime: '2022-06-02T16:34:58.871950Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/85216 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85216.relay + createdTime: '2022-06-02T16:35:14.296158Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1750641 + title: hey sent a message + body: 🌞 + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T16:45:33.696Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44902.relay + createdTime: '2021-09-16T16:45:48.351Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749995 + title: ho sent a message + body: ok + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T05:13:48.030Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44759.relay + createdTime: '2021-09-16T05:14:00.993Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1749225 + title: Nisar sent a message + body: hi + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 44559 + type: TEXT + channelId: 702 + user: + id: 39827 + type: PERSON + name: ss@dd.com + displayName: Nisar + displayPictureUrl: https://api.chatkitty.com/v1/picture/Nisar + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-14T20:13:37.357Z' + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/44559 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39827 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: USER:SENT:MESSAGE + _relays: + message: /application/v1/messages/44559.relay + createdTime: '2021-09-14T20:13:49.998Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/users/36309/notifications?start=521294853996293169&next=331552160323555076&size=5&relation=NEXT + page: + size: 5 + NotificationResource: + value: + id: 3256308 + title: System message sent + body: File attachment + channel: + id: 702 + type: PUBLIC + name: Your Awesome Chat Room + displayName: Your Awesome Chat Room + creator: + id: 352 + type: PERSON + name: aaron.nwabuoku@chatkitty.com + displayName: aaron.nwabuoku@chatkitty.com + displayPictureUrl: >- + https://api.chatkitty.com/v1/picture/aaron.nwabuoku%40chatkitty.com + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + lastReceivedMessage: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + properties: {} + createdTime: '2020-11-23T13:03:17.292Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/messages + events: + href: https://api.chatkitty.com/v1/applications/1/channels/702/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships + members: + href: https://api.chatkitty.com/v1/applications/1/channels/702/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + data: + message: + id: 85103 + type: SYSTEM_FILE + channelId: 702 + file: + type: EXTERNAL + url: https://example.com/files/jane.png + name: jane.png + contentType: image/png + size: 32768 + properties: {} + createdTime: '2022-06-02T16:36:39.169379Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/85103 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + channelId: 702 + type: SYSTEM:SENT:MESSAGE + _relays: + message: /application/v1/messages/85103.relay + createdTime: '2022-06-02T16:36:54.356152Z' + _links: + recipient: + href: https://api.chatkitty.com/v1/applications/1/users/36309 + application: + href: https://api.chatkitty.com/v1/applications/1 + CursorPagedModelMessageResource: + value: + _embedded: + messages: + - id: 44902 + type: TEXT + channelId: 702 + user: + id: 39953 + type: PERSON + name: hey@mailinator.com + displayName: hey + displayPictureUrl: https://api.chatkitty.com/v1/picture/hey + presence: + status: UNAVAILABLE + online: false + properties: {} + body: 🌞 + properties: {} + createdTime: '2021-09-16T20:45:33.696Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44902 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39953 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44701 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: test + properties: {} + createdTime: '2021-09-16T14:57:55.903Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44701 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44700 + type: TEXT + channelId: 802 + user: + id: 39906 + type: PERSON + name: sean.donald@gmail.com + displayName: zolo + displayPictureUrl: https://api.chatkitty.com/v1/picture/zolo + presence: + status: UNAVAILABLE + online: false + properties: {} + body: hi + properties: {} + createdTime: '2021-09-16T14:57:46.056Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44700 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39906 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44760 + type: TEXT + channelId: 1255 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: do? + properties: {} + createdTime: '2021-09-16T09:14:09.585Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44760 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/1255 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 44759 + type: TEXT + channelId: 702 + user: + id: 39841 + type: PERSON + name: ho@mailinator.com + displayName: ho + displayPictureUrl: https://api.chatkitty.com/v1/picture/ho + presence: + status: UNAVAILABLE + online: false + properties: {} + body: ok + properties: {} + createdTime: '2021-09-16T09:13:48.030Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/messages/44759 + user: + href: https://api.chatkitty.com/v1/applications/1/users/39841 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=SELF + next: + href: >- + https://api.chatkitty.com/v1/applications/1/messages?start=333582423138781125&next=327180758840001251&size=5&relation=NEXT + page: + size: 5 + PagedModelChannelResource: + value: + _embedded: + channels: + - id: 15252 + type: DIRECT + creator: + id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + members: + - id: 19652 + type: PERSON + name: rexyfexy@gmail.com + displayName: doark + displayPictureUrl: https://api.chatkitty.com/v1/picture/doark + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + - id: 19452 + type: PERSON + name: aa + displayName: emra + displayPictureUrl: https://api.chatkitty.com/v1/picture/emra + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2021-05-05T00:38:24.888Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/15252 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/15252/events + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 55913 + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + displayName: Our public channel + properties: {} + createdTime: '2021-09-28T01:35:40.967Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/55913 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/55913/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 2402 + type: PUBLIC + name: '#test' + displayName: Test Channel + creator: + id: 4153 + type: PERSON + name: test@mail.com + displayName: mridx + displayPictureUrl: https://api.chatkitty.com/v1/picture/mridx + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + properties: {} + createdTime: '2020-12-13T21:12:09.195Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/2402 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/2402/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 856 + type: PUBLIC + name: mkm + displayName: Meme Channel + creator: + id: 1504 + type: PERSON + name: njnj@vghf.jk + displayName: mkm + displayPictureUrl: https://api.chatkitty.com/v1/picture/mkm + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 17654 + type: TEXT + channelId: 856 + user: + id: 15402 + type: PERSON + name: paras@code.co + displayName: Paras + displayPictureUrl: https://api.chatkitty.com/v1/picture/Paras + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: ghk + properties: {} + createdTime: '2021-03-31T06:00:28.680Z' + properties: {} + createdTime: '2020-11-25T07:46:45.775Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/856 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/856/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1302 + type: PUBLIC + name: SONU KUMAR + displayName: SONU KUMAR + creator: + id: 2302 + type: PERSON + name: '852122' + displayName: SONU KUMAR + displayPictureUrl: https://api.chatkitty.com/v1/picture/SONU+KUMAR + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + lastReceivedMessage: + id: 44530 + type: TEXT + channelId: 1302 + user: + id: 39826 + type: PERSON + name: steve@innersync.com + displayName: Steve Williams + displayPictureUrl: https://api.chatkitty.com/v1/picture/Steve+Williams + presence: + status: UNAVAILABLE + online: false + callStatus: AVAILABLE + properties: {} + body: Checking out + properties: {} + createdTime: '2021-09-14T18:02:56.066Z' + properties: {} + createdTime: '2020-12-02T05:10:01.260Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/channels/1302 + participants: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/participants + messages: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/messages + events: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/events + memberships: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/memberships + members: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/members + moderators: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/1302/moderators + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + page: + size: 5 + totalElements: 2020 + totalPages: 404 + number: 0 + PagedModelChatUserResource: + value: + _embedded: + users: + - id: 14503 + type: PERSON + name: jane@chatkitty.com + displayName: Jane + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jane + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/14503 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/14503/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3004 + type: PERSON + name: '1' + displayName: ChatKittyUser + displayPictureUrl: https://api.chatkitty.com/v1/picture/ChatKittyUser + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3004 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3004/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: PERSON + name: 10zxc13@gmail.com + displayName: Jack + displayPictureUrl: https://api.chatkitty.com/v1/picture/Jack + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6152 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6152/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 3353 + type: PERSON + name: '12121' + displayName: '12121' + displayPictureUrl: https://api.chatkitty.com/v1/picture/12121 + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/3353 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/3353/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6602 + type: PERSON + name: '123' + displayName: '123' + displayPictureUrl: https://api.chatkitty.com/v1/picture/123 + presence: + status: UNAVAILABLE + online: false + properties: {} + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/users/6602 + channels: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/channels + notifications: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/notifications + displayPicture: + href: >- + https://api.chatkitty.com/v1/applications/1/users/6602/display-picture + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/users?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/users?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/users?page=114&size=5 + page: + size: 5 + totalElements: 571 + totalPages: 115 + number: 0 + ChatUserSessionResource: + value: + id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatUserSessionResource: + value: + _embedded: + sessions: + - id: 635627 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:25:27.253Z' + createdTime: '2021-11-12T08:02:34.122Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635641 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:35:08.587Z' + createdTime: '2021-11-12T08:25:33.885Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635669 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:55:36.282Z' + createdTime: '2021-11-12T08:38:54.982Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39806 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635644 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T08:54:48.309Z' + createdTime: '2021-11-12T08:45:13.682Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 635651 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-11-12T09:06:40.409Z' + createdTime: '2021-11-12T09:04:53.490Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/14302/users/39805 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/user-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/user-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/user-sessions?page=328&size=5 + page: + size: 5 + totalElements: 1645 + totalPages: 329 + number: 0 + ReplyThreadResource: + value: + id: 67528 + type: MAIN + properties: {} + createdTime: '2022-02-04T13:19:06.764939Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/threads/67528 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelChatFunctionResource: + value: + _embedded: + functions: + - id: 202 + type: user.received.notification + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Received Notification + enabled: true + currentVersionNumber: 5 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/202 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/202/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4552 + type: user.sent.message + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Sent Message + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/4552 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/4552/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 6152 + type: user.started.chat_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Started Chat Session + enabled: false + currentVersionNumber: 0 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/6152 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/6152/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 1 + type: user.attempted.start_session + runtime: + id: 1 + type: NODEJS + version: v0.0.29 + name: User Attempted Start Session + enabled: true + currentVersionNumber: 34 + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/functions/1 + versions: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions + invocations: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations + currentVersion: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/current-version + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/runtimes/nodejs/functions?page=0&size=5 + page: + size: 5 + totalElements: 4 + totalPages: 1 + number: 0 + MessageReadReceiptResource: + value: + user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + PagedModelMessageReadReceiptResource: + value: + _embedded: + receipts: + - user: + id: 1 + type: PERSON + name: jane@chatkitty.com + displayName: Jane Doe + displayPictureUrl: https://api.chatkitty.com/v1/picture/jane + presence: + status: UNAVAILABLE + online: false + properties: {} + createdTime: '2022-06-02T16:51:03.206366286Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/1 + message: + href: https://api.chatkitty.com/v1/applications/1/messages/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/messages/67026/read-receipts?page=0&size=25 + page: + size: 1 + totalElements: 1 + totalPages: 1 + number: 0 + PagedModelApplicationJobResource: + value: + _embedded: + jobs: + - id: 1 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T04:19:41.255Z' + endedTime: '2021-09-28T04:19:42.230Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/1 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 52 + type: CHANNEL_IMPORT + state: FAILED + createdTime: '2021-09-28T05:30:08.902Z' + endedTime: '2021-09-28T05:30:09.571Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 53 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:30:44.265Z' + endedTime: '2021-09-28T05:30:44.692Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/53 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 54 + type: CHANNEL_IMPORT + state: FINISHED + createdTime: '2021-09-28T05:35:35.075Z' + endedTime: '2021-09-28T05:36:15.755Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/54 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 102 + type: CHANNEL_MEMBERS_IMPORT + state: FINISHED + createdTime: '2021-09-29T04:52:22.895Z' + endedTime: '2021-09-29T04:52:58.941Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1/jobs/102 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/jobs?running=false&page=0&size=25 + page: + size: 25 + totalElements: 5 + totalPages: 1 + number: 0 + PagedModelChatFunctionVersionResource: + value: + _embedded: + versions: + - id: 13515 + versionNumber: 34 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello ' + event.username); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13515 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 13461 + versionNumber: 33 + handlerScript: >- + const logs = []; + + + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + logs.push('Hello!'); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return logs; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/13461 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4802 + versionNumber: 32 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return {payload: true}; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4802 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4652 + versionNumber: 31 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return true; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4652 + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 4555 + versionNumber: 30 + handlerScript: >- + async function handleEvent(event: + UserAttemptedStartSessionEvent, context: Context) { + let email = event.username; + let displayName = event.authParams.displayName || email; + + let userApi = context.getUserApi(); + + await userApi.getUserExists(email) + .catch(async () => { + let user = await userApi.createUser( + { + 'name': email, + 'displayName': displayName + } + ); + + let channelApi = context.getChannelApi(); + + await channelApi.createChannelMember(702, { 'id': user.data.id }); + }); + + return { + status: "SUCCESS" + }; + } + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/function-versions/4555 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/versions?page=6&size=5 + page: + size: 5 + totalElements: 35 + totalPages: 7 + number: 0 + PagedModelChatFunctionInvocationResource: + value: + _embedded: + invocations: + - id: 468510 + versionNumber: 34 + args: + authParams: + displayName: Niyati + username: asac@sfas.com + status: SUCCEEDED + result: + payload: + - Hello asac@sfas.com + createdTime: '2021-09-20T06:37:01.766Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468453 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + - 'Hello ' + createdTime: '2021-09-19T09:34:40.190Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 468452 + versionNumber: 34 + args: + authParams: + displayName: '' + username: '' + status: SUCCEEDED + result: + payload: + - 'Hello ' + createdTime: '2021-09-19T09:34:26.890Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467243 + versionNumber: 34 + args: + authParams: + displayName: '' + username: aaron + status: SUCCEEDED + result: + payload: + - Hello aaron + createdTime: '2021-09-17T17:00:31.396Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + - id: 467162 + versionNumber: 34 + args: + authParams: + displayName: bob + username: fwfe@efw.com + status: SUCCEEDED + result: + payload: + - Hello fwfe@efw.com + createdTime: '2021-09-17T09:15:50.072Z' + _links: + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/functions/1/invocations?page=1515&size=5 + page: + size: 5 + totalElements: 7578 + totalPages: 1516 + number: 0 + ChatSessionResource: + value: + id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + PagedModelChatSessionResource: + value: + _embedded: + sessions: + - id: 1480794 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:33:41.677Z' + createdTime: '2021-09-19T04:33:40.657Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480795 + session: + id: 544188 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:35:43.576Z' + createdTime: '2021-09-19T04:28:48.442Z' + state: ENDED + endTime: '2021-09-19T04:35:43.597Z' + createdTime: '2021-09-19T04:33:41.710Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544188 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1480731 + session: + id: 544216 + user: + id: 39805 + type: PERSON + name: b2a6da08-88bf-4778-b993-7234e6d8a3ff + displayName: Joni Jordyn + displayPictureUrl: https://api.chatkitty.com/v1/picture/Joni+Jordyn + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-19T04:38:45.272Z' + createdTime: '2021-09-19T04:35:45.028Z' + state: ENDED + endTime: '2021-09-19T04:35:55.360Z' + createdTime: '2021-09-19T04:35:45.685Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/544216 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55052 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481281 + session: + id: 545001 + user: + id: 39806 + type: PERSON + name: c6f75947-af48-4893-a78e-0e0b9bd68580 + displayName: Julie Jaxton + displayPictureUrl: https://api.chatkitty.com/v1/picture/Julie+Jaxton + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:12.242Z' + createdTime: '2021-09-20T12:13:09.900Z' + state: ENDED + endTime: '2021-09-20T12:13:12.255Z' + createdTime: '2021-09-20T12:13:10.352Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545001 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + - id: 1481282 + session: + id: 545052 + user: + id: 39807 + type: PERSON + name: 8fadc920-f3e6-49ff-9398-1e58b3dc44dd + displayName: Zaria Bria + displayPictureUrl: https://api.chatkitty.com/v1/picture/Zaria+Bria + isGuest: true + presence: + status: UNAVAILABLE + online: false + properties: {} + state: ENDED + userAgent: ChatKitty-JS/1.50.0 + endTime: '2021-09-20T12:13:22.564Z' + createdTime: '2021-09-20T12:13:20.105Z' + state: ENDED + endTime: '2021-09-20T12:13:22.575Z' + createdTime: '2021-09-20T12:13:20.553Z' + _links: + session: + href: >- + https://api.chatkitty.com/v1/applications/14302/user-sessions/545052 + channel: + href: >- + https://api.chatkitty.com/v1/applications/14302/channels/55002 + application: + href: https://api.chatkitty.com/v1/applications/14302 + _links: + first: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/chat-sessions?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/chat-sessions?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/chat-sessions?page=1037&size=5 + page: + size: 5 + totalElements: 5190 + totalPages: 1038 + number: 0 + PagedModelChannelMembershipResource: + value: + _embedded: + memberships: + - createdTime: '2020-12-02T21:52:33.976Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/2 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/2 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-02T22:03:28.742Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/52 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/52 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T13:03:17.433Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/352 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/352 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-12-07T22:28:47.620Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/403 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/403 + application: + href: https://api.chatkitty.com/v1/applications/1 + - createdTime: '2020-11-23T14:34:29.580Z' + _links: + user: + href: https://api.chatkitty.com/v1/applications/1/users/452 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/702 + member: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/members/452 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + first: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=0&size=5 + next: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=1&size=5 + last: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/702/memberships?page=107&size=5 + page: + size: 5 + totalElements: 537 + totalPages: 108 + number: 0 + PagedModelChannelInviteResource: + value: + _embedded: + invites: + - createdTime: '2022-06-02T16:51:03.206366Z' + _links: + invitee: + href: https://api.chatkitty.com/v1/applications/1/users/1054 + channel: + href: https://api.chatkitty.com/v1/applications/1/channels/67026 + application: + href: https://api.chatkitty.com/v1/applications/1 + _links: + self: + href: >- + https://api.chatkitty.com/v1/applications/1/channels/67026/invites?page=0&size=25 + page: + size: 25 + totalElements: 1 + totalPages: 1 + number: 0 + ApplicationResource: + value: + id: 1 + key: 19b458d0-2b50-491c-8f13-65ec12f3978e + properties: {} + created_time: '2020-10-02T20:29:25.316Z' + _links: + self: + href: https://api.chatkitty.com/v1/applications/1 + Links: + value: + first: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + self: + href: https://api.chatkitty.com/v1/applications/1/channels?page=0&size=5 + next: + href: https://api.chatkitty.com/v1/applications/1/channels?page=1&size=5 + last: + href: https://api.chatkitty.com/v1/applications/1/channels?page=403&size=5 + MessageImport: + value: + idempotencyKey: unique-external-id + type: TEXT + body: Hello, World! + ChatUserImport: + value: + name: jane@chatkitty.com + displayName: Jane Doe + isGuest: false + properties: + favoriteNumber: 42 + ChannelMembershipImport: + value: + username: jane@chatkitty.com + ChannelImport: + value: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + DirectChannelImport: + value: + idempotencyKey: unique-external-id + type: DIRECT + members: + - jane@chatkitty.com + - john@chatkitty.com + TextSystemMessageImport: + value: + type: TEXT + body: Hello, World! + TextChatUserMessageImport: + value: + type: TEXT + body: Hello, World! + user: jane@chatkitty.com + PublicChannelImport: + value: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + PrivateChannelImport: + value: + idempotencyKey: unique-external-id + type: PUBLIC + name: b0a0bd55-921a-4f72-8ee3-f26c6fda0bb7 + securitySchemes: + password_reset_token_authorization: + type: apiKey + name: X-Token + in: header + application_authorization: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://authorization.chatkitty.com/oauth/token + refreshUrl: https://authorization.chatkitty.com/oauth/token + scopes: + create:*: Create application resources + read:*: Read application resources + update:*: Update application resources + delete:*: Delete application resources diff --git a/sdks/db/intermediate-fixed-specs/miso/openapi.yaml b/sdks/db/intermediate-fixed-specs/miso/openapi.yaml new file mode 100644 index 0000000000..5dd85c4428 --- /dev/null +++ b/sdks/db/intermediate-fixed-specs/miso/openapi.yaml @@ -0,0 +1,20828 @@ +openapi: 3.0.2 +info: + title: Miso API + description: > + + # Overview + + Miso’s approach to personalization is to train machine learning Engines on + three core data sets: + + + 1. Your site’s log of historical and real-time interactions, + + 2. Your catalog of products and content, and + + 3. Your users. Miso provides the output of its Engines to you, so you can + build search and recommendation + + experiences that are personalized down to the individual level (n=1 + personalization). + + + To see how Miso works and explore the power of its Engines, we recommend + following + + [this tutorial](https://docs.askmiso.com/) to get + + started with our Playground data. Integrating your site or application with + Miso happens in three basic steps: + + + 1. Upload your data + + 2. Train your Engines + + 3. Build search and recommendation experiences with the output of your + Engines. + + + + Miso provides two main integration points. The first is your [Dojo + Dashboard](https://dojo.askmiso.com/), + + which is used to set up your Engines with the conversions you want to + optimize and your training schedule. + + Dojo is also a great way to get familiar with Miso by manually uploading + data and exploring the output of + + Miso’s Engines. In Dojo’s Sandboxes, you can tweak your Engine settings and + see visual examples of Miso’s search + + and recommendations running on your live data. + + + The second integration point is Miso’s API, which lets you automatically + manage your data in Miso and build + + experiences that leverage the output of Miso’s personalization Engines. + + + + Miso’s API is composed of two major groups of REST API endpoints: Data APIs + and Engine APIs. + + + ### Data APIs + + Data APIs collect input to Miso's personalization Engines. These APIs all + support high-throughput + + data ingestion through bulk insert, and satisfy GDPR and CCPA compliance by + letting users delete their data + + from Miso. Subcategories of Data APIs are: + + + * [Interaction APIs](https://api.askmiso.com), for managing your Interaction + records. By uploading historical and real-time Interaction + + records, you tell Miso how users are engaging with the products and content + on your site, and in turn, Miso’s + + Engines learn how to optimize your conversion funnels. + + * [Product / Content APIs](https://api.askmiso.com), for managing your + Product / Content records. These records provide a deep semantic + + understanding of your catalog and keep Miso up to date about your offerings + so it can make smart and timely + + suggestions. The `product_id` is how Miso links Product / Content records to + your Interaction records. + + * [User APIs](https://api.askmiso.com), for managing your User records. + These records tell Miso about your site’s users and visitors, + + so Miso can build an understanding of user segmentation and behavior in + relation to products and content. + + The `user_id` is how Miso links User records to your Interaction records. + + + As a rule of thumb, we recommend batching up data to avoid timeout risks. + For the Product / Content and User + + Upload APIs, we recommend limiting each API upload call to about 100 records + at a time. For the Interaction + + Upload API, we recommend limiting your calls to around 10,000 records at a + time. + + + ### Engine APIs + + Engine APIs provide the output of Miso's personalization Engines. We + designed these APIs with a focus on low + + latency and high availability. Most of these APIs' 95th percentile response + time is under 75ms, + + and the services are replicated to at least three separate instances for + high availability. + + The types of Engine APIs are: + + + * [Search APIs](https://api.askmiso.com), for getting Miso’s personalized + search results for a user, with search-as-you-type and + + autocompletion. + + * [Recommendation APIs](https://api.askmiso.com), for retrieving Miso’s + recommendations that match users with + + the products, categories, and product attributes that are likely to drive + conversions. + + + # Authentication + + [View your API Keys in your Dojo + Dashboard.](https://dojo.askmiso.com/docs/api-browser) + + + There are three environments in Miso: + + * **Playground**, a read-only tutorial environment with sample data. + + * **Development**, for staging, QA, and experimentation. + + * **Production**, where you run your live integration with Miso. + + + Access a Miso environment by passing in the corresponding API key in your + API calls. There is one publishable + + key and one secret key per environment. + + + API Key can passed with query parameter `api_key`, or using the `X-API-KEY` + header. + version: 1.1.4 +paths: + /v1/experiments/{experiment_id_or_slug}/events: + post: + tags: + - Experiment APIs + summary: Send Experiment Event + operationId: send_experiment_event_v1_experiments__experiment_id_or_slug__events_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExperimentRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/SendExperimentResponse' + '401': + description: Unauthorized + content: + application/json: + example: + message: api_key is invalid. Please check your api_key in Dojo. + '404': + description: Not Found + content: + application/json: + example: + message: Variant is not found. Please check your variant_name. + '422': + description: Unprocessable Entity + content: + application/json: + example: + message: Request schema error. See "data.errors" for details + data: + errors: + - loc: + - body + - 35 + msg: 'Expecting '','' delimiter: line 3 column 5 (char 35)' + type: value_error.jsondecode + security: + - Secret API Key: [] + /v1/interactions: + post: + tags: + - Interaction APIs + summary: Interaction Upload API + description: >- + Bulk API to insert Interaction records. This endpoint accepts POST + requests with JSON data containing an array of + + Interaction records wrapped in a dictionary: + + + ``` + + POST /v1/interactions + + + {"data": [interaction_1, interaction_2, interaction_3]} + + ``` + + + For real-time tracking, we recommend sending the interaction records to + this API as soon as the interactions take + + place. This API is also ideal for bulk-inserting historical records that + your site collected before using Miso. + Miso can analyze the historical records and provide personalization for your users from the get-go. We recommend + limiting your calls to around 10,000 records at a time to avoid memory issues or timeout risks. + + ### Anonymous users + + For users who did not sign in, we can still make recommendations for + them by tracking their `anonymous_id`, which is a pseudo-unique + substitute for the `user_id`. The personalization and search APIs all + accept `anonymous_id` in the place of `user_id` to return tailored + results for anonymous users. + + + When an anonymous user later signs in and the `user_id` and + `anonymous_id` are both present, the `anonymous_id` will be linked to + the `user_id` along with the past interactions associated with it. + + + The typical mechanism to generate an `anonymous_id` is to use cookies or + the browser localStorage. However, if you don't collect such information + in your historical records, a hash of the IP address, optionally + combined with the User-Agent string, is also a reasonable substitute for + `anonymous_id`, and is most likely collected by your web server logs + already. + + + ### Schema validation + + The Interaction Upload API will validate the inserted records against + the API schema. + + Any schema errors will cause the whole request to fail, and none of the + records will be inserted (`status_code=422`). + + You should check the `response.errors` field to see if there are any + errors. + + + For example, the response below means there are no errors + (`status_code=200`): + + ```javascript + + { + "message": "success" + } + + ``` + + + Any schema error will cause the whole request to fail: the API will + return `status_code=422`, and none of the + + records will be inserted. You should check `data` field in the response + to see where the errors are located. For + + example, the response below means there are schema errors in the + interaction record at index 0: + + ```javascript + + { + "errors": true, // there are errors. please check! + "message": "None of the records were inserted because at least one of them contained schema errors. Please see the `data` field for details.", + "data": [ + "data.0.product_ids is invalid. The attribute was expected to be of type ''array', 'null'' but type 'string' was given.", + "data.0.timestamp is invalid. The attribute should match the 'date-time' format." + ] + } + + ``` + operationId: interaction_upload_api_v1_interactions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionCreateOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Unprocessable Entity + content: + application/json: + example: + errors: true + message: >- + None of the records were inserted because at least one of them + contained schema errors. Please see the `data` field for + details. + data: + - >- + data.0.product_ids is invalid. The attribute was expected to + be of type ''array', 'null'' but type 'string' was given. + - >- + data.0.timestamp is invalid. The attribute should match the + 'date-time' format. + security: + - Secret API Key: [] + - Publishable API Key: [] + delete: + tags: + - Interaction APIs + summary: Interaction Delete API + description: >- + The endpoint will delete users' interaction data entirely from the log + of interactions you have uploaded to Miso. + + This API enables you to comply with users' data removal requests (i.e. + right to be forgotten). Once a user's + + interactions are deleted, we will not be able to recover them, and they + will no longer contribute to model + + training. + operationId: interaction_delete_api_v1_interactions_delete + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/InteractionDeleteOut' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/products: + post: + tags: + - Product / Content APIs + summary: Product / Content Upload API + description: >- + Bulk API to insert Product records. This API endpoint accepts POST + requests with JSON data + + containing a list of Product / Content records wrapped in a dictionary: + + ``` + + POST /v1/products + + + {"data": [product_1, product_2, product_3]} + + ``` + + + Each product is uniquely identified by its `product_id`. If a record + with the same `product_id` + + already exists in the dataset, the existing one will be **replaced** by + the insertion (no + + partial update is allowed at this time). We recommend limiting your + calls to around 100 + + records at a time to avoid memory issues or timeout risks. + + + ### Schema validation + + This API validates the inserted records against the API schema; any + schema error will cause + + the whole request to fail (`status_code=422`), and none of the records + will be inserted. You + + should check the `response.errors` field to see if there are any errors. + For example, + + the response below means there are no errors (`status_code=200`): + + + ```json + + { + "message": "success", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + A common source of errors when uploading Product records is that the + custom attributes' data + + types are not consistent with the data types of the existing records. In + such cases, + + you can check the individual error message in the `data` array. For + example, if there is an + + error regarding the second record you tried to insert, the response + might look like: + + + ```json + + { + "errors": true, // there are errors. please check! + "data": [ + "data.0.custom_attributes.designer is invalid. Its data type is not consistent with other records", + "data.0.product_id is invalid. The attribute expected to be of type 'string', but 'array' is given.", + "data.0.created_at is invalid. The attribute should match 'date-time' format." + ] + } + + ``` + + + ### Internationalization (I18N) + + Miso has the built-in support for majority of Western European + languages, including `English`, `French`, `German`, + + `Spanish`, `Italian`, `Dutch`, `Russian`, and `Ukrainian`, as well as, + major Asian languages, including `Mandarin` + (both Simplified and Traditional), `Japanese`, and `Korean`. + + In Dojo, you can choose the *Primary Language* for your product catalog + (default is English). + + However, you can also have more than one language in your product + catalog that is + + beyond your primary languages using the `i18n_$LN` fields (replace `$LN` + with the [two-letter language + code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) of your + choice), + + and let Miso apply the language-specific preprocessing for you, such as + tokenization, stemming, elision + + removal, folding, decompounding, and traditional to simplified Chinese + conversion. + + + For example, you may have a product called "Arizona, Green Tea with + Ginseng & Honey" in your catalog, and you also + + sell it in your Spanish, French, and Chinese sites, and want your + customers to be able to search for this product + + in their native languages. + + + In this case, your product records will like the following sample + record, where English is the primary language of + + the record, and `i18n_es`, `i18n_fr`, `i18n_zh` fields contain product + details in their corresponding languages. + + ```javascript + + { + "product_id": "arizona-ginseng-honey", + // the primary language is English + "title": "Arizona, Green Tea with Ginseng & Honey", + // ... other product details in English + "i18n_es": { + "title": "AriZona, Té verde con ginseng y miel" + // ... other product details in Spanish + }, + "i18n_fr": { + "title": "AriZona - Thé Vert Aromatisé au Miel" + // ... other product details in French + }, + "i18n_zh": { + "title": "美國ARIZONA亞歷桑納 - 蜂蜜人蔘綠茶" + // ... other product details in Chinese + } + } + ``` + + In this way, your customer can find this product with any of the + following search queries + + without additional configuration: + + * `arizona green tea` + + * `arizona te verde` + + * `arizona the vert` + + * `arizona 綠茶` + + + The similar concept applies to Autocomplete as well. You can specify a + `language` parameter + + in the requests to Autocomplete API, and the autocomplete results for + the specific language + + will be returned. + operationId: content_write_api_v1_products_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProductBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CreateResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Unprocessable Entity + content: + application/json: + example: + errors: true + message: >- + None of the records are inserted, because at least one of them + contain schema errors. Please see `data` field for details. + data: + - >- + data.0.product_id is invalid. The attribute expected to be + of type 'string', but 'array' is given. + - >- + data.0.created_at is invalid. The attribute should match + 'date-time' format. + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/products/{product_id}: + get: + tags: + - Product / Content APIs + summary: Product / Content Read API + description: >- + This API endpoint retrieves the details of a specific product / content + using its `product_id`. + + To fetch the product / content information, make a GET request to the + following URL: + + + **Notice**: Make sure the product_id is an urlencode string. + + + ``` + + GET /v1/products/{product_id} + + ``` + + + Replace `{product_id}` with the unique identifier of the product / + content you wish to fetch. + + + ## Response Format + + + The API will return the product / content details in a JSON object if + the given `product_id` + + is valid and exists in the system. The JSON object will include fields + like `title`, + + `description`, `price`, `images`, and any internationalization fields + (`i18n_$LN`). + + + ### Example Response + + + Here's an example of a successful API response for a product / content + with the `product_id` + + "arizona-ginseng-honey": + + + ```json + + { + "product_id": "arizona-ginseng-honey", + "title": "Arizona, Green Tea with Ginseng & Honey", + "description": "A refreshing and delicious blend of green tea with ginseng and honey.", + "price": 1.99, + "i18n_es": { + "title": "AriZona, Té verde con ginseng y miel" + // ... other product details in Spanish + }, + "i18n_fr": { + "title": "AriZona - Thé Vert Aromatisé au Miel" + // ... other product details in French + }, + "i18n_zh": { + "title": "美國ARIZONA亞歷桑納 - 蜂蜜人蔘綠茶" + // ... other product details in Chinese + } + } + + ``` + + + If the provided `product_id` is invalid or does not exist in the system, + the API will return + + an error response with a `status_code=404`. + + + ### Example Error Response + + ```json + + { + "message": "not found" + } + + ``` + operationId: content_read_api_v1_products__product_id__get + parameters: + - required: true + schema: + title: Product Id + maxLength: 512 + type: string + name: product_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductReadOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '404': + description: Product not Found + content: + application/json: + example: + message: not found + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + delete: + tags: + - Product / Content APIs + summary: Product / Content Delete API + description: >- + This API endpoint allows you to delete a specific product / content from + the system using its + + `product_id`. To remove a product, make a DELETE request to: + + + **Notice**: Make sure the product_id is an urlencode string. + + + ``` + + DELETE /v1/products/{product_id} + + ``` + + + Replace `{product_id}` with the unique identifier of the product / + content you wish to delete. + + + ## Response Format + + + The API will return a JSON object indicating the success or failure of + the deletion request. + + If the deletion is successful, the `status_code` will be `200`, and the + `message` field will + + confirm the successful deletion. + + + ### Example Successful Deletion Response + + + ```json + + { + "message": "deleted", + "data": [ + { + "task_id": "{task_id}" + } + ] + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/products/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: content_delete_api_v1_products__product_id__delete + parameters: + - required: true + schema: + title: Product Id + maxLength: 512 + type: string + name: product_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/products/_ids: + get: + tags: + - Product / Content APIs + summary: Product / Content ID List API + description: >- + This API endpoint allows you to fetch the unique identifiers + (product_ids) of all products + + stored in the app. To get a list of product_ids, make a GET request to + the following URL: + + + ``` + + GET /v1/products/_ids + + ``` + + + ## Response Format + + + The API will return an array of product_ids in a JSON object. The + `status_code` will be `200` + + if the request is successful. If any error occurs during the request, + the `status_code` will + + not be `200` and the `message` field will indicate the error. + + + ### Example Successful Response + + + ```json + + { + "message": "success", + "data": { + "ids": [ + "product_1", + "product_2", + "product_3", + // ... more product_ids + ] + } + } + + ``` + + + ### Example Error Response + + + If the dataset cannot be found, the API will return a `404` error: + + + ```json + + { + "status_code": 404, + "message": "not found" + } + + ``` + + + If another error occurs during the request, the API will return a `500` + error + + + ```json + + { + "message": "Something went wrong. Please contact miso product team." + } + + ``` + operationId: content_read_ids_api_v1_products__ids_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductListOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/products/_delete: + post: + tags: + - Product / Content APIs + summary: Product / Content Bulk Delete API + description: >- + This API endpoint allows you to delete multiple products by providing + their product_ids. + + + To delete multiple products, make a POST request to the following URL: + + + ``` + + POST /v1/products/_delete + + ``` + + + The request body should contain a JSON object with an array of + product_ids: + + + ```json + + { + "data": { + "product_ids": [ + "product-1", + "product-2", + // ... more product_ids to delete + ] + } + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `message` and an array of + `data` + + containing a `task_id` that can be used to get the status of the bulk + deletion process. + + + #### Example Successful Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/products/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: content_bulk_delete_api_v1_products__delete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProductBulkDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/users: + post: + tags: + - User APIs + summary: User Upload API + description: >- + Bulk API to insert User records. This API endpoint accepts POST requests + with JSON data + + containing a list of User records wrapped in a dictionary. + + + ``` + + POST /v1/users + + ``` + + + ```json + + { + "data": [user_1, user_2, user_3] + } + + ``` + + + If a record with the same `user_id` already exists in the dataset, the + existing record will + + be replaced (no partial update is allowed at this time). We recommend + limiting your calls to + + around 100 records at a time to avoid memory issues or timeout risks. + + + ### Schema validation + + + This API validates the inserted records against the API schema. Any + schema error will cause + + the whole request to fail (`status_code=422`), and none of the records + will be inserted. As + + long as the request passes the schema validation, the API will return + `status_code=200`, but + + you should still check if there is any error occurring with individual + records. + + + ```json + + { + "errors": true, + "data": [ + "data.0.user_id is invalid. The attribute was expected to be a `string`" + ] + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `task_id` that can be used to + retrieve. + + + #### Example Successful Response + + + ```json + + { + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: user_write_api_v1_users_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserBulkIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CreateResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Unprocessable Entity + content: + application/json: + example: + errors: true + message: >- + None of the records are inserted, because at least one of them + contain schema errors. Please see `data` field for details. + data: + - >- + data.0.user_id is invalid. The attribute expected to be of + type 'string', but 'array' is given. + - >- + data.0.created_at is invalid. The attribute should match + 'date-time' format. + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/users/{user_id}: + get: + tags: + - User APIs + summary: User Read API + description: >- + This API endpoint retrieves the details of a specific user using their + `user_id`. + + To fetch the user information, make a GET request to the following URL: + + + **Notice**: Make sure the user_id is an urlencode string. + + + ``` + + GET /v1/users/{user_id} + + ``` + + + Replace `{user_id}` with the unique identifier of the user you wish to + fetch. + + + ## Response Format + + + The API will return the user details in a JSON object if the given + `user_id` is valid and + + exists in the system. The JSON object will include fields like `name`, + `age`, `city`, `gender` + + , and other user information. + + + ### Example Response + + + Here's an example of a successful API response for a user with the + `user_id` "user123": + + + ```json + + { + "message": "success", + "data": { + "user_id": "user123", + "name": "johndoe", + // ... other user details + } + } + + ``` + + + If the provided `user_id` is invalid or does not exist in the system, + the API will return an + + error response with a `status_code=404`. + + + ### Example Error Response + + + ```json + + { + "message": "not found" + } + + ``` + operationId: user_read_api_v1_users__user_id__get + parameters: + - required: true + schema: + title: Userid + maxLength: 512 + type: string + name: userId + in: query + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/UserReadOut' + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '404': + description: User not Found + content: + application/json: + example: + message: not found + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + delete: + tags: + - User APIs + summary: User Delete API + description: >- + This API endpoint allows you to delete a specific user from the system + using their `user_id`. + + + **Notice**: Make sure the user_id is an urlencode string. + + + To remove a user, make a DELETE request to: + + + ``` + + DELETE /v1/users/{user_id} + + ``` + + + Replace `{user_id}` with the unique identifier of the user you wish to + delete. + + + ## Response Format + + + The API will return a JSON object with a `task_id` that can be used to + retrieve. + + + #### Example Error Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: user_delete_api_v1_users__user_id__delete + parameters: + - required: true + schema: + title: User Id + maxLength: 512 + type: string + name: user_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/users/_delete: + post: + tags: + - User APIs + summary: User Bulk Delete API + description: >- + This API endpoint allows you to delete multiple users by providing their + user_ids. + + + To delete multiple users, make a POST request to the following URL: + + + ``` + + POST /v1/users/_delete + + ``` + + + The request body should contain a JSON object with an array of user_ids: + + + ```json + + { + "data": { + "user_ids": [ + "product-1", + "product-2", + // ... more product_ids to delete + ] + } + } + + ``` + + + ## Response Format + + + The API will return a JSON object with a `message` and an array of + `data` + + containing a `task_id` that can be used to get the status of the bulk + deletion process. + + + #### Example Successful Response + + + ```json + + { + "message": "deleted", + "data": { + "task_id": "{task_id}" + } + } + + ``` + + + To check the exact response body of this task_id, make a GET request to + the following endpoint: + + + ``` + + GET /v1/users/_status/{task_id} + + ``` + + + Replace `{task_id}` with the task_id returned from the response. + operationId: user_bulk_delete_api_v1_users__delete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserBulkDeleteIn' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteResponse' + '400': + description: Bad Request + content: + application/json: + example: + 'message:': Request timeout. + '401': + description: Unauthorized + content: + application/json: + example: + message: invalid api key. + '403': + description: Forbidden + content: + application/json: + example: + message: >- + Request is denied due to bot blocking. Please only access this + API from a real browser or use Secret API Key instead. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '500': + description: Internal Server Error + content: + application/json: + example: + message: Something went wrong. Please contact miso product team. + security: + - Secret API Key: [] + /v1/search/search: + post: + tags: + - Search APIs + summary: Search API + description: >- + The Search API provides personalized, typo-correcting, semantic search + for your site. + + You send this API the search queries users entered, and the API returns + the relevant search results tailored to your + + users' interests. + + + ### Personalized search + + Personalized search is a key factor in driving search conversion on many + major sites. + + It is particularly powerful for short search queries (<= 3 keywords), + which account for [up to 80% of search traffic in the + U.S.](https://www.statista.com/statistics/269740/number-of-search-terms-in-internet-research-in-the-us/), + + but are usually the hardest to get right with traditional search + engines. This is because shorter search queries tend + + to match a larger number of results, but there + + is not enough information in the query strings alone to determine which + results the users + + are actually looking for. + + + For example, when users search for *jeans* on Levi's.com, it is + + impossible to know which *jeans* the user is looking for, among + thousands of options. + + Even if the user adds: *jeans for men*, it is still unclear to a + traditional search engine what style, material, + + or size the user wants. + + + In the contrary, with Miso's personalized search, we not only analyze + the search query itself, but also take into + + account the *context* in which the searches are made, including who are + the users, where are they from, what are their + + past interactions on the site, what other searches the user made, etc. + These signals together + + allow Miso to generate more than 15% to 20% higher search conversion + rate than the traditional non-personalized search + + engines. + + + ### Balancing relevancy and personalization + + Although personalization is a powerful technique, over-using it can be + harmful to the user experiences. In the + + context of search optimization, the relevancy of the search results are + still the most important criteria, and we + + don't want personalization to overwhelm the search relevancy. + + For example, when users search for a very specific term, or directly + search for the product names, + + Miso's algorithm will respond with the most relevant search results + first, and then only apply personalization to + + rerank more ambiguous search results. + + + + ### Basic usage + + For every search query, you let Miso know the user's `user_id` and the + search keywords in the API request body, + + for example: + + ``` + + POST /v1/search/search + + { + "q": "jeans", + "user_id": "user-123" + } + + ``` + + + For site visitors who do not sign in, you can let Miso know the + `anonymous_id` of this visitor: + + ``` + + POST /v1/search/search + + { + "q": "jeans", + "anonymous_id": "visitor-123" + } + + ``` + + + ### Search response + + With the query above, Miso responds with the search results like the + following: + + ```javascript + + { + "message":"success", + "data":{ + "took":50, + "total":30, + "start":0, + "miso_id":"f34b90de-086b-11eb-b498-1ee8abb1818b", + "products":[ + { + "product_id":"505-regular-fit-mens-jeans", + "title":"The 505 Regular Fit Men's Jeans", + "url":"https://levi.com/jeans/505-regular-fit-mens-jeans/", + "size":"29", + "material":"Cotton", + "color":"Rinse - Dark Wash", + "_search_score": 78.12, + "_personalization_score": 0.98 + } + ], + "spellcheck":{ + "spelling_errors":false + } + + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **total**: the total number of matched products. You can paginate + through all the products by using the combination + + of *start* and *rows* parameters (see *Request Body Schema* below) + + * **miso_id**: a UUID of the search request. You should include + **miso_id** in the Interaction records for every + + interactions that result from this search request, e.g. user + click-through a product in the search results. + + Miso use miso_id to track the search performance and fine-tune the + algorithm accordingly. + + * **products**: an array of [Product records](https://api.askmiso.com) + that match the search + + query, ranked in the order of relevancy and + + probability that the user will be interested in this product. By + default, only the `product_id` of the Product is + + returned. You can ask Miso to return additional fields by using the *fl* + parameter (see *Request Body Schema* below) + + * **products[ ]._search_score**: the search relevancy score of the + products based on keyword matching and Miso's + + semantic matching. This score is similar to traditional Lucene search + score. + + * **products[ ]._personalization_score**: the score assigned by Miso's + personalization algorithm based on users' + + profile and their interactions on the site. This score quantifies the + probability of whether users will be + + interested in this product or not. + + * **spellcheck**: an dictionary contains spell checking information. + + + ### Spellcheck and auto-correction + + According to a [Microsoft Research + study](https://www.aclweb.org/anthology/W04-3238.pdf), roughly 10-15% of + the + + queries sent to search engines contain errors. A misspelled search + keyword often results in poor search + + quality, and users have been accustomed to Google's automatic spelling + correction functionality and expect the same + + on your site. + + + However, correcting spelling and typos at scale is a non-trivial machine + learning problem. + + Miso's spellcheck is based on a sequence-to-sequence + + deep learning model, trained and updated regularly on a corpus of + billion tokens. It detects hard-to-spot errors, + + auto-correct keywords according to its context, and recognize terms that + are newer or lesser known. + + + Spellcheck is always on for every search request so you don't need to + turn it on. + + What you need to decide is whether to turn on *auto spelling + correction*. + + For example, the following search request turns on the + auto-spelling-correction, and Miso will automatically + + replace any misspelled queries with their correct spelling: + + ``` + + POST /v1/search/search + + { + "q":"whte denem jeans", + "user_id":"user-123", + "spellcheck":{ + "enable_auto_spelling_correction":true + } + } + + ``` + + The API will respond: + + ```javascript + + { + "message":"success", + "data":{ + "took":50, + "total":30, + "start":0, + "miso_id":"f34b90de-086b-11eb-b498-1ee8abb1818b", + "spellcheck":{ + "spelling_errors":true, + "auto_spelling_correction":true, + "original_query":"whte denem jeans", + "original_query_with_markups":"whte denem jeans", + "corrected_query":"white denim jeans", + "corrected_query_with_markups":"white denim jeans" + }, + "products":[ + ...... + ] + } + } + + ``` + + The *spellcheck* object contains the following fields: + + * **spelling_errors** indicates whether there is a spelling error in the + query + + * **auto_spelling_correction** indicates whether the search query has + been replaced with the *corrected_query* + + * **original_query** the original search query + + * **original_query_with_markups** the original search query with the + misspelled words highlighted by \ html tags + + * **corrected_query** the search query with misspelling and typos + corrected + + * **corrected_query_with_markups** the search query with misspelling and + typos corrected, and the corrected parts are highlighted by \ + html tags + + + You can opt-out the auto-spelling-correction by setting + `enable_auto_spelling_correction=false`. For example: + + ``` + + POST /v1/search/search + + { + "q":"whte denem jeans", + "user_id":"user-123", + "spellcheck":{ + "enable_auto_spelling_correction":false + } + } + + ``` + + In this case, Miso will still run spellcheck against the query. However, + users' queries will be used as it is, + + and **auto_spelling_correction** field will be *false*. + + + ### Boosting and Diversification + + While Miso's personalized search can drive conversion by showing search + results that are tailored + + to users' interests, ultimately, it is important to make sure that the + search results meet your business goals. + + To that end, Miso provides a great set of tools that enable you to + fine-tune the search ranking and make it aligned + with your goals. + + One great example is **boosting**. Boosting allows you to define a query + that can be used to boost a + + subset of products to the top of the ranking, or to specific *boost + positions*. You can use boosting to run + + different kinds of promotion campaigns, or to promote certain set of + products for individual users that you know + + they will be interested in. + + + For example, consider a scenario where you need to promote the sales of + Nike's products. Then, you might want to + + use the query below, that will promote the sneakers whose brand are + `Nike` to the top of the search result: + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote the + Nike products which have also been tagged + + as `ON SALE`: + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + + You can have as complex boosting logic as you want in the boosting + query, + + but it is worth mentioning that Miso will only boost + + products that are relevant and have high likelihood to convert. In other + words, Miso will not boost low + + performance products even if they match the boosting query. + + + Depending on your boosting rules, in certain cases, you would like to + prevent search results from becoming + + too "plain" due to boosting. For example, you don't want the first page + of the search result to contain only Nike + + products. + + + With Miso, you have two tools to avoid so. First, you can specify + `boost_positions` to place boosted products at + + specific positions in the ranking. For example, the query below will + place boosted products only at the first, + + fourth, seventh places in the ranking (positions are 0-based), and place + the remaining products in their original + + ranking, skipping these three positions. + + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3, 6] + } + + ``` + + + The second tool is `diversification`. Miso's `diversification` algorithm + will maintain a desired minimum distance + + between any two products that have the same attributes. For example, the + + following query will make sure products made by the same *brand* are at + least two slots apart from each + + other in the search results. + + + ``` + + POST /v1/search/search + + { + "q":"sneaker", + "user_id":"user-123", + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 2} + } + } + + ``` + + + It is also very often to use both "boost_positions" and + "diversification" at the same time to make sure that + + (1) the search results are not overwhelmed by the boosted products, and + (2) there is a good mix of products from + + different brands showing side-by-side to increase product discovery + rate. + + + ### Result ordering + + + You can override Miso's default ranking order by specifing a list of + fields for Miso to rank the search results. + + These fields can be any numeric or boolean fields in your Product + catalog, or one of the following special + + fields: + + * **_personalization_score**: the score that estimates the probability + that a user will interact with a product + + determined by Miso's personalization algorithm. The range of this score + is between [0, 1]. The scores are + + non-uniformly distributed. The Products that are relevant to users' + interests will have scores much closer to 1, + + than products that are not. + + * **_search_score**: the score that rates the degree of "match" between + search keywords and a product's catalog + + with a focus on Product's titles. + + This score is mostly based on a variant of + [BM25](https://en.wikipedia.org/wiki/Okapi_BM25), but additionally + + consider the term proximity, typos, term semantic similarity. + + Its value is always larger than 0, but its range is unbounded. + + * **_boosting_score**: a binary score indicates whether a Product is + boosted by your boosting query. + + * **_geo_distance**: distance between any point on map, `geo` must be + specified when sorting with this field. + + + For example, the following query returns all the Products (because + `q=*`), ranked by the `_personalization_score` + + first, and then by the values in the `custom_attributes.promote_score` + field in the Product catalog, then the + + distance between the product and New York city. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.05" + }, + "order": "desc" + }, + { + "field": "custom_attributes.promote_score", + "order": "desc" + }, + { + "field": "_geo_distance", + "geo": { + "lat": 40.711967, + "lon": -74.006076, + } + "order": "asc" + } + ] + } + + ``` + + #### Mathematical Functions + + Miso supports mathematical functions that transform and combine + different sorting criteria into one. + + For example, a powerful strategy to improve gross merchandise volume + (GMV), but maintain user + + experience is + + to sort the products based on the multiplication of personalization + scores and product prices. You can achieve this with + + the following `order_by` query: + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score * pow(sale_price, 0.5)", + "order": "desc" + } + + ] + } + + ``` + + Function `pow(sale_price, 0.5)` takes the square root of the sale price + and avoids very expensive products from + + overwhelming the ranking. + + + Miso supports all the common mathematical operators including `+`, `-`, + `*`, `/`, `%`, `^`, `**`, and more + + advanced functions including: + * Power functions: `pow(X, y)`, `sqrt(X)` + * Exponents and logarithms: `exp(X)`, `log(X)`, `log2(X)`, `log10(X)` + * Element-wise maximum / minimum: `maximum(X, y)`, `minimum(X, y)` + * Absolute function: `abs(X)` + * Rounding functions: `round(X)`, `floor(X)`, `ceil(X)` + * Trigonometric functions: `sin(X)`, `cos(X)`, `tan(X)`, `asin(X)`, `acos(X)`, `atan(X)` + + + #### Soft Tie-Breaker + + For scores that have granular resolutions, for example + `_personalization_score`,`_search_scores`, or + + Products' `sale_price`, we usually don't want to rank Products by their + raw values. After all, + + a 0.001 difference in `_personalization_score` or $0.01 difference in + sale price typically will not make a + + difference in users' preferences. In such cases, *soft* tie-breakers + should be used to smooth out these minor + + differences in scores. + + + For example, in the query above, we apply a soft tie-breaker to + `_personalization_score` based on score values' + + relative difference. Specifically, we first sort the score's raw values + in the descending order, then + + for two consecutive values, if their relative difference is no more than + a pre-defined threshold + + (in this case `0.05` or `5%`), they are considered as a tie, and the + next field + + (i.e. `custom_attributes.promote_score`) + + will be used to determine their ranking. + + + It is also common to utilize tie-breakers to combine the effect of two + types of scores. For example, in the + + following query, we set `threshold=0.2` or `20%` for + `_personalization_score`, then only the + + Products that users are 20% more likely to interact with will be ranked + higher, the remaining Products will be + + ranked by their sale prices. In this way, we combine the effect of + personalization score and sale prices, where + + the Products are roughly ranked by personalization, but favor the + pricier products when they have comparable + + personalization scores. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "sale_price", + "order": "desc" + } + + ] + } + + ``` + + + Also note that, when search keywords are present, it is recommended to + always include `_search_score` + + as the first field (plus a tie-breaker) to maintain the relevance of the + search results. A tie-breaker is usually + + required as well to let the subsequent score have effect to the ranking. + + ``` + + { + "q": "toy story", + "order_by": [ + { + "field": "_search_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.20" + }, + "order": "desc" + }, + { + "field": "sale_price", + "order": "desc" + } + + ] + } + + ``` + operationId: search_v1_search_search_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SearchRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/SearchResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/search/autocomplete: + post: + tags: + - Search APIs + summary: Autocomplete API + description: >- + The Autocompletion API provides real-time, personalized, typo resistant + typeahead for your search bar. + + You send this API what users are currently typing, and the API returns + the complete search query suggestions. + + + ### Personalized typeahead + + Personalized typeahead is an extreme example of personalized search. The + personalization starts immediately when + + users enter even just one character. The typeahead results are + personalized so that the entries most likely to drive + + conversion for the current user are ranked at the top. Miso will predict + what the user is looking for in real-time + + based on their interests and past behaviors. + + + ### Basic usage + + The request schema of Autocompletion API is similar to that of Search + API: you put the search query users typed so + + far, and the `user_id` or `anonymous_id` for Miso to identify the + current user. + + For example, when a user types the first character `r`, you send Miso + the following request: + + ``` + + POST /v1/search/autocomplete + + { + "q":"r", + "user_id":"user-123" + } + + ``` + + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 50, + "miso_id": "e93a6d02-0a7a-11eb-a896-d28586dc1386", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + { + "text": "Reservoir Dogs (1992)", + "text_with_markups": "Reservoir Dogs (1992)", + "product": { + "product_id": "tmdb-500" + } + }, + ... + ] + } + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **completions**: an dictionary of autocompletion candidates from + different sources. By default, we only run + + autocompletion against the titles of products, but you can choose to get + autocompletion candidates from other fields + + using the `completion_fields` parameters. + + * **completions.title[].text**: the text of completion candidates + + * **completions.title[].text_with_markups**: the completion candidates + with the part of text that users + + haven't typed yet surrounded by \ HTML tags. + + * **completions.title[].product**: the product record whose title + matches the autocompletion candidate. This object can be used to + implement direct-to-product links: when they click on the link they will + go + + directly to the product page instead of the search result page. By + default, only the `product_id` field is returned, + you use `fl` request parameter to get more fields returned in the product object. + + + ### Typo resistance + + Miso's autocompletion algorithm accepts up to 4 typos in the query + string. For example, users may try to find the + movie `Robin Hood`, but make two typos in the query, which becomes `robonhood` instead (`robin`->`robon`, and a space is missing). + + ``` + + POST /v1/search/autocomplete + + { + "q":"robanhood", + "user_id":"user-123" + } + + ``` + + + Miso can still find the movie "*Robin Hood: Prince of Thieves*" as a + autocompletion candidate. + + ```javascript + + { + "message": "success", + "data": { + "took": 50, + "miso_id": "e93a6d02-0a7a-11eb-a896-d28586dc1386", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + ... + ] + } + } + } + + ``` + + + ### Completion fields + + The auto-completions are made against your product attributes. By + default, Miso finds completion candidates from the + + `title` field. The `completion_fields` parameter + + lets you specify the attributes you want to perform auto-completion for. + + For example, the following query will return auto-completion candidates + from the `title` and a custom attribute + + field:`custom_attributes.director`. + + ``` + + POST /v1/search/autocomplete + + { + "q": "rob", + "user_id": "user-123", + "completion_fields": [ + "title", + "custom_attributes.director" + ] + } + + ``` + + The response will be like the following: + + ```javascript + + { + "message": "success", + "data": { + "took": 52, + "miso_id": "16d95080-0bb0-11eb-948d-66359cf29022", + "completions": { + "title": [ + { + "text": "Robin Hood: Prince of Thieves (1991)", + "text_with_markups": "Robin Hood: Prince of Thieves (1991)", + "product": { + "product_id": "tmdb-8367" + } + }, + { + "text": "RoboCop (1987)", + "text_with_markups": "RoboCop (1987)", + "product": { + "product_id": "tmdb-5548" + } + }, + ... + ], + "custom_attributes.director": [ + { + "text": "Robert Z. Leonard", + "text_with_markups": "Robert Z. Leonard", + }, + ... + ] + } + } + } + + ``` + operationId: autocomplete_v1_search_autocomplete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AutocompleteRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/AutocompleteResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/search/mget: + post: + tags: + - Search APIs + summary: Multiple Get API + description: >- + The Multiple Get API provides a simple and fast interface to retrieve + Products by their product ids. + + For example, the following query will retrieve products whose + product_ids are `123ABC-S-Black` and `123ABC-S-Blue` + + ``` + + { + "product_ids": ["123ABC-S-Black", "123ABC-S-Blue"] + } + + ``` + + Miso will respond with the complete Products records in the same order + as the given `product_ids`: + + ``` + + { + "message": "success", + "data": { + "products": [ + { + "_found": true, + "product_id": "123ABC-S-Black", + "title": "Product ABC in Black", + ... + }, + { + "_found": true, + "product_id": "123ABC-S-Blue", + "title": "Product ABC in Blue", + ... + } + ] + } + } + + + ``` + + You can use the `_found` field to determine whether a product is found + in the Miso database or not. + + When the given product_id is not found, the `_found` field in the + corresponding Product record + + will become `false`. + + + For example, the following query requests a `product_id` that does not + exist in the Miso database: + + ``` + + { + "product_ids": ["Product_Not_Exists", "123ABC-S-Black"] + } + + ``` + + Miso will respond: + + ``` + + { + "message": "success", + "data": { + "products": [ + { + "_found": false, + "product_id": "Product_Not_Exists" + }, + { + "_found": true, + "product_id": "123ABC-S-Black", + "title": "Product ABC in Black", + ... + } + ] + } + } + + ``` + + Finally, like every Miso API, you can use `fl` to control what Product + fields to return. By default, all the Product + + fields will be returned, but the following query will return only + `title` field of the product (in addition + + to `product_id`) + + ``` + + { + "product_ids": ["123ABC-S-Black", "123ABC-S-Blue"], + "fl": ["title"] + } + + ``` + operationId: mget_v1_search_mget_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MultipleGetRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/MultipleGetResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/ask/questions: + post: + tags: + - Ask APIs + summary: Create a new qestion + description: |- + This API is used to submit questions to Miso. + + After a question is submitted, a `question_id` is returned. + Then you can use `question_id` to check the latest status of it's answer + as it is being compiled. + + operationId: questions_v1_ask_questions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/ask/questions/{question_id}/answer: + get: + tags: + - Ask APIs + summary: Get latest answer of asked question + description: >- + This API is used to fetch the latest answer of previous submitted + question from Miso + + + A submitted question is put into a job with following stage: + + + - Initialization + + - Parsing and fecthing related content + + - Relevance checking + + - Summarization + + + This API will tell you at what stage current question is in. + + If answer is fetched and being summerized, it will also return the + latest summarization result. + + + Besides human readable answer, the products used to generate answer are + also returned. + + operationId: questions_answer_v1_ask_questions__question_id__answer_get + parameters: + - required: true + schema: + title: Question Id + type: string + format: uuid + name: question_id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PollAnswerResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_products: + post: + tags: + - Recommendation APIs + summary: User to Products API + description: >- + Returns the products that are most likely to drive conversion for the + given user. Depending on the conversion + + metrics you choose when training your Miso Engines in Dojo, this API + returns products that are most likely to + + optimize those metrics (such as `add_to_cart`, `checkout`, or `read`). + + + This API considers both user's interests and the conversion probability. + The user's interests are determined from + + their past interactions on the site and the context of their current + browsing session, including recent trending + + products, time of the day, recent search behaviors, etc. + + + ### Application scenarios + + The User to Products API is usually used in homepage recommendations, + such as "*Inspired by your shopping trends*" on + + Amazon, or "*Recommended videos*" on Youtube. It can also be used to run + an email marketing campaign such as a + + newsletter from Medium with recent articles you might like. These kind + of recommendations are particularly powerful + + in driving product discovery. + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the id of + the current user or visitor via `user_id` + + or `anonymous_id` field. For example, for a currently logged-in user, + your request may look like the following: + + ``` + + POST /v1/recommendation/user_to_products + + {"user_id": "user-123"} + + ``` + + For a un-signed visitor, your request may look like the following: + + ``` + + POST /v1/recommendation/user_to_products + + {"anonymous_id": "visitor-123"} + + ``` + + + This API will respond with the recommended products for the specified + user or visitor: + + ```javascript + + { + "message": "success", + "data": { + "took": 37, + "miso_id": "517452b0-0ccf-11eb-948d-66359cf29022", + "products": [ + { + "product_id": "tmdb-475557", + "_personalization_score": 0.91 + }, + { + "product_id": "tmdb-299534", + "_personalization_score": 0.89 + }, + ... + ] + } + } + + ``` + + * **took**: the amount of time (in milliseconds) Miso took to answer the + query + + * **miso_id**: a UUID of the search request. You should include + **miso_id** in the Interaction records for every + + interactions that result from this search request, e.g. user + click-through a product in the search results. + + Miso use miso_id to track the search performance and fine-tune the + algorithm accordingly. + + * **products**: an array of [Product records](https://api.askmiso.com) + recommended to this + + user ranked by the probability that the user will be interested in this + product. By default, only the `product_id` + + of the Product is returned. You can ask Miso to return additional fields + by using the *fl* request argument (see example below) + + * **products[ ]._personalization_score**: the score assigned by Miso's + personalization algorithm based on users' + + profile and their interactions on the site. This score quantifies the + probability of whether users will be + + interested in this product or not. + + + You can use the `fl` request argument to ask Miso to return more product + fields. For example, the following request + + asks Miso to additionally return the *title* and *category* fields of + every recommended product: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"] + } + + ``` + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 37, + "miso_id": "517452b0-0ccf-11eb-948d-66359cf29022", + "products": [ + { + "product_id": "tmdb-475557", + "categories": [ + [ + "Crime" + ], + [ + "Thriller" + ], + [ + "Drama" + ] + ], + "title": "Joker (2019)", + "_personalization_score": 0.91 + }, + { + "product_id": "tmdb-299534", + "categories": [ + [ + "Adventure" + ], + [ + "Science Fiction" + ], + [ + "Action" + ] + ], + "title": "Avengers: Endgame (2019)", + "_personalization_score": 0.89 + }, + ... + ] + } + } + + ``` + + ### Filtering and Boosting + + Like every other Miso API, `User To Products` API supports filter query + (`fq`) and boost query (`boost_fq`) to + + generate recommendations that meet your business needs. + + + #### Filter Query + + You can use filter query to filter recommendation results against + + arbitrary criteria, and Miso will *guarantee* to return sufficient + number of recommendation results that meet the + + criteria. For example, the following requests will limit the + recommendations to only `Drama` films: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "fq": "categories:Drama" + } + + ``` + + + For another example with `custom_attributes`, the following requests + will limit the recommendations to + only `Drama` films after `2010`: + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "fq": "categories:Drama AND custom_attributes.year:[2010 to *]" + } + + ``` + + + #### Latency Consideration + + Miso achieves **instant** recommendations by pre-computing a large pool + of candidates (N>1,000) + + for each user with the products they are mostly likely to be interested + in. However, when the given filter query do + + not match a sufficient number of + + candidates, Miso will fall back to Search API to find additional matches + to fill in the remaining + + slots. While falling back to Search API will increase the latency, the + latency increase is usually minimum if the + + same filter query is being used repeatedly due to Miso's caching + mechanism. + + + + #### Boost Query + + You can use `boost_fq` to boost Products with arbitrary criteria. The + relevant Products that match the `boost_fq` + + will be ranked at the top of the recommendations or at the positions + specified in the + + `boost_positions` parameter. Boosting is particularly useful for product + promotions (e.g. sponsored products) to + + highlight the Products you want more impression. + + + For example, the following request will boost the `Sci-Fi` films + directed by `Ridley Scott`: + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "boost_fq": "categories:\"Sci-Fi\" AND custom_attributes.director:\"Ridley Scott\"" + } + + ``` + + The response will be like: + + + ```javascript + + { + "message": "success", + "data": { + "took": 83, + "miso_id": "54bf6d9a-dd32-11eb-99d6-a62d401473b5", + "products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)", + "_personalization_score": 0.5364759309088403, + "_boosted": true, + "categories": [ + [ + "Drama" + ], + [ + "Adventure" + ], + [ + "Science Fiction" + ] + ] + }, + ... + ] + } + } + + ``` + + The additional field **products[ ].boosted** is a boolean that indicates + whether the Product matches the `boost_fq`. + + + You can also use `boost_positions` to specify the positions in the + recommendation list you want the + + boosted Products to be placed. For example, the following request will + place the boosted Product at the second place, + + and the third place (the `boost_positions` are 0-based): + + + ``` + + POST /v1/recommendation/user_to_products + + { + "user_id": "user-123", + "fl": ["title", "categories"], + "boost_fq": "categories:\"Sci-Fi\" AND custom_attributes.director:\"Ridley Scott\"", + "boost_positions": [1, 2] + } + + ``` + + + ### Filtering "already seen" items + + Typically, the User to Products API is used to let users discover new + products they might be interested in. Therefore, + + it is important not to recommend products users have already interacted + with recently. By default, the User to Products + + API filters out the most recent 50 products users have had interactions + with (except for `impression` interactions) + operationId: user_to_products_v1_recommendation_user_to_products_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToItemsRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/RecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_categories: + post: + tags: + - Recommendation APIs + summary: User to Categories API + description: >- + The User to Categories API returns the product categories that will + drive the conversion for the current user, + + along with the recommended products for each returned category. + + + ### Application scenarios + + This API is usually used in homepage recommendations, or category + recommendations + + where recommendations are organized by categories, + + such as Netflix's "*Action / Sci-Fi / Drama movies for you*" + + or Amazon's "*Recommendations for you in Grocery & Gourmet Food*". The + goal of such recommendations is to help + + users discover attractive products under the categories they + + have a high chance to be interested in. + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the + `user_id` or + + `anonymous_id` of the current users. Miso will return a list of top + categories along with the recommended + + Products under each of the categories. + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "fl": ["title"] + } + + ``` + + * **rows**: the number of categories to return + + * **products_per_category**: the number of Products to return per each + category + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response of this request will be like: + + ``` + + { + "message": "success", + "data": { + "took": 85, + "miso_id": "7cd6059c-dd54-11eb-8050-a62d401473b5", + "categories": [ + { + "category": [ + "Drama" + ], + "total": 61510, + "recommended_products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)" + }, + { + "product_id": "tmdb-281957", + "title": "The Revenant (2015)" + }, + { + "product_id": "tmdb-68718", + "title": "Django Unchained (2012)" + } + ] + }, + { + "category": [ + "Thriller" + ], + "total": 21870, + "recommended_products": [ + { + "product_id": "tmdb-11324", + "title": "Shutter Island (2010)" + }, + { + "product_id": "tmdb-1949", + "title": "Zodiac (2007)" + }, + { + "product_id": "tmdb-1422", + "title": "The Departed (2006)" + } + ] + } + ] + } + } + + ``` + + * **categories**: a list of categories recommended to the users. + + * **categories[].category**: the recommended category in the format of + category hierarchy. `["Sci-Fi"]` is a top level category, + + `["Sci-Fi", "Space Travel"]` is a second-level category under `Sci-Fi` + (a.k.a subcategory). + + * **categories[].total**: the total number of Products belonging to the + category + + * **categories[].recommended_products**: a list of Products (in that + category) recommended to the users + + + ### Root Category + + By default, `User To Categories` API recommends top level categories, + but you can change this behavior + + via `root_category` parameter. Miso will recommend the immediate + sub-categories of the given `root_category` + + For example, the following request will recommend sub-categories under + + `Science Fiction`, for example `["Science Fiction", "Space Travel"]` or + `["Science Fiction", "Steampunk"]`: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "test", + "root_category": ["Science Fiction"] + } + + ``` + + + In some cases, you may want to get recommendations from *any* + subcategories (regardless their parent category). + + In such case, you can use wildcard `*` to achieve such results. For + example, the following request will recommend + + any sub-categories regardless their parent category: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "test", + "root_category": ["*"] + } + + ``` + + ### Filter and boost query + + Like every Miso API, `User To Categories` supports `fq` for filtering, + and `boost_fq` for boosting. You can use + + these parameters to make the recommendation results meet your exact + business needs. For example, the following + + request will recommend categories + + that contain sufficient number of Products that meet the `fq` criteria + (i.e. films after 2010), and each Product + + returned in the `recommended_products` list will also meet the `fq` + criteria: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "fq": "custom_attributes.year: [2010 TO *]" + } + + ``` + + Similarly, you can use `boost_fq` to promote Products that meet your + business criteria in each category. For example, + + the following request will prioritize Products that are promoted + (indicated by `custom_attributes.promoted`): + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_categories + + { + "user_id": "user-123", + "rows": 2, + "products_per_category": 3, + "boost_fq": "custom_attributes.promoted: true" + } + + ``` + + ### Latency considerations + + `User To Categories` API is one of more complex API because it needs to + first identify categories the user will be + + interested in, and then find the top Products in that categories. We + make this process real-time by pre-computing a + + large number of top Products users may find interesting in for each + category, therefore the end-to-end latency is + + usually under 100ms. To further reduce the latency, you can: + + * Use a smaller `products_per_category` to reduce number of products to + return, or set it to zeros if you don't need any. + + * Request only the necessary fields using `fl` parameters + + * Use a smaller `rows` to reduce number of categories to return + operationId: user_to_categories_v1_recommendation_user_to_categories_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToCategories' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CategoryRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_attributes: + post: + tags: + - Recommendation APIs + summary: User to Attributes API + description: >- + The `User to Attributes` API is a generalized version of `User to + Categories` API --- it returns the product + + attributes that Miso expects to drive a conversion for the current + + user. You specify a field in your Product catalog you want + recommendations for, e.g. the `brand` or a custom field like + + `custom_attributes.director`, and this API will return a list of values + from that fields Miso expects users will be most + + interested in, as well as a list of personalized product suggestions. + + + ### Applicable scenarios + + This API is usually used in homepage recommendations, where users can + interact with recommended attributes. + + For example, this API could generate suggestions for "the brands you may + like" or "the creators you may like." + + + ### Basic usage + + For basic usage of this API, you just need to let Miso knows the + `user_id` or `anonymous_id`, and the `field` you + + want to get recommendations for. For example, the following request will + return the recommended `director` for + + the given users: + + ``` + + POST https://api.askmiso.com/v1/recommendation/user_to_attributes + + { + "user_id": "test", + "field": "custom_attributes.director", + "rows": 3, + "products_per_attribute": 2, + "fl": ["title"] + } + + ``` + + * **field**: the name of the field you want to get recommendation for + + * **rows**: the number of categories to return + + * **products_per_attribute**: the number of Products to return per each + attribute + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response of this request will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 296, + "miso_id": "9d7c8d9c-dd73-11eb-b20d-9a566192e5c6", + "attributes": [ + { + "value": "Christopher Nolan", + "total": 12, + "recommended_products": [ + { + "product_id": "tmdb-272", + "title": "Batman Begins (2005)" + }, + { + "product_id": "tmdb-77", + "title": "Memento (2000)" + } + ] + }, + { + "value": "Ridley Scott", + "total": 26, + "recommended_products": [ + { + "product_id": "tmdb-286217", + "title": "The Martian (2015)" + }, + { + "product_id": "tmdb-4982", + "title": "American Gangster (2007)" + } + ] + }, + { + "value": "Quentin Tarantino", + "total": 13, + "recommended_products": [ + { + "product_id": "tmdb-680", + "title": "Pulp Fiction (1994)" + }, + { + "product_id": "tmdb-68718", + "title": "Django Unchained (2012)" + } + ] + } + ] + } + } + + + ``` + + * **attributes**: a list of attributes recommended to the users. + + * **attributes[ ].value**: the recommended attribute value (in this + case, director name) + + * **attributes[ ].total**: the total number of Products that have this + attribute + + * **attributes[ ].recommended_products**: a list of Products (with the + attribute) recommended to the users + operationId: user_to_attributes_v1_recommendation_user_to_attributes_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToAttributes' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/AttributeRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/user_to_trending: + post: + tags: + - Recommendation APIs + summary: User to Trending API + description: >- + The User to Trending API returns the products that are currently + trending + + and are most likely to be of interest to this user. It's different from + the User to Products API because it will only + + recommend trending products. However, each user should still see unique + recommendations that are not only trending but + + also suit their interests. + + + ### Applicable scenarios + + This API is typically used to make homepage recommendations such as + "Trending products for users like you" or + + "Trending on Youtube". + + + ### Filtering "already seen" items + + The User to Trending API will not recommend products users have recently + interacted with. + operationId: trending_items_v1_recommendation_user_to_trending_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserToItemsRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/TrendRecResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/recommendation/product_to_products: + post: + tags: + - Recommendation APIs + summary: Product to Products API + description: >- + The Product to Products API returns the products that are related to an + anchor product (often the product the user + + is currently engaging with) and are also likely to drive conversions by + connecting with the user’s interests. It is + + different from the User to Products API as it not only considers the + user’s interests but also considers the + + recommended products' relevancy to the anchor product. + + + ### Applicable scenarios + + This API is frequently used in product detail page to show related + products that users can consume + + further, such as "Related products you may like" on Amazon or "Up next + video" on Youtube. It is one of Miso's best + + performing APIs. Our customers usually see more than 30% and some times + 110% relative lift in click-through rate after + + deploying this a feature using this API. + + + ### Basic usage + + To use this API, you just need to let Miso knows the `user_id` (or + `anonymous_id`) and the `product_id` you + + want to get related recommendations for. For example, the following + request will return the products that are + + related to the movie `Toy Story`. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"] + } + + ``` + + * **product_id**: the id of the anchor product + + * **rows**: the number of related products to return + + * **fl**: like in other Miso API, you can use `fl` to control which + fields to return for each Product + + + The response will be like: + + ```javascript + + { + "message": "success", + "data": { + "took": 56, + "miso_id": "f98b1904-ddce-11eb-be53-fa1729b23183", + "products": [ + { + "product_id": "toy-story-2-1999", + "title": "Toy Story 2 (1999)" + }, + { + "product_id": "toy-story-3-2010", + "title": "Toy Story 3 (2010)" + }, + { + "product_id": "the-lion-king-1994", + "title": "The Lion King (1994)" + } + ] + } + } + + ``` + + * **products**: a list of products related to the anchor product + + * **products[ ].product_id**: the id of the recommended product + + * **products[ ].title**: the title of the recommended product. You can + use `fl` parameter to make Miso return more fields + + + ### Boosting and filtering + + Like every Miso API, you can utilize `fq` and `boost_fq` to fine-tune + the recommendations returned by Miso, and + + Miso will guarantee to return the required number of recommendations + that meet the given criteria. + + + For example, the following request still recommends movies related to + "Toy Story" but limits the recommendations + + to only the movies released after year 2010. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"], + "fq": "custom_attributes.year: [2010 TO *]" + } + + ``` + + + For another example, the following request will *boost* the movies that + are acted by `Tom Hanks`. The boosting is + + different from filtering as it only prioritizes those products that + match the boosting criteria and are relevant to + + the anchor products, but it will not limit the results to only such + products. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_id": ["toy-story-1995"], + "rows": 3, + "fl": ["title"], + "boost_fq": "custom_attributes.actors:\"Tom Hanks\"" + } + + ``` + + + ### Multiple anchor products + + In the scenarios where you want to recommend products related to + **multiple** anchor products, for example, + + for shopping cart cross-sell or up-sell, you can utilize `product_ids` + + parameter and have multiple product ids in it. + + + For instance, the following request recommends products related to + movies "Toy Story" and "Monsters, Inc." + + that will be of interest to the the current user. + + ``` + + POST https://api.askmiso.com/v1/recommendation/product_to_products + + { + "user_id": "user_123", + "product_ids": ["toy-story-1995", "monsters-inc-2001"], + "rows": 3, + "fl": ["title"] + } + + ``` + operationId: product_to_products_v1_recommendation_product_to_products_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/YMALRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/ProductToProductsResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/qa/question_answering: + post: + tags: + - Q&A APIs + summary: Q&A API + description: >- + Question Answering API analyzes each Product's `html` field and extracts + paragraphs that can answer users' + + questions. + + + For example, Miso can take question likes `What is python?`, and extract + an answer like + + `Python is an interpreted, object-oriented, high-level programming + language.` from a product's `html` field. + + + Each answer is assigned a `probability` score that determines how likely + a paragraph can accurately answer the + + question. A probability at least 0.7 is recommended, but you usually + will need to fine-tune + + this threshold to find the precision-and-recall sweet-spot for your + application. + + + ### Limitations + + Miso will only extract answers from the `html` field and from products + that have `enable_question_answering` set to `true`. Also, + + since Q&A is a much more complex search problem, the response time of + this API is usually between 1 to 2 seconds + + for a new question. For an old question this API has answered before, + the response time will be less than 75ms. + operationId: question_and_answer_v1_qa_question_answering_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionAnsweringRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QAResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/qa/questions: + post: + tags: + - Q&A APIs + summary: Upload Question Bank API + description: >- + Question Bank API lets you upload your *question bank* to Miso. A + *question bank* is a list of questions that + + can be used for **Question Autocomplete** and **Similar Question + Search**. + + + This API follows a *replace-all* model, i.e. a successful upload request + will replace all the existing questions + + in the question bank. + + + For example, the following request will replace the existing question + bank with the given three questions: + + ``` + + POST /v1/qa/questions + + {"data": [ + {"question": "What is python?"}, + {"question": "What is list comprehension?"}, + {"question": "How to sort a list in Python?"} + ]} + + ``` + + + + + operationId: post_questions_v1_qa_questions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PostQuestionRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BaseResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/qa/question_autocomplete: + post: + tags: + - Q&A APIs + summary: Question Autocomplete API + description: >- + Question Autocomplete is an important feature for Q&A applications. It + not only saves your users from typing + + the complete questions, but also showcases what questions your app is + capable answering. This is important because + + Q&A is an advanced search feature that not every user is familar with. + + + Miso generates autocomplete candidates from the question bank you + uploaded (see [Question Bank Upload API](...)). + + Given a partial question string, Question Autocomplete API will suggest + question candidates that match the query + + the user is typing. + + + + For example, let's first upload three questions to the question bank: + + ``` + + POST /v1/qa/questions + + {"data": [ + {"question": "What is python?"}, + {"question": "What is pypy?"}, + {"question": "How to sort a list in Python?"} + ]} + + ``` + + + Then, immediately after the above request finished, you can send the + request below to get autocompletion + + candidates for any partial query string. For example, if the query + string the user types so far is *"what is p"*: + + + ``` + + POST /v1/qa/question_autocomplete + + { + "q": "what is p", + "rows": 5 + } + + ``` + + + The API will respond the completion candidates like the following: + + ``` + + { + "data": + "completions": [ + {"question": "What is python?"}, + {"question": "What is pypy?"} + ] + } + } + + ``` + + + The API supports adaptive fuzzy matching such that even if there are + typos in the query string, the API + + is still able to return the question candidates with the correct + spellings. For example, if the query string is + + "*How to sorta*". The API is still able to match the completion + candidate: + + "*How to sort a list in Python?*" + + + The API is optimized for instant experience and has an average response + time lower than 50ms. + operationId: post_autocomplete_v1_qa_question_autocomplete_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuestionAutocompleteRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/QAAutocompleteResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] + /v1/bulk: + post: + tags: + - Bulk API + summary: Bulk Request API + operationId: bulk_v1_bulk_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkRequest' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BulkResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - Secret API Key: [] +components: + schemas: + AddToCart: + title: add_to_cart + required: + - type + type: object + properties: + type: + title: Type + enum: + - add_to_cart + type: string + description: > + + Used when a user adds a product into their shopping cart. This is a + strong + + positive signal of the user's interest in the product, and may + eventually lead to a purchase. + quantities: + title: Quantities + anyOf: + - type: array + items: + type: number + - type: number + description: > + + The quantities of products the user adds to their cart or checks out + with. This field should be a list of positive values. + + Specifically, if `product_ids` is a list of N products, the + `quantities` needs to be a list with N numbers as well. + + If `quantities` are not specified, we will assume the quantity to be + 1 for every product. + + + Example: + + ``` + + {"quantities": [1, 2]} + + ``` + example: + - 1 + - 2 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + AddToCollection: + title: add_to_collection + required: + - type + type: object + properties: + type: + title: Type + enum: + - add_to_collection + type: string + description: > + + Used when a user adds a product to their personal collection. This + is a strong + + signal of their interest in the product. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + AnchoringEntry: + title: AnchoringEntry + required: + - product_id + - anchor_ids + type: object + properties: + product_id: + title: Product Id + type: string + description: Product to boost + anchor_ids: + title: Anchor Ids + minLength: 1 + type: array + items: + type: string + minLength: 1 + description: A list of anchor products + relative_position: + title: Relative Position + type: integer + description: Relative position to the top anchor product + default: -1 + start_time: + title: Start Time + type: string + description: When does the anchoring start. Leave it unset to start immediately + format: date-time + end_time: + title: End Time + type: string + description: When will the anchoring end. Leave it unset to not have an end time + format: date-time + Answer: + title: Answer + required: + - probability + - text + - css_selector + type: object + properties: + probability: + title: Probability + maximum: 1 + minimum: 0 + type: number + description: >- + The probability this paragraph can sufficiently answer the user's + question (from 0.0 to 1.0). + html: + title: Html + type: string + description: >- + The answer paragraph in its original html tag, i.e. or the + `outerHTML` of the + answer paragraph node. + + text: + title: Text + type: string + description: The plain text version of answer paragraph. + css_selector: + title: Css Selector + type: string + description: > + + The CSS selector that uniquely identifies the answer paragraph node + in the original HTML content. This css selector + + matches exactly one HTML node that contains the answer paragraph. In + order to be as unambiguous as possible, + + the returned CSS selector is in the form of a series of nth-child + selectors starting from `:root` node + + (which is usually the ``). For example, + + ``` + + :root > div:nth-child(1) > p:nth-child(2) + + ``` + + . This selector means the answer paragraph is a `

` tag that is + the second child of a `

` node, which is in turn, the + + first child of the `:root` node. + + + This CSS selector is useful when you want to make the answer + paragraph stand out from the + + rest of the document. For example, + + the following JQuery code turns the background color of the answer + paragraph to yellow: + + + ``` + + $(answer.css_selector).css("background-color", "yellow"); + + ``` + AnswerBlock: + title: AnswerBlock + required: + - html + - css_selector + - relevant_children_slice + - answer_css_selector + - title + type: object + properties: + html: + title: Html + type: string + description: The HTML content of the answer block + css_selector: + title: Css Selector + type: string + description: >- + The CSS selector that uniquely identifies the answer block from the + HTML root + relevant_children_slice: + title: Relevant Children Slice + type: array + items: + - type: integer + - type: integer + description: >- + The range of children nodes inside the *answer block* that is + relevant to the selected answer. + answer_css_selector: + title: Answer Css Selector + type: string + description: |2- + + The CSS selector to the selected answer paragraph inside the answer block. You can use this selector to select + the answer from the answer block (as supposed to selecting from the HTML root) + + title: + title: Title + type: string + description: >- + The relevant title to the answer paragraph. This title is extracted + from a header node close + to the answer paragraph. If there is no such node, the title will be an empty string + AnswerData: + title: AnswerData + required: + - question + - question_id + type: object + properties: + question: + title: Question + type: string + description: The question given by the user + question_id: + title: Question Id + type: string + description: The UUID of the question for which the latest answer is requested. + format: uuid + parent_question_id: + title: Parent Question Id + type: string + description: >- + The UUID of the parent question if the current question is a + follow-up to a previous question. + format: uuid + answer_stage: + title: Answer Stage + type: string + description: The status of the answer generating process. + default: '' + finished: + title: Finished + type: boolean + description: Whether the answer generating process is finished. + default: false + answer: + title: Answer + type: string + description: The latest answer for the given question. + default: '' + sources: + title: Sources + type: array + items: + type: object + description: A list of sources related to the answer. + default: [] + related_resources: + title: Related Resources + type: array + items: + type: object + description: A list of related resources relevant to the question and answer. + default: [] + followup_questions: + title: Followup Questions + type: array + items: + type: string + description: A list of suggested follow-up questions. + affiliation_products: + title: Affiliation Products + type: array + items: + type: object + description: A list of suggested affiliation products. + AttributeRecRecord: + title: AttributeRecRecord + required: + - value + - total + - recommended_products + type: object + properties: + value: + title: Value + type: string + description: The attribute we recommend to the user in their textual form. + example: Miso T-Shirt Shop + total: + title: Total + type: integer + description: The total number of products that have this attribute. + example: 1000 + recommended_products: + title: Recommended Products + type: array + items: + $ref: '#/components/schemas/Record' + description: Top personalized recommendations of products have this attribute. + example: 1000 + AttributeRecResponse: + title: AttributeRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/AttributeResponseBody' + AttributeResponseBody: + title: AttributeResponseBody + required: + - attributes + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + attributes: + title: Attributes + type: array + items: + $ref: '#/components/schemas/AttributeRecRecord' + description: The attribute recommendation results. + AutocompleteRequest: + title: AutocompleteRequest + required: + - q + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of search results to return. + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + q: + title: Q + minLength: 0 + type: string + description: > + + The search query users typed so far. Please keep the trailing spaces + (if any) intact so that we + + know whether the user has finished typing the last word or is still + typing it. For example, the following query + + means the user has finished typing the word *Fight*: + + ``` + + {"q": "Fight "} + + ``` + + On the other hand, the following query means the user has not + finished typing the last word *Clu*: + + ``` + + {"q": "Fight Clu"} + + ``` + language: + title: Language + type: string + description: > + + Two-letter (639-1) language code of the search query. If given, the + autocomplete results will be from + + that specific language. If not given, the autocomplete results will + be from the primary language + + of the environment. Example query: + + ``` + + {"language": "en"} + + ``` + min_query_users: + title: Min Query Users + type: integer + description: > + + Limits the query completion results to *historical queries* that + have been made by at + + least this number of unique users. This parameter has no effect when + `completion_fields` does not include + + `historical_queries`. We do not recommend setting `min_query_users` + lower than 5. When + + `min_query_users` is too small, we might risk showing queries that + contain typos or are too personal to the + + users who made the query. + default: 5 + completion_fields: + title: Completion Fields + type: array + items: + type: string + description: >+ + + + Controls the sources of autocompletion candidates. Miso performs + autocompletion by matching + + what the user has typed so far to either the *title* of products or + to other *attributes*. + + + By default, we only autocomplete against the value in the `title` + field. The `completion_fields` parameter lets you + + specify the attributes you want to perform autocompletion against. + For example, the following + + query will limit the autocompletion candidates to the `title` and + `tags` of products: + + + ``` + + {"completion_fields": ["title", "tags"]} + + ``` + + + Autocompletion also works on *custom attributes*. For example, if + you have a custom attribute for the + + `designer_name` of the product, the following query limits + autocompletion candidates to only the designer names: + + + ``` + + {"candidates": ["custom_attributes.designer_name"]} + + ``` + + default: + - title + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + additionalProperties: false + AutocompleteResponse: + title: AutocompleteResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/AutocompleteResponseBody' + AutocompleteResponseBody: + title: AutocompleteResponseBody + required: + - completions + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + completions: + title: Completions + type: object + additionalProperties: + type: array + items: + anyOf: + - $ref: '#/components/schemas/TitleCompletion' + - $ref: '#/components/schemas/Completion' + description: Autocompletion results. + example: + title: + - text: Miso Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + type: title + product: + product_id: 123ABC-S-Black + brand: + - text: Miso + type: brand + - text: Mitsui + type: brand + description: |- + autocomplete api response body: + { + "completions": [{"text": "", "source": ""}] + } + BaseBody: + title: BaseBody + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + BaseGeo: + title: BaseGeo + required: + - lat + - lon + type: object + properties: + lat: + title: Lat + maximum: 90 + minimum: -90 + type: number + description: Latitude of the center point, should between 90 and -90 + lon: + title: Lon + maximum: 180 + minimum: -180 + type: number + description: Longitude of the center point, should between 180 and -180 + BaseResponse: + title: BaseResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/BaseBody' + BaseResponseBody: + title: BaseResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/Record' + description: The recommendation results. + Bookmark: + title: bookmark + required: + - type + type: object + properties: + type: + title: Type + enum: + - bookmark + type: string + description: | + + Used when a user bookmarks a product. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + BoostItem: + title: BoostItem + required: + - field + - option + - query + type: object + properties: + field: + title: Field + type: string + description: The boosting field of the rule. + option: + title: Option + enum: + - contains + - not_contain + - is + - is_not + type: string + description: The boosting option of the field. + query: + title: Query + type: string + description: The boosting query of the field. + action: + title: Action + enum: + - pin + - bury + - remove + type: string + description: The boosting action of the field. + pin_position: + title: Pin Position + minimum: 1 + exclusiveMinimum: 0 + type: integer + description: >- + This field is a 1-based integer to describe the position. This field + is only used when action is "pin". + example: 1 + example: + field: title + option: contains + query: iphone + BoostingFilterBase: + title: BoostingFilterBase + type: object + properties: + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + BulkIndividualResponse: + title: BulkIndividualResponse + required: + - error + - status_code + - body + type: object + properties: + error: + title: Error + type: boolean + description: Whether there is an error + status_code: + title: Status Code + type: integer + description: Status code of the response + body: + title: Body + allOf: + - $ref: '#/components/schemas/GeneralBody' + description: The response body + description: 'Individual response in a bulk API request ' + BulkRequest: + title: BulkRequest + required: + - requests + type: object + properties: + requests: + title: Requests + maxItems: 100 + minItems: 1 + type: array + items: + $ref: '#/components/schemas/EngineAPIRequest' + description: An array of request objects + description: Bulk API request + BulkResponse: + title: BulkResponse + required: + - data + - errors + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/BulkIndividualResponse' + description: The bulk request results + errors: + title: Errors + type: boolean + description: Whether there is any errors in the responses + description: 'Bulk API response ' + Campaign: + title: Campaign + type: object + properties: + name: + title: Name + type: string + description: >- + Name of the campaign. Identifies a specific product promotion or + strategic campaign. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: spring_sale + source: + title: Source + type: string + description: >- + Source of the campaign. Identifies which site sent the traffic. (see + [UTM parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: Google + medium: + title: Medium + type: string + description: >- + Medium of the campaign that identifies what type of link was used, + such as cost per click or email. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: cpc + term: + title: Term + type: string + description: >- + Term of the campaign that identifies search terms. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: running+shoes + content: + title: Content + type: string + description: >- + Content of the campaign that identifies what specifically was + clicked to bring the user to the site, such as a banner ad or a text + link. It is often used for A/B testing and content-targeted ads. + Identifies search terms. (see [UTM + parameters](https://en.wikipedia.org/wiki/UTM_parameters)) + example: textlink + CategoryPageView: + title: category_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - category_page_view + type: string + description: > + + Used when a user views a category page for a specific “family” or + “group” or products or content. + + This is a strong indicator of what types category of products or + content the user is interested in. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + category: + title: Category + type: array + items: + type: string + description: > + + Categories usually fall in a hierarchy, such as *Home & Garden > + Kitchen & Dining > Kitchen Tools & Utensils > + + Sushi Mats* Use this field to specify the full hierarchical list + describing the category the user is viewing. + + + The levels should be listed from broad to narrow: + + `["TOP_LEVEL_CATEGORY", "SUBCATEGORY_1", "SUBCATEGORY_2", ...]`. + + This field is only used by the category_page_view interaction type, + but this data is very useful for + + determining the user’s interests. + + Example: + + ``` + + [ + "Home & Garden", // TOP_LEVEL_CATEGORY + "Kitchen & Dining", // SUBCATEGORY_1 + "Kitchen Tools & Utensils", // SUBCATEGORY_2 + "Sushi Mats" // SUBCATEGORY_3 + ] + + ``` + additionalProperties: false + CategoryRecRecord: + title: CategoryRecRecord + required: + - category + - total + - recommended_products + type: object + properties: + category: + title: Category + type: array + items: + type: string + description: The attribute we recommend to the user in their textual form + example: + - Miso T-Shirt Shop + total: + title: Total + type: integer + description: The total number of products that are associated with this category. + example: 1000 + recommended_products: + title: Recommended Products + type: array + items: + $ref: '#/components/schemas/Record' + description: >- + Top personalized recommendations for the user of products that are + associated with this category. + example: 1000 + CategoryRecResponse: + title: CategoryRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/CategoryResponseBody' + CategoryResponseBody: + title: CategoryResponseBody + required: + - categories + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + categories: + title: Categories + type: array + items: + $ref: '#/components/schemas/CategoryRecRecord' + description: The category recommendation results. + CheckProductExistence: + title: CheckProductExistence + required: + - product_ids + type: object + properties: + product_ids: + title: Product Ids + minLength: 1 + type: array + items: + type: string + minLength: 1 + description: >- + A list of product ids to be checked if they will be returned in the + search results + Checkout: + title: checkout + required: + - type + type: object + properties: + type: + title: Type + enum: + - checkout + type: string + description: > + + Used when a user enters checks out with a set of products. For an + eCommerce site, this is the strongest signal of the user's + + interest and has a high probability of leading to an eventual + purchase. + revenue: + title: Revenue + type: number + description: > + + Total revenue associated with the checkout. The revenue should + include generally shipping, tax, etc. that you + + want to include as part of your revenue calculations. + example: 23.32 + quantities: + title: Quantities + anyOf: + - type: array + items: + type: number + - type: number + description: > + + The quantities of products the user adds to their cart or checks out + with. This field should be a list of positive values. + + Specifically, if `product_ids` is a list of N products, the + `quantities` needs to be a list with N numbers as well. + + If `quantities` are not specified, we will assume the quantity to be + 1 for every product. + + + Example: + + ``` + + {"quantities": [1, 2]} + + ``` + example: + - 1 + - 2 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + ChildrenObject: + title: ChildrenObject + required: + - id + type: object + properties: + id: + title: Id + type: string + url: + title: Url + type: string + title: + title: Title + type: string + description: + title: Description + type: string + html: + title: Html + type: string + headers: + title: Headers + type: array + items: + type: string + custom_attributes: + title: Custom Attributes + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + Click: + title: click + required: + - type + type: object + properties: + type: + title: Type + enum: + - click + type: string + description: > + + Used when user clicked on something, and does not belong to any + other interaction type. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Complete: + title: complete + required: + - type + type: object + properties: + type: + title: Type + enum: + - complete + type: string + description: > + + Used when a user "complete" a product (e.g. complete a course or a + video). + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Completion: + title: Completion + required: + - text + - text_with_markups + - text_with_inverted_markups + type: object + properties: + text: + title: Text + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_markups: + title: Text With Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_inverted_markups: + title: Text With Inverted Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + description: 'basic completion response only has `text` ' + CreateResponse: + title: CreateResponse + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + data: + $ref: '#/components/schemas/TaskId' + Custom: + title: custom + required: + - type + - custom_action_name + type: object + properties: + type: + title: Type + enum: + - custom + type: string + description: > + + Used when you want to record any other kinds of interactions between + users and products. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + custom_action_name: + title: Custom Action Name + type: string + description: | + + The name of the custom interaction that you have defined. + additionalProperties: false + DeleteResponse: + title: DeleteResponse + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + data: + $ref: '#/components/schemas/TaskId' + Dislike: + title: dislike + required: + - type + type: object + properties: + type: + title: Type + enum: + - dislike + type: string + description: > + + Used when a user indicates a `dislike` for a product or indicates + + they would like to not be recommended content or products like this + in the future. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + DiversifyField: + title: DiversifyField + type: object + properties: + minimum_distance: + title: Minimum Distance + type: integer + description: Minimum distance between two products that have the same value + default: 1 + always_together: + title: Always Together + type: boolean + description: >- + If always_together=true, all the products that have the same value + for this field, will be put side-by-side. + default: false + EngineAPIRequest: + title: EngineAPIRequest + required: + - api_name + - body + type: object + properties: + api_name: + title: Api Name + type: string + description: > + + The name of the API. An API name should contain one slash. For + example: `search/search` or `recommendation/user_to_products` + body: + title: Body + type: object + description: | + + The request body to the API. + description: Engine API request + ExperimentRequest: + title: ExperimentRequest + type: object + properties: + user_id: + title: User Id + type: string + description: Identifies the signed-in user who performed the interaction. + example: '2179873' + anonymous_id: + title: Anonymous Id + type: string + description: A pseudo-unique substitute for the User Id + example: 403fb18e-98ff-434d-8585-726fabf5ed37 + variant_name: + title: Variant Name + type: string + description: >- + Set the variant_name if you want to assign a user to a specific + variant. Most of the time, you don't need to pass this field. + Instead, the system will automatically assign a variant for this + user. + example: Treatment_Group + timestamp: + title: Timestamp + type: string + description: >- + The time the user is assigned to the variant group. If not set, + current time will be used. + format: date-time + example: '2022-01-23T12:34:56-08:00' + FacetCounts: + title: FacetCounts + type: object + properties: + facet_fields: + title: Facet Fields + type: object + additionalProperties: + type: array + items: + type: array + items: + - type: string + - type: integer + description: Facet counts of each facet field + default: {} + FacetDefinition: + title: FacetDefinition + required: + - field + type: object + properties: + field: + title: Field + type: string + description: >+ + + The field name to create a facet against. For example, the following + query will create a facet against + + the `custom_attributes.director` field, and return the ten most + common facet values of this field + + (for Products that match the search query): + + ``` + + { + "field": "custom_attributes.director", + "size": 10 + } + + ``` + + size: + title: Size + type: integer + description: > + + Number of facet values to return. The facet values are sort + descendingly by the number of Products + + that have these values (and match the search query). + default: 10 + include: + title: Include + type: string + description: > + + Filter facet values based on a regular expression. For example, the + following query will return only the facet + + values that start with `Steven` (case-sensitive): + + ``` + + { + "field": "custom_attributes.director", + "size": 10, + "include": "Steven.*" + } + + ``` + + You can escape a special character with a preceding backslash `\` or + surround it with double quotes. + + For example, the following query will only return the facet values + starting with `St.`: + + + ``` + + { + "field": "custom_attributes.place_name", + "size": 10, + "include": "\"St.\".*" + } + + ``` + + + Note that, the `include` parameter will only affect the facet + values, and will not affect the search result itself. + ranges: + title: Ranges + type: array + items: + $ref: '#/components/schemas/RangeRequireKey' + description: > + + Facet ranges for numeric fields or date-like string fields. For + example, the following query groups the products + + into fours buckets against on their `original_price` ranges, each of + which has a user-friendly "key": + + ``` + + { + "field": "original_price", + "ranges": [ + {"to": 10, "key": "Less than 10 dollars"}, + {"from": 10, "to": 100, "key": "10 to 100 dollars"}, + {"from": 100, "to": 1000, "key": "100 to 1,000 dollars"}, + {"from": 1000, "key": "More than 1,000 dollars"} + ] + } + + ``` + + + For each range object, you need to at least specify one of the `to` + or `from` values (or both). `from` + + is always **inclusive**, and `to` is always **exclusive**. In the + response, Miso refers to each bucket by their `key`. + + For example, the above request will have the following response: + + ``` + + { + "facet_counts": { + "facet_fields": { + "original_price": [ + [ + "Less than 10 dollars", 1987 + ], + [ + "10 to 100 dollars", 109 + ], + [ + "100 to 1,000 dollars", 123 + ], + [ + "More than 1,000 dollars", 5 + ] + ] + } + } + } + + ``` + queries: + title: Queries + type: array + items: + $ref: '#/components/schemas/QueryFilterRequireKey' + description: > + + Facet queries that support facet counts for any arbitrary Lucene + queries, + + each of which is labeled by a user-friendly "key": + + ``` + + { + "field": "my_custom_facet", + "queries": [ + { + "query": "price: [* TO 10] AND size:"Small"", + "key": "Less than 10 dollars / Small size" + }, + { + "query": "price: [10 TO 100] AND size:"Medium"", + "key": "10 to 100 dollars / Medium size" + }, + { + "query": "price: [100 TO *] AND size:"Large"", + "key": "More than 100 dollars / Large size" + } + ] + } + + ``` + + + In the response, Miso refers to the query result by their `key`. + + For example, the above request will have the following response: + + ``` + + { + "facet_counts": { + "facet_fields": { + "my_custom_facet": [ + [ + "Less than 10 dollars / Small size", 1987 + ], + [ + "10 to 100 dollars / Medium size", 109 + ], + [ + "More than 100 dollars / Large size", 123 + ] + ] + } + } + } + + ``` + Feedback: + title: feedback + required: + - type + type: object + properties: + type: + title: Type + enum: + - feedback + type: string + description: | + + Used when a user sends feedback on provided results. + question_id: + title: Question Id + maxLength: 512 + type: string + description: > + + A unique identifier representing the specific question for which + feedback is being provided. + example: question_123 + result_type: + title: Result Type + type: string + description: > + + Indicates the type of result the provided feedback is associated + with, e.g., an answer or a suggestion. + example: answer + value: + title: Value + type: string + description: > + + Specifies the user's perspective on the provided result, with + possible values being helpful, not helpful, + + or unselected if the user has not provided any feedback. + example: helpful + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Filter: + title: Filter + type: object + properties: + terms: + title: Terms + type: array + items: + type: string + ranges: + title: Ranges + type: array + items: + $ref: '#/components/schemas/Range' + queries: + title: Queries + type: array + items: + $ref: '#/components/schemas/QueryFilter' + FilterQueryItem: + title: FilterQueryItem + required: + - option + - query + type: object + properties: + option: + title: Option + enum: + - overlap_with + type: string + description: The filter query option of the boosting rule. + query: + title: Query + type: string + description: The filter query of the boosting rule. + GeneralBody: + title: GeneralBody + type: object + properties: {} + description: 'Allow any json body ' + GeoDistanceQuery: + title: GeoDistanceQuery + required: + - lat + - lon + - distance + type: object + properties: + lat: + title: Lat + maximum: 90 + minimum: -90 + type: number + description: Latitude of the center point, should between 90 and -90 + lon: + title: Lon + maximum: 180 + minimum: -180 + type: number + description: Longitude of the center point, should between 180 and -180 + field: + title: Field + type: string + description: >- + Name of the field in product data that holds geographic coordinate. + Defaults to `location` + default: location + distance: + title: Distance + type: number + description: >- + Distance to center point, in kilometer or mile (according to + `distance_unit`) + distance_unit: + title: Distance Unit + enum: + - km + - mile + description: Unit of distance(`km` or `mile`). Defaults to `mile` + default: mile + GeoDistanceQueryBoost: + title: GeoDistanceQueryBoost + required: + - lat + - lon + - distance + type: object + properties: + lat: + title: Lat + maximum: 90 + minimum: -90 + type: number + description: Latitude of the center point, should between 90 and -90 + lon: + title: Lon + maximum: 180 + minimum: -180 + type: number + description: Longitude of the center point, should between 180 and -180 + field: + title: Field + type: string + description: >- + Name of the field in product data that holds geographic coordinate. + Defaults to `location` + default: location + distance: + title: Distance + type: number + description: >- + Distance to center point, in kilometer or mile (according to + `distance_unit`) + distance_unit: + title: Distance Unit + enum: + - km + - mile + description: Unit of distance(`km` or `mile`). Defaults to `mile` + default: mile + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: |2- + + Defines a list of 0-based positions you want to place the boosted products at. + + If `boost_positions` is not specified (which is the default behavior), all the boosted products will be ranked + higher than the rest of the products. + + GeoQuery: + title: GeoQuery + type: object + properties: + filter: + title: Filter + type: array + items: + $ref: '#/components/schemas/GeoDistanceQuery' + description: >- + When set, filter result to include only products within certain + geographic range from given point. + default: [] + boost: + title: Boost + type: array + items: + $ref: '#/components/schemas/GeoDistanceQueryBoost' + description: >- + When set, boost products within certain geographic range from given + point. + default: [] + HTTPValidationError: + title: HTTPValidationError + type: object + properties: + detail: + title: Detail + type: array + items: + $ref: '#/components/schemas/ValidationError' + HomePageView: + title: home_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - home_page_view + type: string + description: | + + Used when a user views your home page. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Impression: + title: impression + required: + - type + type: object + properties: + type: + title: Type + enum: + - impression + type: string + description: >- + + Used to record when a user saw or was presented with a product or + content asset. + + An impression does not mean a user is interested: for example, if + there is an impression for a + + certain product, but no further interaction occurs with that + product, we assume the user is probably not + + interested in it. + + + For an impression that was generated by Miso's search results or + recommendations results, it is important to + + include the `miso_id` associated with the results so that we know + the impression is from Miso + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + InteractionBulkIn: + title: InteractionBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + InteractionCreateOut: + title: InteractionCreateOut + required: + - message + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + InteractionDeleteIn: + title: InteractionDeleteIn + required: + - user_ids + type: object + properties: + user_ids: + title: User Ids + type: array + items: + type: string + InteractionDeleteOut: + title: InteractionDeleteOut + required: + - message + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + Like: + title: like + required: + - type + type: object + properties: + type: + title: Type + enum: + - like + type: string + description: | + + Used to record when a user indicates a `like` for a product. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Listen: + title: listen + required: + - type + type: object + properties: + type: + title: Type + enum: + - listen + type: string + description: > + + Used to record when and for how long a user listens to content that + is of an audio format. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + LocationInformation: + title: LocationInformation + required: + - lat + - lon + type: object + properties: + lat: + title: Lat + type: number + example: 40.74844 + lon: + title: Lon + type: number + example: -73.985664 + MultipleGetRequest: + title: MultipleGetRequest + required: + - product_ids + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + product_ids: + title: Product Ids + type: array + items: + type: string + description: > + + List of product_ids to retrieve. Products will be returned in the + same order as they are given in this list. + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product + along with the `product_id`, which is always returned. + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields (which is the + default): + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field. + + ``` + + {"fl": []} + + ``` + default: + - '*' + MultipleGetResponse: + title: MultipleGetResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/MultipleGetResponseBody' + MultipleGetResponseBody: + title: MultipleGetResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/RecordWithFound' + description: >- + Return a list of Product records. Some or all of them are potentially + not found + OrderByDefinition: + title: OrderByDefinition + required: + - field + type: object + properties: + field: + title: Field + type: string + description: >+ + + Name of the field to order by. You can sort by any numeric and + boolean fields in your Product catalog, or use one of any special + fields: + * **_personalization_score**: the score that rates the degree of + affinity between + + a pair of user and product from Miso's personalization algorithm. + + * **_search_score**: the score that rates the degree of search + keyword matches to a product's catalog. + + * **_boosting_score**: the score that rates the degree a Product is + boosted by your boosting query. + + tie_breaker: + title: Tie Breaker + allOf: + - $ref: '#/components/schemas/TieBreakDefinition' + default: + type: relative_difference + threshold: 0 + default_value: + title: Default Value + type: number + description: The default value to use when the scores do not exist for a Product + default: 0 + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/BaseGeo' + description: >- + The geo point to compute the `_geo_distance` variable against. This + is only required if + `_geo_distance` is present in the formula. + order: + title: Order + enum: + - desc + - asc + default: desc + Page: + title: Page + required: + - url + type: object + properties: + url: + title: Url + type: string + description: Url of the page + example: https://example.com/miso-tshirt-123ABC + referrer: + title: Referrer + type: string + description: Url of the referrer page + example: https://example.com/ + title: + title: Title + type: string + description: Title of the page + example: My Product Page + PartialMatchedRecord: + title: PartialMatchedRecord + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: |2- + + The unique identifier for the product. + + example: 123ABC-S-Black + PollAnswerResponse: + title: PollAnswerResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + description: >- + The status of the API response ('success' or other human readable + api status). + default: success + data: + title: Data + allOf: + - $ref: '#/components/schemas/AnswerData' + description: >- + The answer data containing the latest answer, sources, and related + resources. + PostQuestionRequest: + title: PostQuestionRequest + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/app__schemas__engine_api__request__Question' + description: Post questions request + ProductBulkDeleteIn: + title: ProductBulkDeleteIn + required: + - data + type: object + properties: + data: + $ref: '#/components/schemas/ProductIdList' + ProductBulkIn: + title: ProductBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/ProductRecord' + ProductDetailPageView: + title: product_detail_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - product_detail_page_view + type: string + description: >- + Used when a user views the detail page of a product. Viewing a + product + detail page usually indicates a user is interested in the product to certain degree, especially, + when the `duration` of the page view is long. When `duration` of the page view is very short (< 5 seconds), + `product_detail_page_view` may indicate neural or negative interest in the product. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + ProductIdList: + title: ProductIdList + required: + - product_ids + type: object + properties: + product_ids: + title: Product Ids + type: array + items: + type: string + ProductIds: + title: ProductIds + required: + - ids + type: object + properties: + ids: + title: Ids + type: array + items: + type: string + ProductImageView: + title: product_image_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - product_image_view + type: string + description: > + + Used when a user views the image of a product (e.g. to enlarge a + product photo). + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + ProductListOut: + title: ProductListOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + data: + $ref: '#/components/schemas/ProductIds' + additionalProperties: false + ProductReadOut: + title: ProductReadOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + data: + $ref: '#/components/schemas/ProductRecord' + additionalProperties: false + ProductRecord: + title: ProductRecord + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + minLength: 1 + type: string + description: > + + The unique identifier for this product. The Id can be in any format + you use in your product + + database (e.g. the product's SKU, UPC, or UUID or serial number). We + will use this Id to track how users + + interact with products and content in the Interactions records you + upload to Miso. It is important to keep the Id + + consistent between two datasets. For products that have multiple + variants, you should have a unique + + `product_id` for each variant, and use `product_group_id` to group + them together. + + + For example, for a T-shirt with SKU `123ABC` that comes in 4 sizes: + `S`, `M`, `L`, `XL`, we should create four different + + products: + + + ``` + + { + "product_id": "123ABC-S", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-M", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-L", + "product_group_id" "123ABC" + } + + { + "product_id": "123ABC-XL", + "product_group_id" "123ABC" + } + + ``` + + * Constraints + * Can't contain `,` + * Can't start with `_` + * Length <= 512 + example: 123ABC-S-Black + product_group_id: + title: Product Group Id + type: string + description: > + + The `product_group_id` is used to prevent the same product (but a + different variant) from showing multiple + + times in the search or recommendation results. When one product has + multiple variants (for example, different + + sizes, colors, or materials), you should assign a unique product_id + to each variant, but assign the same + + `product_group_id` to all of them. If `product_group_id` is not + given, we default to the value of `product_id`. + example: 123ABC + parent_id: + title: Parent Id + type: string + description: >+ + + The `parent_id` is used to declare a parent-child relationship + between two "Products". + + Such relationships are common in marketplaces and content media + sites with user generated contents. + + For example, an E-commerce marketplace (such as E-bay or Amazon) + + may have "Shops" (as parents) and "Merchandises" + + (as children), and a social streaming site, such as YouTube, may + have "Channel" (as parents) and "Video" (as children). In these + sites, both entities can be modeled as "Products", and can both be + returned in Search and Recommendation APIs. + + + Declaring the parent-child relationships allows Miso to + automatically propagate interactions from one product to the other. + + For example, when a user "watch" a + + Video, Miso will propagate this signal to the + + Channel which publishes this Video, even if users do not directly + interact with the Channel page. Such implicit + + interactions + + are particularly useful when making recommendations for Channel + because it gives Miso much more information + + about users' interests to different Channels than solely relying on + users' direct interactions with the + + them, which happens less often. + + + `parent_id` needs to be a non-empty string referring to the + `product_id` of the parent product. + + The parent product can be uploaded in a separate batch, and does not + need to exist before its children products. + + + The implicit interactions will only exist during Miso's training + process, and will not show up in the + + Interaction dataset. + + example: Nike_Shop_123 + related_ids: + title: Related Ids + type: array + items: + type: string + description: >- + The product_id or product_group_id of other products that are + related to this Product + type: + title: Type + type: string + description: > + + The `type` of product. This is for sites that have more than one + type of product or content that they want their users + + to interact with. If your site has only one type of product, you can + leave this field out. + + A classic example is travel sites, which have both *hotel* and + *flight* sales. It is also useful for sites that let + + users interact with products as well as *product bundles*. For + example, on YouTube, each video is a product that users + + can watch, while each channel, containing multiple videos, is also a + product that users can subscribe to. + + + For model quality, it is preferable to model all these distinct + product types in the same data set, so that a user's + + interests for one type of product can inform their interests in + another type of products. The `type` field helps Miso + + make these distinctions. + example: clothes + title: + title: Title + type: string + description: > + + The title of the product. During a search, Miso will put predictive + weight behind the title, + + because it is often the main way users identify a product. + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + description: + title: Description + type: string + description: > + + The `description` text of the product. Miso assumes `description` + contains longer textual content than other + + string-based fields. For example, term frequency matters more here + than in a field like the title. Miso’s + + semantic understanding can extract a lot of valuable information + from having a product description that is + + plain-spoken and detailed. + example: >- + This cute Shiba inu dog eating Miso soup is perfect for those who + love Japanese culture. + language: + title: Language + minLength: 2 + type: string + description: > + + The `language` of the product description and content in [two-letter + ISO 639-1 code]( + + https://en.wikipedia.org/wiki/ISO_639-1). For example, English = + `en`, Chinese = `zh`. + + Miso will use this field to determine the proper way to index the + product description. If this field is not specified, + + we will determine the language automatically. + + + We also use the language field to determine users’ interests in + content of different languages. This is particularly + + important for content media sites that have different languages of + content. + + + * Constraints: + * [Two-letter ISO 639-1 code](https://en.wikipedia.org/wiki/ISO_639-1). + For example, English = `en`, Chinese = `zh`. + example: en + created_at: + title: Created At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The time when the product was first created or became available on + your site as an ISO-8601 date or datetime string. + published_at: + title: Published At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The time when the product was published as an ISO-8601 date or + datetime string. + updated_at: + title: Updated At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The time when the product was updated as an ISO-8601 date or + datetime string. + categories: + title: Categories + type: array + items: + type: array + items: + type: string + description: > + + In Miso, you describe a product or content category as a + hierarchical list of strings from broad to narrow, + + called a `category`. (See the `category_page_view` interaction.) + + + Use the `categories` field of products to specify the hierarchical + category or categories that the product + + belongs to. A product may belong to only a single `category`, or + multiple. + + + For example, a product could be in both: + * *Toys & Games > Toys > Dolls, Playsets & Toy Figures > Stuffed Animals*, and + * *Arts & Entertainment > Hobbies & Creative Arts > Collectibles*. + + This field should be a list of a list of strings, where category levels go from broad to narrow, such as: + + ``` + + {"categories": + [ + // the first category the product belongs to + ["TOYS & GAMES", "TOYS", "DOLLS, PLAYSETS & TOY FIGURES", "STUFFED ANIMALS"], + // the second category the product belongs to + ["ARTS & ENTERTAINMENT", "HOBBIES & CREATIVE ARTS", "COLLECTIBLES"] + ] + } + + ``` + + + If your product taxonomy has only one single level, that is not an + issue: + + ``` + + {"categories": + [ + // the first category the product belongs to + ["Toys"], + // the second category the product belongs to + ["Collectibles"] + ] + } + + ``` + + + The categories are optional, but very important for profiling the + products and tracking users' preferences. + + (See also the `category_page_view` interaction) + example: + - - Clothing, Shoes & Jewelry + - Women + - T-Shirts + - - Novelty + - Tops & Tees + - T-Shirts + tags: + title: Tags + type: array + items: + type: string + description: | + + The tags that have been associated with the product. + + For example: + ``` + {"tags": ["TAG_1", "TAG_2", ...]} + ``` + example: + - cute + - anime + - dogs + - t-shirt + url: + title: Url + maxLength: 65536 + minLength: 1 + type: string + description: > + + Url to the product detail page. This is for displaying the product + in your Dojo Sandboxes and is not used for Engine training. + + It is optional, but strongly recommended for a better Sandbox + experience. + format: uri + example: https://example.com/miso-tshirt-123ABC + cover_image: + title: Cover Image + maxLength: 65536 + minLength: 1 + type: string + description: > + + The URL of the cover image of the product. This is for displaying + the product in your Dojo Sandboxes and + + is not used for Engine training. It is optional, but strongly + recommended for a better Sandbox experience. + format: uri + example: https://example.com/miso-tshirt-123ABC.jpg + original_price: + title: Original Price + type: number + description: > + + The (original) price of the product. We only use this number to + calculate the amount of discount, and use that + + to profile user behaviors. + + + * Constraints: + * Need to be a number, but no constraint on the range of the number + example: 20 + sale_price: + title: Sale Price + type: number + description: | + + The sale price of the product. + + * Constraints: + * Need to be a number, but no constraint on the range of the number + example: 15 + margin: + title: Margin + type: number + description: > + + The margin of the product. Note that for our margin optimization + algorithm to work, the margin you specify here + does not need to be the actual dollar amount, but it needs to be something in proportion to that. + + * Constraints: + * Need to be a number, but no constraint on the range of the number + example: 15 + size: + title: Size + type: string + description: > + + The size of the product. For example, for an eCommerce site that + sells T-shirts, each T-shirt might come in + + several different sizes. In this case, we recommend that you should + create one product entry for + + each size variant. When Miso generate search or recommendation + results, we use the `product_group_id` to remove + + different variants of the same product, and only show the variant + that the user is most likely to buy. + example: S + color: + title: Color + type: string + description: > + + The color of the products. Similarly to `size`, when `color` of the + products matters, it is recommended to create + + one product for each color variant of a product. When Miso generate + search or recommendation results, + + we use the `product_group_id` to remove variants of the same + product, and only show the + + variant that the user is most likely to buy. + example: Black + material: + title: Material + type: string + description: > + + The material of the products. Similarly to `size` and `color`, if + `material` of the product matters and there + + are multiple material variants, we should create one product for + each material variant. When Miso generates search or + + recommendation results, we use the `product_group_id` to remove + variants of the same product, and only show the + + variant that the user is most likely to buy. + example: Cotton + condition: + title: Condition + enum: + - NEW + - USED + - REFURBISHED + type: string + description: > + + The condition of the product. By default, we assume `condition`= + `NEW` + default: NEW + brand: + title: Brand + type: string + description: | + + The brand of the product. + example: Miso Corp. + authors: + title: Authors + type: array + items: + type: string + description: > + + The author(s) of the product or content asset. This field needs to + be an array of strings. + example: + - Andy Hsieh + publishers: + title: Publishers + type: array + items: + type: string + description: > + + The publisher(s) of the product or content asset. This field needs + to be an array of strings. + example: + - O'Reilly Media + collections: + title: Collections + type: array + items: + type: string + description: | + + The collection(s) the product belongs to. + example: + - Anime T-Shirt Collection + - Superhero T-Shirt Collection + availability: + title: Availability + enum: + - IN_STOCK + - OUT_OF_STOCK + - PRE_ORDER + type: string + description: > + + The availability of the product. Miso mainly uses `availability` to + filter `OUT_OF_STOCK` items out of its recommendations. + + As a default, we assume the product is `IN_STOCK`. + location: + title: Location + anyOf: + - type: array + items: + $ref: '#/components/schemas/LocationInformation' + - allOf: + - $ref: '#/components/schemas/LocationInformation' + description: > + + The location information of the product (e.g. for hotels or + restaurants). We support geolocation filtering + + and sorting when creating search and recommendation results if + location information is given. + rating: + title: Rating + type: number + description: > + + The overall rating of the product in the range of [0, 5]. If you use + a different rating scale, please convert it + + to the range of [0, 5]. + example: 5 + html: + title: Html + type: string + description: > + + The HTML content of the product. Miso will search against this field + and apply semantic understanding in a way that is + + similar to the `description` field, but with HTML tags removed. + subtitle: + title: Subtitle + type: string + description: | + + The subtitle of the product (usually for contents). + headers: + title: Headers + type: array + items: + type: string + description: > + + The headers in the content. This usually corresponds to `

`, + `

`, `

` ... tags in HTML. This field need to be an array of + strings + paragraphs: + title: Paragraphs + type: array + items: + type: string + description: > + + The text paragraphs in the content. This usually corresponds to + `

` tags in HTML. This field need to be an array of strings + anchors: + title: Anchors + type: array + items: + type: string + description: > + + The anchor texts paragraphs in the content. This usually corresponds + to `` tags in HTML. This field need to be an array of strings + children: + title: Children + type: array + items: + $ref: '#/components/schemas/ChildrenObject' + description: > + + Children objects of the product, such as chapters of a book, or + sections of a podcast. + + Children are only useful for long-form contents, and are only used + for snippet extraction purpose. + enable_question_answering: + title: Enable Question Answering + type: boolean + description: > + + Whether to enable question answering capability against the `html` + field. + default: false + custom_attributes: + title: Custom Attributes + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + - type: array + items: + type: string + - type: array + items: + type: number + description: > + + Dictionary of custom attributes for the product. You can specify + attributes specific to your business + + in a `{"KEY":VALUE}` format, where `KEY` must be a string, and + `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + + + For example, a video streaming site using Miso may have the movie + *Jumanji* with the following custom attributes: + + + ``` + + { + "custom_attributes": { + "cast": [ + "Robin Williams", "Jonathan Hyde", ... + ], + "director": "Joe Johnston", + "genres": [ + "Adventure", "Fantasy", "Family" + ], + "filming_locations": [ + {"country": "USA", "state": "New Hampshire", "city": "Keene"}, + {"country": "Canada", "state": "British Columbia", "city": "Vancouver"} + ], + "popularity": 7.439, + "adult": false + } + } + + ``` + + + **The custom attribute types need to be consistent across every + record in the dataset**. + + For instance, in the example above, the **cast** attribute needs to + be a `string` or `an array of string` or `null` + + for every record in the dataset that specify **cast** attribute. + + + + Similarly, the popularity attribute needs to be a `number`, `an + array of numbers`, or `null` for every record in the + + dataset that specifies the popularity attribute. If you try to + insert a record with an incompatible data type, the + + insertion for that record will fail. + example: + cast: + - Robin Williams + - Jonathan Hyde + director: Joe Johnston + genres: + - Adventure + - Fantasy + - Family + popularity: 7.439 + adult: false + additionalProperties: false + ProductToProductsResponse: + title: ProductToProductsResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/ProductToProductsResponseBody' + ProductToProductsResponseBody: + title: ProductToProductsResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/Record' + description: Product recommendation results. + PromoPageView: + title: promo_page_view + required: + - type + type: object + properties: + type: + title: Type + enum: + - promo_page_view + type: string + description: > + + Used when a user views a specific promotional or curated marketing + page about certain products or content. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + QAAutocompleteResponse: + title: QAAutocompleteResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/QAAutocompleteResponseBody' + description: Autocomplete Response + QAAutocompleteResponseBody: + title: QAAutocompleteResponseBody + required: + - completions + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + completions: + title: Completions + type: array + items: + $ref: '#/components/schemas/app__schemas__engine_api__response__Question' + description: Autocomplete Response + QAResponse: + title: QAResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/QAResponseBody' + QAResponseBody: + title: QAResponseBody + required: + - total + - spellcheck + - answers + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + total: + title: Total + type: integer + description: Total number of Question-Answer hits. + example: 1000 + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckResponse' + description: >- + Spellcheck results. You can use the information in this object to + prompt users with the correct spelling. + answers: + title: Answers + type: array + items: + $ref: '#/components/schemas/RecordWithAnswer' + description: The Question-Answer results. + QueryFilter: + title: QueryFilter + required: + - query + type: object + properties: + query: + title: Query + type: string + description: Query in Lucene syntax + key: + title: Key + type: string + description: User friendly label of the query result + QueryFilterRequireKey: + title: QueryFilterRequireKey + required: + - query + - key + type: object + properties: + query: + title: Query + type: string + description: Query in Lucene syntax + key: + title: Key + type: string + description: User friendly label of the query result + QuestionAnsweringRequest: + title: QuestionAnsweringRequest + required: + - q + - min_probability + type: object + properties: + version: + title: Version + enum: + - v1.2 + - v1.3 + description: > + + The model version to use. + + * **v1.2**: First stable version + + * **v1.3**: Improve keyword extraction that make answers more + precise + default: v1.2 + example: v1.2 + q: + title: Q + minLength: 1 + type: string + description: The question user has entered. + example: what is gradient descent + min_probability: + title: Min Probability + maximum: 1 + minimum: 0 + type: number + description: > + + Minimum acceptable probability (between 0.0 and 1.0). The answers + whose probability is lower than this number will be excluded + + from the response. + example: 0.7 + rows: + title: Rows + type: integer + description: Number of search results to return. + default: 1 + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. Each Q&A response, by default, return + two fields `answer` and `product_id`, where + + `answer` is an object with the information about the answer + paragraph while + + `product_id` identifies the *Product* from which the answer is + extracted. + + + For example, the following is a sample response from the API: + + ``` + + { + "product_id": "ABC-123", + "answer": + { + "html": "

Python is an interpreted programming language

", + "text": "Python is an interpreted programming language", + "css_selector": ":root > div:nth-child(1) > p:nth-child(2)", + "probability": 0.99 + } + } + + ``` + + + You can use `fl` parameter to retrieve additional product fields. + For example, the following request + + additionally retrieves the `title` field for each product along + + with the `product_id` and `answer`, which are always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and all the `custom_attributes` fields. + + + ``` + + {"fl": ["title", "custom_attributes.*"]} + + ``` + + + The following request retrieves all the available product fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array (which is the default) to + retrieve just the `product_id` and `answer` fields. + + ``` + + {"fl": []} + + ``` + default: [] + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckRequest' + description: Spellcheck configuration + default: + enable_auto_spelling_correction: true + enable_answer_html: + title: Enable Answer Html + type: boolean + description: >- + Whether to return HTML of the answer paragraph. If you don't need + the HTML content of the + answer paragraph, setting this parameter to `false` will reduce the response size and lower the + response latency. + default: false + enable_answer_block: + title: Enable Answer Block + type: boolean + description: > + + Whether to return *answer block*. + + In addition to answer paragraph, Miso can additionally return + *answer block*. + + Answer block is an ancestor HTML node of the answer paragraph that + contains the relevant context. + + The answer block is particularly useful for applications that not + only want to show + + the answer itself but also the **context** surrounding the answer. + + + Answer block is the smallest HTML element that contains the relevant + context. However, not all the content + + inside this node is relevant. You can use the returned + `relevant_children_slice` field + + to identify a portion of this node that is relevant to the answer. + default: false + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + boost_probability_threshold: + title: Boost Probability Threshold + type: number + description: > + + Minimum probability required for an answer to be boosted. If not + specified, the `min_probability` will be used. + QuestionAutocompleteRequest: + title: QuestionAutocompleteRequest + required: + - q + type: object + properties: + q: + title: Q + minLength: 1 + type: string + description: The query user has entered so far + example: what is g + rows: + title: Rows + type: integer + description: Number of autocomplete results to return. + default: 5 + description: Post question autocomplete request + QuestionRequest: + title: QuestionRequest + required: + - question + type: object + properties: + user_id: + title: User Id + type: string + description: >- + The user who made the query. For an anonymous visitor, use + `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: The anonymous visitor who made this query. + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + question: + title: Question + type: string + description: The question for which an answer is requested. + parent_question_id: + title: Parent Question Id + type: string + description: >- + The UUID of the parent question if the current question is a + follow-up to a previous question. + format: uuid + yearly_decay: + title: Yearly Decay + type: number + description: The yearly decay rate for the answer score. + default: 0.93 + source_fl: + title: Source Fl + type: array + items: + type: string + description: >+ + + A list of fields to be returned for the `sources`. Any fields in + uploaded product can be assigned, including fields in + `custom_attributes`. + + + If specificed field does not exist, that field will not be included + in the result. + + If you use different schema for `custom_attributes` across different + products, it is possible that not all returned sources has the some + fields. + + + For example, if you include `published_at` and `custom_attributes` + in `source_fl`: + + + ```json + + { + "question":"Explain Python GIL", + "source_fl":["published_at", "custom_attributes.rating"] + } + + ``` + + + The answer will contain `published_at` field for each source: + + + ```json + + { + "message": "success", + "data": { + "question": "Explain Python GIL", + "question_id": "57aeb083-b943-43b1-86ab-b6108788dd50", + "parent_question_id": null, + "answer_stage": "Generating summary", + "finished": true, + "answer": "# Explain Python GIL\n\n## Why do we need the GIL? [1]\n\nThe GIL is currently an essential part of the CPython...[omitted for simplicity]", + "sources": [ + { + "published_at": "2022-05-20T00:00:00+00:00", + "custom_attributes": { + "rating": 4.7 + }, + "product_id": "9781800207721", + "title": "Multiprocessing – When a Single CPU Core Is Not Enough", + "child_title": "Multiprocessing – When a Single CPU Core Is Not Enough", + "child_id": "16", + "snippet": "Remember the segmentation faults we saw in Chapter 11, ...[omitted]" + }, + { + "published_at": "2015-02-26T00:00:00+00:00", + "custom_attributes": { + "rating": 4.3 + }, + "product_id": "9780134034416", + "title": "5. Concurrency and Parallelism", + "child_title": "5. Concurrency and Parallelism", + "child_id": "12", + "snippet": "Click here to view code image\n...[omitted]" + }, + { + "published_at": "2020-04-30T00:00:00+00:00", + "custom_attributes": { + "rating": 3.5 + }, + "product_id": "9781492055013", + "title": "1. Understanding Performant Python", + "child_title": "1. Understanding Performant Python", + "child_id": "2", + "snippet": "Although it still locks Python into running ...[omitted]" + }, + { + "published_at": "2019-11-15T00:00:00+00:00", + "custom_attributes": { + "rating": 4.2 + }, + "product_id": "9780134854717", + "title": "7. Concurrency and Parallelism", + "child_title": "7. Concurrency and Parallelism", + "child_id": "16", + "snippet": "Although Python supports multiple threads of execution...[omitted]" + } + ], + "related_resources": [] + } + } + + ``` + + default: + - title + related_resource_fl: + title: Related Resource Fl + type: array + items: + type: string + description: >- + A list of fields to be returned for the `related_resources`. + Example: `['title', 'url']`. + default: + - title + cite_start: + title: Cite Start + type: string + description: 'The citation start marker. Example: `[` or `{`' + cite_end: + title: Cite End + type: string + description: 'The citation end marker. Example: `]` or `}`' + QuestionResponse: + title: QuestionResponse + required: + - data + type: object + properties: + data: + title: Data + allOf: + - $ref: '#/components/schemas/QuestionResponseData' + description: Question response data. + message: + title: Message + type: string + description: Human-readable message. + default: success + QuestionResponseData: + title: QuestionResponseData + required: + - question_id + type: object + properties: + question_id: + title: Question Id + type: string + description: The UUID for the submitted question. + format: uuid + Range: + title: Range + type: object + properties: + to: + title: To + anyOf: + - type: string + - type: number + description: End of the range (exclusive). + from: + title: From + anyOf: + - type: string + - type: number + description: Start of the range (inclusive). + key: + title: Key + type: string + description: User friendly label of the range + RangeRequireKey: + title: RangeRequireKey + required: + - key + type: object + properties: + to: + title: To + anyOf: + - type: string + - type: number + description: End of the range (exclusive). + from: + title: From + anyOf: + - type: string + - type: number + description: Start of the range (inclusive). + key: + title: Key + type: string + description: User friendly label of the range + Rate: + title: rate + required: + - type + type: object + properties: + type: + title: Type + enum: + - rate + type: string + description: | + + Used when a user gives a rating to a product or piece of content. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + rating: + title: Rating + type: number + description: > + + The rating the user gave in the range of [0, 5]. This field is only + required by the `rate` interaction. As a + + convention in the RecSys community, a rating >= 3.5 is considered + positive, a rating <= 2 is negative, + + and otherwise a rating is neutral. If you use any other rating + scale, please normalize it to a [0, 5] scale. + example: 5 + additionalProperties: false + Read: + title: read + required: + - type + type: object + properties: + type: + title: Type + enum: + - read + type: string + description: > + + Used to record when and for how long a user reads a piece of written + content. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + RecResponse: + title: RecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/BaseResponseBody' + Record: + title: Record + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: |2- + + The unique identifier for the product. + + example: 123ABC-S-Black + RecordWithAnswer: + title: RecordWithAnswer + required: + - product_id + - answer + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: >- + The unique identifier of the product whose content contains the + answer. + answer: + title: Answer + allOf: + - $ref: '#/components/schemas/Answer' + description: >- + The answer paragraph (i.e. a `

` node) whose text content can + answer users' question. + answer_block: + title: Answer Block + allOf: + - $ref: '#/components/schemas/AnswerBlock' + description: |2- + + In addition to the answer paragraph, we also return the **answer block**. + Answer block is the ancestor node of the answer paragraph that cover not only the answer, but also the relevant + context. This is particularly useful for applications that want to show + the answer itself but also the relevant context surrounding the answer. + + Answer block is the smallest HTML element that contains the relevant context. However, not all the content + inside this node is relevant. You can use the `relevant_children_slice` to identify a portion inside this + block that is relevant to the answer. + + RecordWithFound: + title: RecordWithFound + required: + - product_id + type: object + properties: + product_id: + title: Product Id + maxLength: 512 + type: string + description: |2- + + The unique identifier for the product. + + example: 123ABC-S-Black + description: >- + Product record but support `_found=true / false` field. When + _found=false, + + the product_id will not be available. + Refund: + title: refund + required: + - type + type: object + properties: + type: + title: Type + enum: + - refund + type: string + description: | + + Used when a user requests a refund of products they bought. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + RemoveFromCart: + title: remove_from_cart + required: + - type + type: object + properties: + type: + title: Type + enum: + - remove_from_cart + type: string + description: | + + Used when a user removes a product from their shopping cart. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + RemoveFromCollection: + title: remove_from_collection + required: + - type + type: object + properties: + type: + title: Type + enum: + - remove_from_collection + type: string + description: | + + Used when a user removes a product from their personal collection. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Search: + title: search + required: + - type + type: object + properties: + type: + title: Type + enum: + - search + type: string + description: > + + Used to record a search event with the keywords and filters the user + used. What a user searches for + + is a very powerful signal about their interests and what they will + eventually buy or consume, so it is important + + to capture this information with high fidelity. + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + search: + title: Search + allOf: + - $ref: '#/components/schemas/SearchInformation' + description: > + + The search keywords and filters the user uses. This is only required + by `search` interaction. + additionalProperties: false + SearchInformation: + title: SearchInformation + type: object + properties: + keywords: + title: Keywords + type: string + description: > + + The search keywords user use. Search keywords are strong signals to + users' interests. + default: '' + filters: + title: Filters + type: object + additionalProperties: + type: array + items: + type: string + description: > + + Dictionary of filters users apply to the search results in the + following format: + `{"FIELD": ["SELECTION_1", "SELECTION_2"]}`. + SearchRequest: + title: SearchRequest + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of search results to return. + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + q: + title: Q + minLength: 1 + type: string + description: > + + The search query the user has entered. Miso will perform full-text + search and find any Products + + that contain every word in this query. You can also set `q="*"` to + match all Products, which is commonly used along + + with Product filtering query `fq` to implement Category Pages. + + + *(to make a search request, You need to specify either `q` or + `advanced_q`)* + advanced_q: + title: Advanced Q + minLength: 1 + type: string + description: > + + Like Google's Advanced Search, the `advanced_q` parameter let you + define query beyond simple full-text + + search. For one, you can use double-quotes to indicate a phrase + search. + + + For example, the following query will + + only match Products that contain the *phrase* "Toy Story 4", and + will not match Products like "4 Toy Story" + + (because the word order is not the same as the given query). + + ``` + + {"advanced_q": "full_text:\"Toy Story 4\""} + + ``` + + + If you don't want phrase search, you can enclose the search terms + with parenthesis to indicate regular full-text query. + + For example: + + ``` + + {"advanced_q": "full_text:(Toy Story 4)"} + + ``` + + + You can also use AND/OR boolean operators to combine multiple + full-text queries. For example, the following query will match + + Products with phrases "Toy Story 4" and Products with phrases "Toy + Story 3", and will not match "Toy Story 2" or "Toy Story 1": + + ``` + + {"advanced_q": + + "full_text:\"Toy Story 4\" OR full_text:\"Toy Story 3\""} + + ``` + + + Finally, you can use AND/OR boolean operators to combine full-text + search with metadata filtering. + + For example, the following example will find Products with phrase + "Toy Story" OR Products which have Tom Hanks as an actor. + + ``` + + {"advanced_q": + + "full_text:\"Toy Story\" OR + custom_attributes.actors:\"Tom Hanks\""} + ``` + + + *(to make a search request, You need to specify either `q` or + `advanced_q`)* + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + enable_boosting_campaigns: + title: Enable Boosting Campaigns + type: boolean + description: > + + When set to true, enable user defined boosting campaigns. + + + By default boosting campaigns are enabled. But you can explicitly + set this to false to disable + + boosting campaigns. + default: true + custom_context: + title: Custom Context + type: object + description: > + + Dictionary of custom context variables for the current browsing + session. You can specify context variables + + specific to your websites or apps in a `{"KEY":VALUE}` format, where + `KEY` must be a string, and `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + Miso will take these variables into account when generating + recommendations. + example: + session_variable_1: + - value_1 + - value_2 + language: + title: Language + type: string + description: > + + Two-letter (639-1) language code of the search query. This parameter + is useful when you have a multilingual + product catalog that contains product metadata in different languages. + If given, the search results will prioritize the products that have that specific language and match the search + query. Example query: + ``` + + {"language": "fr"} + + ``` + + + If not given, Miso will search against all the languages in the + catalog. + like: + title: Like + type: string + description: >- + The text snippet that we want to find products that are similar to + it + category: + title: Category + type: array + items: + type: string + description: > + + `category` parameter limits the search results to a particular + category or sub-category. + + This is particularly suitable for implementing Category Pages where + + you want to show personalized ranking of Products under a specific + category. Other filters, such as `q`, + + `fq`, `boost_fq` will be applied on top of the category filter. + + + A category is represented by a list of strings that correspond to + its category hierarchy. + + For example, the following query returns Products under `Snacks` + category: + + ``` + + { + "q": "*", + "category": ["Snacks"] + } + + ``` + + And the following request returns Products under `Snacks -> Chips` + subcategory: + + ``` + + { + "q": "*", + "category": ["Snacks", "Chips"] + } + + ``` + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckRequest' + description: Spellcheck configuration + default: + enable_auto_spelling_correction: true + start: + title: Start + type: integer + description: > + + Specifies an offset from which Miso will begin returning results. + + + The default value is `0`. Setting the start parameter to some other + number, such as 3, causes Miso to skip over the + + preceding products and start from the product identified by the + offset. + default: 0 + order_by: + title: Order By + type: array + items: + $ref: '#/components/schemas/OrderByDefinition' + description: > + + A list of fields that Miso should use to sort the result, instead of + Miso's default ranking order. + + + For example, the following query returns all the Products (because + `q=*`), ranked by the `_personalization_score` + + first, and then by the values in the + `custom_attributes.promote_score` field in the Product catalog, then + the + + distance between the product and New York city. + + ``` + + { + "q": "*", + "order_by": [ + { + "field": "_personalization_score", + "tie_breaker": { + "type": "relative_difference", + "threshold": "0.05" + }, + "order": "desc" + }, + { + "field": "custom_attributes.promote_score", + "order": "desc" + }, + { + "field": "_geo_distance", + "geo": { + "lat": 40.711967, + "lon": -74.006076, + } + "order": "asc" + } + ] + } + + ``` + default: [] + facets: + title: Facets + type: array + items: + anyOf: + - $ref: '#/components/schemas/FacetDefinition' + - type: string + description: > + + Specifies a list of fields to create facet search against. You can + specify `facets` in a string array. + + For example, the following query return the facet counts for + `categories`, `tags`, and `custom_attributes.director`: + + ``` + + { + "facets": [ + "categories", + "tags", + "custom_attributes.director" + ] + } + + ``` + + + The response will be like: + + ``` + + { + "facet_counts": { + "facet_fields": { + "categories": [ + [ + "Drama", 20 + ], + [ + "Action", 10 + ], ... + ], + "tags": [ + [ + "based on novel or book", 5 + ], + [ + "android", 4 + ], ... + ], + "custom_attributes.director": [ + [ + "Ridley Scott", 26 + ], + [ + "Andrew Abbott", 1 + ], ... + } + } + ``` + + + You can also specify `facets` with an object array to configure each + facet individually. + + For example, the following query will return 20 most common facet + values for `tags` + + and `custom_attributes.director` fields, + + and only the directors whose names start with `Ridley` will be + included in the director facet results. + + ``` + + { + "facets": [ + { + "field": "tags", + "size": 20 + }, + { + "field": "custom_attributes.director", + "size": 20, + "include": "Ridley.*" + } + ] + } + + ``` + default: [] + facet_filters: + title: Facet Filters + type: object + additionalProperties: + $ref: '#/components/schemas/Filter' + description: >+ + + Specifies filters to the search results based on users' selections + in a faceted search UI. + + + For example, assume you have two facets in your faceted search UI: + `genres` and `custom_attributes.director`. + + When the user selects two options in the + `custom_attributes.director` facet, you should send the following + query to + + filter the search results for those two options (i.e. `Ridley Scott` + or `Denis Villeneuve`). + + + ``` + + { + "facets": [ + { + "field": "genres", + "size": 5 + }, + { + "field": "custom_attributes.director", + "size": 20 + } + ], + "facet_filters": { + "custom_attributes.director": { + "terms": [ + "Ridley Scott", + "Denis Villeneuve" + ] + } + }, + } + + ``` + + + While you can use `fq` parameter to achieve the same filtering + capability, + + you should use `facet_filters` to get the correct facet counts. + + + In a typical faceted search UI, the facet counts reflect the search + result after applying + + filters from **all but the current facets**. For example, in the + query below, + + the *directors* facet counts + should reflect the search result after applying the filter from the *genres* facet, i.e. `genres:Sci-Fi`. + Similarly, *genres* facet counts should reflect the search result after applying the filter from the *directors* facet. + + `facet_filters` will make the resulting `facet_counts` follow this + *all but except itself* convention, which is rather + tricky to implement with `fq`. + ``` + "facets": [ + { + "field": "genres", + "size": 5 + }, + { + "field": "custom_attributes.director", + "size": 20 + } + ], + "facet_filters": { + "custom_attributes.director": { + "terms": [ + "Ridley Scott", + "Denis Villeneuve" + ] + } + }, + } + + ``` + + default: {} + anchoring_settings: + title: Anchoring Settings + type: array + items: + $ref: '#/components/schemas/AnchoringEntry' + description: > + + Promote a product to a position relative to the highest-ranked + anchor product. + + + A common use-case is promoting a private-label good by anchoring it + to a name-brand counterpart. When the name-brand good (the anchor) + appears in a search result, the private-label good also appears in + the result (at a specified distance from the anchor product). + + + The `anchoring_settings` object has the following fields: + + * **product_id** - The `product_id` of the product you want to + promote. + + * **anchor_ids** - The array of `product_ids` that act as the + anchors. + + * **relative_position** *(optional)* - The position that the + promoted product will be returned in the search results, relative to + the highest-ranked anchor product. For example, setting this + parameter to `1` will place the promoted product directly after the + anchor product. The default value is `-1`, which will place the + promoted product directly before the anchor product. + + * **start_time** *(optional)* - An ISO-8601 timestamp indicating + when to start the product anchoring. Ex: `2022-01-29T00:00:00Z` + + * **end_time** *(optional)* - An ISO-8601 timestamp indicating when + to end the product anchoring. Ex: `2022-05-31T23:59:59Z` + + + For example, if a user searches for "cookies", the API request might + look like this: + + + ``` + + POST v1/search/search + + { + "q":"cookies", + "anchoring_settings": [ + { + "product_id": "private_label_cookies", + "anchor_ids": [ + "name_brand_cookies_1", + "name_brand_cookies_2" + ], + "relative_position": -1, + "start_time": "2022-01-01T00:00:00Z", + "end_time": "2022-12-31T23:59:59Z" + } + } + ] + } + + ``` + default: [] + enable_partial_match: + title: Enable Partial Match + type: boolean + description: > + + Enable *partial match* to return products that match only *some* of + the keywords in a user's search query. By default, + + Miso's Search API only returns products that contain *all* the + keywords in the search query (i.e. an AND operator over + + keywords). This strategy usually leads to highly relevant results. + However, when we don't have enough search results to + + return to the users, enabling partial match allows the Search API to + relax the criteria and return products that match + + only some of the keywords. + + + This strategy is particularly useful to prevent users from seeing an + empty search result page and abandoning their + + search. + + + For example, let's consider the query request below: + + ``` + + { + "query": "Toy story 5", + "enable_partial_match": true + } + + ``` + + Since there is no movie called "Toy story 5", we have zero products + to return by default. However, because we set `enable_partial_match` + to `true`, we will return other products that partially match the + query: + + ``` + + { + + "data": { + "products": [ + { + "title": "Toy Story", + "_missing_keywords": ["5"] + }, + { + "title": "Toy story 2", + "_missing_keywords": ["5"] + }, + ... + ], + "total": 4 + } + + } + + ``` + + As you can see from the result above, when we don't have the exact + product that the user is looking for, enabling partial match is a + helpful strategy to let users know what alternatives are available, + and prevent them from seeing an empty search result page. + default: false + partial_match_mode: + title: Partial Match Mode + enum: + - blended + - separated + description: > + + Determine which partial match mode to enable: + * **blended** (default): When `partial_match_mode` is `blended`, keyword-matched items and semantically-matched items will + be returned in the same, rank-sorted array. + * **separated**: When `partial_match_mode` is `separated`, keyword-matched items will be returned in the `products` array + and partially-matched or semantically-matched items will be returned + in the `partially_matched_products` array. + default: blended + enable_partial_match_threshold: + title: Enable Partial Match Threshold + type: integer + description: > + + If `partial_match_mode=separated`, you need to provide a value for + `enable_partial_match_threshold`. + + This parameter, which accepts an integer (*n*), creates a condition + for Miso’s Search Engine to only provide partially + + matched results if there are *n* or fewer exact keyword matches. For + example, if we set `enable_partial_match_threshold=3`, + + partially matched results will *only* be returned when there are + three or fewer exact keyword matches. + enable_semantic_search: + title: Enable Semantic Search + type: boolean + description: > + + Enable *semantic search* to return products that are semantically + relevant to the search query. + + Semantic search is a powerful tool that further improves the partial + match results. It finds products that might not contain + + any of the search keywords, but are highly relevant to users' search + intent. + + + For example, consider the query: `rubbing alcohol`, which is a + household cleaning product. When `enable_semantic_search=true`, + + even if we do not have any products that match `rubbing alcohol`, + Miso is still able to return results like the + + following: + + ``` + + { + + "data": { + "products": [], + "total": 0, + "partially_matched_products": [ + { + "title": "Clorox Disinfecting Wipes Multi-Surface Cleaning", + "_missing_keywords": ["rubbing", "alcohol"] + }, + { + "title": "Purell Advanced Hand Sanitizer Refreshing Gel", + "_missing_keywords": ["rubbing", "alcohol"] + }, + ... + ] + } + + } + + ``` + + Note that, these two products from Clorox or Purell do not contain + any of the search keywords, + + Miso's semantic search functionality, however, is still able to + identify them as good matches based on their semantic + + relevancy to the query `rubbing alcohol`. + + + Similarly, consider a single word search query: `aspirin`. Normally, + a single-word query will lead to an empty search + + page if we don't have products containing that word. However, when + `enable_semantic_search=true`, + + even if we do not directly have `aspirin` in the product catalog, + Miso is still able to return results that are highly + + relevant to users' search intent, such as: + + ``` + + { + + "data": { + "products": [], + "total": 0, + "partially_matched_products": [ + { + "title": "Advil Pain Reliever and Fever Reducer", + "_missing_keywords": ["aspirin"] + }, + { + "title": "Tylenol Extra Strength Caplets", + "_missing_keywords": ["aspirin"] + }, + ... + ] + } + + } + + ``` + default: false + semantic_search_threshold: + title: Semantic Search Threshold + type: number + description: > + + Determine the threshold for semantic search. Only the products with + a semantic similarity score higher than the + + threshold will be returned. Setting this too low (e.g. < 0.3) will + result in less relevant results being returned. + default: 0.5 + enable_matched_fields: + title: Enable Matched Fields + type: boolean + description: >+ + + Determine whether to return `_matched_fields` in the search response + (default: false). + + If `enable_matched_fields=true`, + + each returned product will have an `_matched_fields` array that + shows which parts of the product catalog match + the search query. + + For example, the following request will return `_matched_fields`: + ``` + + { + "q": "toy story", + "enable_matched_fields": true + } + + ``` + + The response will be like: + + ``` + + { + "data": { + "products": [ + { + "title": "Toy Story", + "_matched_fields": ["title", "metadata"] + }, + ... + ] + } + } + + ``` + + Currently, `_matched_fields` only contain three kinds of fields: + * `title` + * `description` + * `metadata`, including all the fields beyond title or description in the product catalog. + + default: false + query_product_existence: + title: Query Product Existence + allOf: + - $ref: '#/components/schemas/CheckProductExistence' + description: >- + Additionally check if certain products will be in the search result + at all (regardless of `start` and `rows` parameters) + personalization_weight: + title: Personalization Weight + maximum: 5 + minimum: 0 + type: integer + description: Determines how much personalization will affect the search ranking. + default: 5 + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + diversification: + title: Diversification + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + additionalProperties: false + SearchResponse: + title: SearchResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/SearchResponseBody' + SearchResponseBody: + title: SearchResponseBody + required: + - products + - total + - start + - spellcheck + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/PartialMatchedRecord' + description: The search results. + total: + title: Total + type: integer + description: Total number of search hits. + example: 1000 + start: + title: Start + type: integer + description: Starting offset of the search results. + example: 0 + spellcheck: + title: Spellcheck + allOf: + - $ref: '#/components/schemas/SpellCheckResponse' + description: >- + Spellcheck results. You can use the information in this object to + prompt users with the correct spelling. + product_existence: + title: Product Existence + type: object + additionalProperties: + type: boolean + description: Product existence query result + partially_matched_products: + title: Partially Matched Products + type: array + items: + $ref: '#/components/schemas/PartialMatchedRecord' + description: The search results that only partially match the search query. + facet_counts: + title: Facet Counts + allOf: + - $ref: '#/components/schemas/FacetCounts' + description: Facet counts + default: {} + custom_assets: + title: Custom Assets + type: array + items: + type: object + description: Custom JSON assets uploaded in Dojo. + default: [] + SendExperimentResponse: + title: SendExperimentResponse + required: + - took + - in_experiment + - variant + type: object + properties: + took: + title: Took + type: integer + description: >- + The amount of time (in milliseconds) Miso took to answer this + request. + example: 50 + in_experiment: + title: In Experiment + type: boolean + description: To show whether the experiment is active or not. + variant: + $ref: '#/components/schemas/VariantObject' + Share: + title: share + required: + - type + type: object + properties: + type: + title: Type + enum: + - share + type: string + description: | + + Used when a user shares a product or piece of content. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + SpellCheckRequest: + title: SpellCheckRequest + type: object + properties: + enable_auto_spelling_correction: + title: Enable Auto Spelling Correction + type: boolean + description: > + + This parameter controls whether to automatically correct a misspell + search query. + + If set to `true`, when Miso detects spelling errors, the search + results will be based on the + **corrected** spelling suggested by Miso. + + You call tell if Miso made any correction to the search query by + checking the + + `spellcheck.auto_spelling_correction` field in the + + API response. When this field is `true`, the search results are + based on the suggested spelling + + as opposed to the users' original query. + + + You can opt-out the spelling correction by setting this parameter to + `false`. In such cases, + + Miso will still detect spelling errors, + + but the search results will be always based on users' original + spelling. + default: true + SpellCheckResponse: + title: SpellCheckResponse + required: + - spelling_errors + - auto_spelling_correction + - original_query + - original_query_with_markups + - corrected_query + - corrected_query_with_markups + type: object + properties: + spelling_errors: + title: Spelling Errors + type: boolean + description: Whether Miso detects any spelling errors. + auto_spelling_correction: + title: Auto Spelling Correction + type: boolean + description: >- + Whether Miso has automatically corrected the misspelled search + query. When this field is `true`, the search result is based on the + corrected spelling in the `corrected_query` field instead of users' + original search query. + original_query: + title: Original Query + type: string + description: Original query string + example: what is pythn + original_query_with_markups: + title: Original Query With Markups + type: string + description: >- + Original query with the spelling errors (if any) surrounded by the + tags + example: what is pythn + corrected_query: + title: Corrected Query + type: string + description: >- + The corrected spelling suggested by Miso. If no spelling error is + detected, this will be the same as `original_query` + example: what is python + corrected_query_with_markups: + title: Corrected Query With Markups + type: string + description: >- + The corrected spelling suggested by Miso where the revised tokens + are surrounded by the tags. + example: what is python + Subscribe: + title: subscribe + required: + - type + type: object + properties: + type: + title: Type + enum: + - subscribe + type: string + description: > + + Used when a user subscribes a product, for example to receive alerts + when the product comes back in stock or if the price drops. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + TaskId: + title: TaskId + required: + - task_id + type: object + properties: + task_id: + title: Task Id + type: string + TieBreakDefinition: + title: TieBreakDefinition + type: object + properties: + type: + title: Type + enum: + - relative_difference + default: relative_difference + threshold: + title: Threshold + type: number + default: 0 + TitleCompletion: + title: TitleCompletion + required: + - text + - text_with_markups + - text_with_inverted_markups + - product + type: object + properties: + text: + title: Text + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_markups: + title: Text With Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + text_with_inverted_markups: + title: Text With Inverted Markups + minLength: 1 + type: string + example: Japanese Shiba Inu Dog Eating Miso Soup T-Shirt + product: + title: Product + allOf: + - $ref: '#/components/schemas/Record' + example: + product_id: 123ABC-S-Black + description: title completion additionally has the `product` the title belongs to. + TrendRecResponse: + title: TrendRecResponse + required: + - data + type: object + properties: + message: + title: Message + type: string + default: success + data: + $ref: '#/components/schemas/TrendResponseBody' + TrendResponseBody: + title: TrendResponseBody + required: + - products + type: object + properties: + took: + title: Took + type: integer + description: Number of milliseconds Miso took to retrieve the results. + default: 0 + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + default: 00000000-0000-0000-0000-000000000000 + example: 123e4567-e89b-12d3-a456-426614174000 + products: + title: Products + type: array + items: + $ref: '#/components/schemas/Record' + description: Trending product results. + UserBulkDeleteIn: + title: UserBulkDeleteIn + required: + - data + type: object + properties: + data: + $ref: '#/components/schemas/UserIdList' + UserBulkIn: + title: UserBulkIn + required: + - data + type: object + properties: + data: + title: Data + type: array + items: + $ref: '#/components/schemas/UserRecord' + UserIdList: + title: UserIdList + required: + - user_ids + type: object + properties: + user_ids: + title: User Ids + type: array + items: + type: string + UserReadOut: + title: UserReadOut + required: + - message + - data + type: object + properties: + message: + title: Message + type: string + description: Human-readable message + example: success + data: + $ref: '#/components/schemas/UserRecord' + UserRecord: + title: UserRecord + required: + - user_id + type: object + properties: + user_id: + title: User Id + maxLength: 512 + minLength: 1 + type: string + description: > + + Unique identifier for a user who has signed in. `user_id` can be in + any format (e.g. users' email, internal user + + UUID or serial ID). The only restriction is that the first character + must not be an underline `_`. Miso will use + + this id to cross-reference your User records with your Interaction + records. + example: user_1234 + created_at: + title: Created At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The date the user’s account was created as an ISO-8601 date or + datetime string. + updated_at: + title: Updated At + anyOf: + - type: string + format: date-time + - type: string + format: date + description: > + + The date the user’s account was updated as an ISO-8601 date or + datetime string. + name: + title: Name + type: string + description: The user's full name. + example: John Doe + profile_image: + title: Profile Image + maxLength: 65536 + minLength: 1 + type: string + description: URL to the profile image of the user. + format: uri + age: + title: Age + type: integer + description: Age of the user. We will internally convert it to year of birth. + example: 33 + gender: + title: Gender + type: string + description: The user's gender. + example: M + city: + title: City + type: string + description: City or zipcode the user is based in. + example: Mountain View + state: + title: State + type: string + description: State the user is based in. + example: California + country: + title: Country + type: string + description: Country the user is based in. + example: US + group_id: + title: Group Id + type: string + description: > + + Group or Account ID from your CRM. This is useful in B2B scenarios. + For example, you can use `group_id` to + + associate a user with their company or account. We will use this + information to infer the user's interests and + + fine-tune their personalization and search results. For example, + users from the same group might have similar + + interests on the site, and we can improve their user experience + accordingly + example: Northwind Corp + description: + title: Description + type: string + description: > + + Text description of the user. This can be the user's own bio or the + internal notes about the user. If available, + + Miso will analyze this description to better profile a user. + example: Engineer from Northwind Corp + custom_attributes: + title: Custom Attributes + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + description: > + + Dictionary of custom attributes about the user. As with the [Product + API](#operation/content_write_api_v1_products_post + + ), you can specify attributes specific to your business in a `{"KEY" + : VALUE}` format, where `KEY` must be a string, and + `VALUE` can be: + * a `string` or `an array of strings` + + * a `number` or `an array of numbers` + + * an `array of objects` + + * a `bool` + + * `null` + + + * Example: + + ``` + + { + "custom_attributes": { + "acquisition_channel": "Facebook Campaign 2020", + "declared_interests": ["Drama", "Romance"] + } + } + + ``` + + These custom attributes types must be consistent across all User + records in your data set. + + Records with inconsistent types will fail to be inserted. + example: + acquisition_channel: Facebook Campaign 2020 + declared_interests: + - Drama + - Romance + additionalProperties: false + UserToAttributes: + title: UserToAttributes + required: + - field + type: object + properties: + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + field: + title: Field + type: string + description: > + + + The attribute you want to make recommendations for. For example, the + following + + query will recommend values from the `brand` field that Miso thinks + the user will be interested in: + + + ``` + + {"field": "brand"} + + ``` + + + This API also works for custom attributes you define. For example, + + if you provide a `designer` custom attribute, then, you can make + `designer` recommendations with the following query. + + ``` + + {"field": "custom_attributes.designer"} + + ``` + boost_attributes: + title: Boost Attributes + type: array + items: + type: string + description: |+ + + + The attributes to boost to the top of the recommendations + + default: [] + exclude_attributes: + title: Exclude Attributes + type: array + items: + type: string + description: |+ + + + The attributes to remove from the recommendations + + default: [] + rows: + title: Rows + type: integer + description: Number of product recommendations to return + default: 5 + products_per_attribute: + title: Products Per Attribute + type: integer + description: > + + Number of personalized product recommendations to make for **each** + recommended attribute. For example, the following + + query will return 5 products for each *brand* we recommend: + + ``` + + { + "field": "brand", + "products_per_attribute": 2 + } + + ``` + + + Note that a large number of `products_per_attribute` will increase + latency slightly because we need to + + perform more computation for each of the recommended attributes. If + you only need attribute + + recommendations, you can set + + `products_per_attribute=0` to reduce latency. + default: 2 + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + additionalProperties: false + description: >- + User to attributes recommendations. Given a user, recommend + + product attributes the user will be interested in as well as products in + those attributes + UserToCategories: + title: UserToCategories + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of recommended categories to return + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + products_per_category: + title: Products Per Category + type: integer + description: >- + + + Number of products to return for **each** category. For example, the + following + + query will return 5 products for each category we recommend: + + ``` + + {"products": 5} + + ``` + + Note that, a large number of `products_per_category` (say >= 20) + will increase query latency (up to around 200ms) + + because we need to perform more computation for each of the + recommended categories. If you + + only need category recommendations, you should set + `products_per_category` to 0 to reduce latency. + default: 5 + root_category: + title: Root Category + type: array + items: + type: string + description: >- + + If `root_category` is specified, we will only recommend categories + that are direct children of each of the root + + category. For example, the following query will recommend the + products of category that is under `["Clothes"]` category: + + ``` + + {"root_category": ["Clothes"]} + + ``` + + For another example, the following query will recommend the products + of category that is under `["Clothes", "Dresses"]` category + + ``` + + {"root_category": ["Clothes", "Dresses"]} + + ``` + + If `root_category` is not specified, we will recommend the *top + level* categories. + default: [] + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + additionalProperties: false + description: Attributes for recommendation boosting + UserToItemsRequest: + title: UserToItemsRequest + type: object + properties: + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of product recommendations to return + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + diversification: + title: Diversification + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + pagination_id: + title: Pagination Id + maxLength: 512 + type: string + description: > + + A unique identifier to enable pagination in Recommendation APIs. By + default, Recommendation APIs do not support + + pagination because the results from Miso, by its natural, will + change in real-time with new user interactions. + + `pagination_id` allows you to implement pagination more easily by + memorize what products we have + + returned to the current user with the same `pagination_id`. + + + To enable pagination, you generate a `pagination_id` and set it in + the first and subsequent requests in the same browsing session + + where you want to enable pagination. With `pagination_id` set, you + can access recommendations + + in different pages using the combination of `start` and `rows` + parameters, and Miso will ensure that no duplicated + + recommendation will be returned in different pages. + + + For example, assuming you are implementing an infinite scroll with + Miso Recommendation APIs. Before you make the first request, + + you generate a `pagination_id` using the `current datetime` or + `uuid` like the following: + + ```javascript + + // current datetime + + var my_pagination_id = Date.now().toString() + + // OR uuid + + const uuidv4 = require("uuid/v4") + + var my_pagination_id = uuidv4() + + ``` + + You can then request the first page of results with + `my_pagination_id` like the following: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 0, + "rows": 10 + } + + ``` + + Then, you can request the next page of results with the same + `my_pagination_id`, and Miso will ensure + + that no duplicated result is returned: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 10, + "rows": 10 + } + + ``` + + + Note that, a `pagination_id` will timeout if there is no further + request associated with it for 30 minutes. + + Also, `pagination_id` is scoped by individual users: i.e. different + users' results will not be affected + + even if they use the same `pagination_id`. + start: + title: Start + type: integer + description: > + + The start of the page you want to access. Combine this with `rows` + to implement pagination. You can only set it when `pagination_id` is + given. + default: 0 + additionalProperties: false + description: Attributes for recommendation boosting + ValidationError: + title: ValidationError + required: + - loc + - msg + - type + type: object + properties: + loc: + title: Location + type: array + items: + type: string + msg: + title: Message + type: string + type: + title: Error Type + type: string + VariantObject: + title: VariantObject + required: + - id + - name + - slug + - status + type: object + properties: + id: + title: Id + type: string + description: The UUID of this variant. + example: 59769b89-5f1f-46d5-a4fa-a583ebd2f7fd + name: + title: Name + type: string + description: The name of this variant. + example: Treatment_Group + slug: + title: Slug + type: string + description: The slug name of this variant. + example: Treatment_Group + configuration: + title: Configuration + anyOf: + - type: object + - type: array + items: {} + - type: string + description: The configuration of this variant. + example: + model: A + status: + title: Status + enum: + - Draft + - Scheduled + - Active + - Completed + - Archived + type: string + description: The current status for this variant. + example: Active + ViewableImpression: + title: viewable_impression + required: + - type + type: object + properties: + type: + title: Type + enum: + - viewable_impression + type: string + description: > + + When a product or content asset is presented to the user, it is not + guarantee that the user will see it. + + + An viewable impression is an impression that is "viewable" by the + user. + + Usually, content asset is considered viewable if more than 50% of + its area is visible on screen. + + + You can also use different definition for what is considered + viewable. + + Miso will automatically find the best recommendation as long as the + difference between + + viewable and non-viewable impression is consistant. + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + Watch: + title: watch + required: + - type + type: object + properties: + type: + title: Type + enum: + - watch + type: string + description: > + + Used to record when and for how long a user watches content that is + of a video format. + duration: + title: Duration + type: number + description: > + + How long (in seconds) the user stayed on this page, or consumed + (listened, read, or watched) a product. This field is + + optional, but it's very important in scenarios where consumption + duration matters, including + + `product_detail_page_view`, `category_page_view`, `watch`, `listen`, + and `read`. For example, if a user only + + views or consumes a product for less than 5 seconds, that user is + probably not interested in the product. On + + the other hand, if a user stays on a page for a while, it usually + means they are seriously engaging with or + + considering the product. When `duration` is absent, we will use the + timestamp of the next interaction to + + infer a rough duration value. + + + Example: + + ``` + + {"duration": 61.5} + + ``` + example: 61.5 + product_ids: + title: Product Ids + type: array + items: + type: string + maxLength: 512 + description: > + + Products or content the user is interacting with. This field is + required by + + almost all the interaction types. We use `product_ids` to refer to + the product / content records that you upload to Miso. + + Therefore, it is important to keep this consistent between the two + datasets. + + + Example: + + ``` + + {"product_ids": ["123ABC-BLACK", "123EFG-YELLOW"]} + + ``` + default: [] + example: + - 123ABC-BLACK + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + maxLength: 512 + description: > + + The product groups the user is interacting with. You only need this + field if you model product + + variants using `product_id` and `product_group_id` (see Product + API). If so, you should use this field, when a + + user is interacting with a *product group* rather than a specific + product variant, for example, when the user + + is viewing the master page of a T-shirt (i.e. a product group), but + has not selected the specific size or + + color (i.e. a product variant) yet. + + + In such situations, the `product_id` is not applicable because we + only know the user is interested in + + this T-shirt (a product group), but don't know which particular + product variant the user is interested in. + + Therefore, we use `product_group_ids` to capture such interactions + in place of `product_ids`. + + + In the situations where specific `product_ids` are available, for + example, when user selected a particular size + + of the T-Shirt, use `product_ids` instead. + + + + Example: + + ``` + + {"product_group_ids": ["123ABC"]} + + ``` + example: + - 123ABC + user_id: + title: User Id + maxLength: 512 + type: string + description: >- + Identifies the signed-in user who performed the interaction. We will + use `user_id` to link Interaction records to your + User records. Therefore, it is important to keep this consistent between the two datasets.For visitors who have + not signed in, see `anonymous_id`. + example: user_1234 + anonymous_id: + title: Anonymous Id + maxLength: 1024 + type: string + description: >- + A pseudo-unique substitute for the User Id. We use `anonymous_id` to + identify a visitor who has not signed + in. `anonymous_id` can be implemented using mechanisms such as cookies or browser localStorage. If `anonymous_id` + is not given, we will default it to `SHA1(:::)`. When a visitor signs + in and the `user_id` and `anonymous_id` are both present, the `anonymous_id` will be linked to the `user_id` + along with the past interactions associated with it. + example: 86D51273AD8BF84217E1567B6CBE7152D7034404 + timestamp: + title: Timestamp + type: string + description: > + + The ISO-8601 timestamp specifying when the interaction occurred. If + the interaction just happened, leave it out and we + + will default to the server's time. If you're importing data from the + past, make sure you provide a + + timestamp. It is recommended to include milliseconds in the + timestamp to provide a higher time resolution. + + + Example: + + ``` + + {"timestamp": "2018-11-07T00:25:00.073876Z"} + + ``` + format: date-time + miso_id: + title: Miso Id + type: string + description: > + + Miso-generated unique Id for each recommendation or search result. + Maintaining this Id for + + subsequent page views is important to Miso's performance, as we use + `miso_id` to track and fine-tune the + + performance of personalization and search results. When a user + clicks on a recommendation or search result, + + you should pass the associated `miso_id` to the next page view, and + associate the `miso_id` with the + + interactions that take place on the page (e.g. + `product_detail_page_view`, `add_to_cart`, + + `add_to_collection`, `like`, etc.). In this way, Miso will learn + which recommendations work and which didn't. + + + Example: + + ``` + + {"misoId": "123e4567-e89b-12d3-a456-426614174000"} + + ``` + format: uuid + example: 123e4567-e89b-12d3-a456-426614174000 + context: + title: Context + allOf: + - $ref: '#/components/schemas/WebBasedContext' + description: > + + Dictionary of extra information that provides useful context about + an interaction. We use context + + information to make recommendations tailored not only for each user, + but also for their current browsing context. + + For example, a user browsing on a desktop may have different + browsing behavior than a user browsing on mobile + + phone. As another example, a user who gets to the site via a certain + campaign you run on Facebook may have very + + different interests than a user who visits your site directly. + + + Context information is also useful for personalization for entirely + new visitors, as we can immediately + + personalize their experiences based on their context alone (e.g. the + referrer or the campaign they clicked through). + + + Example: + + ``` + + {"context": { + "campaign": + { + "name": "spring_sale", + "source": "Google", + "medium": "cpc", + "term": "running+shoes", + "content": "textlink" + }, + "truncated_ip": "1.1.1.0", + "locale": "en-US", + "region": "US East", + "page": + { + "url": "https://example.com/miso-tshirt-123ABC", + "referrer": "https://example.com/", + "title": "My Product Page" + }, + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)" + }, + "custom_context": { + "other_context_var_1": "value_1", + "other_context_var_2": "value_2" + } + } + + ``` + additionalProperties: false + WebBasedContext: + title: WebBasedContext + type: object + properties: + campaign: + title: Campaign + allOf: + - $ref: '#/components/schemas/Campaign' + description: > + + The campaign that resulted in the interaction. Campaign dictionary + contains standard UTM parameters: `name`, + + `source`, `medium`, `term`, `content`. We use campaign information + to infer users' interests and fine-tune the + + personalization and search results based on the current user's + campaign information. + truncated_ip: + title: Truncated Ip + type: string + description: > + + User's truncated IP address. We use IP address to determine the + country of the users. + format: ipv4 + example: 1.1.1.0 + locale: + title: Locale + type: string + description: Locale string of the current session, for example en-US. + example: en-US + region: + title: Region + type: string + description: > + + The region/location of the site the user is visiting. This is for + sites that serve different regions or + + markets. You can define your own region keywords, for example, `US + East`, `Europe`, `LATM`, etc. + example: US East + page: + title: Page + allOf: + - $ref: '#/components/schemas/Page' + description: >- + The current page in the browser. Page dictionary containing + referrer, title and url. we will use page view + as a pseudo interaction to infer users' interest. + user_agent: + title: User Agent + type: string + description: > + + User agent of the device making the request. We use this to + determine if a user is browsing the site on + + mobile or desktop, and tailor the recommendations and search results + accordingly. + + + Example: + + ``` + + {"user_agent": + "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"} + ``` + example: >- + Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 + Firefox/47.0 + custom_context: + title: Custom Context + type: object + additionalProperties: + anyOf: + - type: boolean + - type: integer + - type: number + - type: string + - type: array + items: + type: number + - type: array + items: + type: string + - type: array + items: + type: object + additionalProperties: + anyOf: + - type: string + - type: number + - type: integer + - type: boolean + description: > + + Dictionary of custom context variables for the current browsing + session. You can specify context variables + + specific to your websites or apps in a `{"KEY":VALUE}` format, where + `KEY` must be a string, and `VALUE` can be: + + * a `bool` + + * a `string` or an `array of string` + + * a `number` or an `array of numbers` + + * an `array of objects` + + * `null` + + + Miso will take these variables into account when generating + recommendations. + example: + session_variable_1: + - value_1 + - value_2 + YMALRequest: + title: YMALRequest + type: object + properties: + product_id: + title: Product Id + minLength: 1 + type: string + description: > + + The `product_id` of the *anchor* product. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor product. + product_ids: + title: Product Ids + minLength: 1 + type: array + items: + type: string + minLength: 1 + description: > + + The `product_ids` of a **list** of *anchor* products. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like these anchor products. For example, + + you can use the products in a user's shopping cart as the anchor + products to make purchase recommendations + + for this user. + product_group_id: + title: Product Group Id + minLength: 1 + type: string + description: > + + The `product_group_id` of the *anchor* product group. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor *product group*. + + + You should use `product_group_id` on a *product + + group* page, before users select a specific product variant. For + example, you should use `product_group_id` + + on the product group page of a T-shirt, and use `product_id`, once + user choose any specific size or color + + variants of the T-shirt. + product_group_ids: + title: Product Group Ids + type: array + items: + type: string + description: > + + The `product_group_ids` of the *anchor* product groups. The returned + recommendations will be + + the products that are similar or are liked by the same users who + also like the anchor *product groups*. + + + You should use `product_group_ids` in pages you want to recommend + products related to multiple product groups. + buy_together: + title: Buy Together + type: boolean + description: >+ + + Whether to focus on the Products that are frequently *bought + together*. `buy_together` parameter is by default `false`, + + which make the *Product To Products API* focus on Products that are + related to the anchor products, e.g. the products + + with similar contents or frequently attract the interests of the + same group of users. + + + When `buy_together=true`, the ProductToProducts API will focus on + the type of Products that are more frequently bought + + together along with the anchor product(s) in the same transactions + or session. + + default: false + engine_id: + title: Engine Id + type: string + description: > + + The engine you want to get results from. When you have more than one + engine, you can use this parameter to + + specify the specific engine you want to get results from. If not + specified, the default engine will be used. + user_id: + title: User Id + type: string + description: > + + The user who made the query and for whom Miso will personalize the + results. For an anonymous visitor, use `anonymous_id` instead. + anonymous_id: + title: Anonymous Id + type: string + description: >- + The anonymous visitor who made the query and for whom Miso will + personalize the results. Either + `user_id` or `anonymous_id` needs to be specified for personalization to work. + user_hash: + title: User Hash + type: string + description: > + + The hash of `user_id` (or `anonymous_id`) encrypted by your [Secret + API Key](https://api.askmiso.com). + + `user_hash` is required to prevent unauthorized API access if you + are + + making API calls with a [Publishable API + Key](https://api.askmiso.com). + + + You should generate the user_hash via HMAC scheme: you encrypt the + desired user_id (or anonymous_id) with your + + [Secret API Key](https://api.askmiso.com) on your backend server, + + and then let the front-end code send the generated user_hash to Miso + APIs to + + verify the identity of the API caller. + + + As long as the [Secret API Key](https://api.askmiso.com) + is kept secret, the user_hash prevents a malicious attacker from making unauthorized + API calls or impersonating any of your users. + + + Miso APIs accept the case-incentive "hex digest" of user hash, a + sample Python 3 code to generate it on your backend server + + is as follow: + + + ```python + + import hashlib + + import hmac + + + YOUR_MISO_SECRET_API_KEY = "039c501ac8dfcac91" + + key_bytes = YOUR_MISO_SECRET_API_KEY.encode() + + user_id = "USER_123" # or anonymous_id + + user_id_bytes = user_id.encode() + + user_hash = hmac.new( + key_bytes, + user_id_bytes, + hashlib.sha256).hexdigest() + # user_hash is "7eb04da5e..." + + ``` + + + You can find more examples for other languages in this [Github + Gist](https://gist.github.com/thewheat/7342c76ade46e7322c3e) + user_cohort: + title: User Cohort + type: object + additionalProperties: + anyOf: + - type: boolean + - type: string + description: > + + The user cohort you want to cold-start the recommendation with. For + example, the following query will make + + recommendations based on the preferences of the users whose + `country="United States"`, and `gender="Female"` + + in the User Profile dataset. + + ``` + + { + "user_cohort": { + "country": "United States", + "gender": "Female" + } + } + + ``` + rows: + title: Rows + type: integer + description: Number of product recommendations to return + default: 5 + type: + title: Type + type: string + description: > + + The type of products to return. Use this parameter to make the API + return only + + a certain type of products (see [Product + APIs](https://api.askmiso.com)). + + + This is particularly useful for sites that have multiple types of + products: + + For example, on a marketplace site, YOu may model *merchandise* and + *store* as two types of *products*. You can + + then use type parameter to limit the recommendation or search + results to return only one kind of them. + + + For instance, the following query will return only *store* products: + ``` + {"type": "store"} + ``` + + For another example, on a travel website, you might have: *hotel*, + *thing to do*, and *restaurant*, + + three kinds + + of products. You can use `type` parameter to limit results to one + kind of them. For instance, the following + + query will limit the results to only *hotels* product: + ``` + {"type": "hotel"} + ``` + dedupe_product_group_id: + title: Dedupe Product Group Id + type: boolean + description: > + + Whether to dedupe product based on `product_group_id`. If + `dedupe_product_group_id=true`, + + Miso will prevent products with the same `product_group_id` from + showing multiple + + times in the search or recommendation results. + + + + This is particular useful when one product has multiple variants + (for example, different + + sizes, colors, or materials), and you only want to show this product + only once in the search or recommendation + + results. Miso will then return the variant that is most likely to be + of the user's interest. + default: true + additional_interactions: + title: Additional Interactions + type: array + items: + anyOf: + - $ref: '#/components/schemas/ProductDetailPageView' + - $ref: '#/components/schemas/Search' + - $ref: '#/components/schemas/AddToCart' + - $ref: '#/components/schemas/RemoveFromCart' + - $ref: '#/components/schemas/Checkout' + - $ref: '#/components/schemas/Refund' + - $ref: '#/components/schemas/Subscribe' + - $ref: '#/components/schemas/AddToCollection' + - $ref: '#/components/schemas/RemoveFromCollection' + - $ref: '#/components/schemas/Read' + - $ref: '#/components/schemas/Watch' + - $ref: '#/components/schemas/Listen' + - $ref: '#/components/schemas/Like' + - $ref: '#/components/schemas/Dislike' + - $ref: '#/components/schemas/Share' + - $ref: '#/components/schemas/Rate' + - $ref: '#/components/schemas/Bookmark' + - $ref: '#/components/schemas/Complete' + - $ref: '#/components/schemas/Feedback' + - $ref: '#/components/schemas/Impression' + - $ref: '#/components/schemas/ViewableImpression' + - $ref: '#/components/schemas/Click' + - $ref: '#/components/schemas/HomePageView' + - $ref: '#/components/schemas/CategoryPageView' + - $ref: '#/components/schemas/PromoPageView' + - $ref: '#/components/schemas/ProductImageView' + - $ref: '#/components/schemas/Custom' + description: > + + A list of additional interaction records. You can use this fields to + simulate user interactions without + + actually writing them to the interaction dataset. + default: [] + fl: + title: Fl + type: array + items: + type: string + description: > + + List of fields to retrieve. For example, the following request + retrieves only the `title` field of each product along + + with the `product_id`, which is always returned. + + + ``` + + {"fl": ["title"]} + + ``` + + + You can also match field names by using `*` as a wildcard. For + example, the query below retrieves the `title` + + and any custom attributes under the `attributes` dictionary. + + + ``` + + {"fl": ["title", "attributes.*"]} + + ``` + + + The following retrieves all the available fields: + + + ``` + + {"fl": ["*"]} + + ``` + + + For the lowest latency, use an empty array to retrieve just the + `product_id` field (which is the default). + + ``` + + {"fl": []} + + ``` + default: [] + exclude: + title: Exclude + type: array + items: + type: string + description: >- + An array of `product_ids` of products you want to *exclude* from + search results. + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: > + + When `boosting_tags` is given, and there are pre-defined boost rules + have the same tag(s), + + those boost rules will be matched, regardless if the criteria is met + or not. + + + Useful when want to force trigger specific boost campaign. + default: [] + example: + - tag-1 + - quetag-2 + fq: + title: Fq + type: string + description: > + + + Defines a query in Solr syntax that can be used to restrict the + superset of + + products to return, without influencing the overall ranking. `fq` + can enable users to drill down to products + + with specific features based on different product attributes + + + For example, the query below limits the search results to only show + products whose size is either `M` or `S` and + + brand is `Nike`: + + + ``` + + {"fq": "size:(\"M\" OR \"S\") AND brand:\"Nike\""} + + ``` + + + You can use `fq` to apply filters against your custom attributes as + well. For example, the query below limits the + + search results to only products whose `designer` attribute is + `Calvin Klein` + + + ``` + + {"fq": "attributes.designer:\"Calvin Klein\""} + + ``` + + + `fq` can also limit search results by numerical range. For example, + the following query limits the results to + + products that have `rating >= 4`. + + + ``` + + {"fq": "rating:[4 TO *]"} + + ``` + boost_fq: + title: Boost Fq + type: string + description: > + + Defines a query in Solr syntax that can be used to boost a subset of + products to the top of the ranking, or to + + specific *boost positions* (See `boost_positions` parameter below.) + + For example, the query below will promote all the relevant products + whose brand is `Nike` to the top of + + recommendation list: + + + ``` + + { + "boost_fq": "brand:\"Nike\"" + } + + ``` + + + For a slightly more complex example, the query below will promote + the Nike products which have also been tagged + + as `ON SALE` to the top of the ranking: + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"" + } + + ``` + + It is worth mentioning that, Miso will only boost products that are + relevant and have high likelihood to convert, + + and will not boost a low performance product only because it matches + the boosting query. + + + Depending on your boosting rules, in certain cases, you would like + to prevent recommendation results from being + + too monotone due to boosting. With Miso, you have two tools to do + so. + + + First, you can specify `boost_positions` to place promoted products + at specific positions in the ranking. For + + example, the query below will place boosted products only at the + first and fourth places in the ranking + + (positions are 0-based), and place the remaining products in their + original ranking, skipping these two positions. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "boost_positions": [0, 3] + } + + ``` + + + The second tool is `diversification`. `diversification` parameter, + on a best-effort basis, will try to + + maintain a minimum distance between products that have the same + attributes. For example, the following query + + will place products made by the same brand apart from each other. + + ``` + + { + "boost_fq": "brand:\"Nike\" AND tags:\"ON SALE\"", + "diversification": { + "brand": {"minimum_distance": 1} + } + } + + ``` + boost_positions: + title: Boost Positions + type: array + items: + type: integer + description: > + + Defines a list of 0-based positions you want to place the boosted + products at. + + + For example, the query below will promote products whose brand is + `Nike` as the top and second recommendations: + + ``` + + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + } + + ``` + + If `boost_positions` is not specified (which is the default + behavior), all the boosted products will be ranked + + higher than the rest of the products. + boost_rules: + title: Boost Rules + type: array + items: + $ref: '#/components/schemas/BoostingFilterBase' + description: > + + Define a list of boosting rules that will be applied to the search + or recommendation results simultaneously. `boost_rules` + + parameter is particularly useful when you want to boost more than + one sets of products, and promote each of them to different + + positions. For example, the query below will promote products whose + brand is `Nike` to the top + + and second results, and products whose brand is `Adidas` to the + third and fourth results: + + ``` + + { + "boost_rules": [ + { + "boost_fq": "brand:\"Nike\"", + "boost_positions": [0, 1] + }, + { + "boost_fq": "brand:\"Adidas\"", + "boost_positions": [2, 3] + } + ] + } + + ``` + default: [] + geo: + title: Geo + allOf: + - $ref: '#/components/schemas/GeoQuery' + description: > + + When set, filter result to include only products within certain + geographic range from given point will be returned, + + or to boost product within the same range. + + + Product should have a field that holds the location of the product, + `location` is used by default, + + but other field can also be used. + + + Distance can be in miles or kilometers. If `distance_unit` is not + set, `mile` will be used. + + + For example, to limit results to products within 100 miles of New + York city: + + ``` + + { + "geo": { + "filter": [{ + "lat": 40.73061, + "lon": -73.93524, + "distance": 100 + }] + } + } + + ``` + + + To boost products within 2 kilometers around Alcatraz Island + according to `loc` field: + + ``` + + { + "geo": { + "boost": [{ + "field": "loc", + "lat": 37.82667, + "lon": -122.42278, + "distance": 2, + "distance_unit": "km" + }] + } + } + + ``` + diversification: + title: Diversification + type: object + additionalProperties: + $ref: '#/components/schemas/DiversifyField' + description: > + + + Defines diversification rules to prevent products with the same + attributes (e.g. sneakers made by the same brand + + or books from the same authors) from showing up too close to each + other in the results. + + + For instance, customers who have purchased many of sneakers from + Nike may happen to have recommendations or + + search results where all top-5 entries are sneakers made by Nike. + Purely considering accuracy, these + + recommendations appear excellent since the user clearly appreciates + Nike sneakers. However, + + such results might be considered too "plain" by the user, owing to + its lack of diversity. + + + `diversification` parameter allows you to avoid this problem by + enforcing a desired *minimum distance* between + + products. For example, consider a list of four products whose + `brand` are *Nike, Nike, Adidas,* and *PUMA* + + respectively. The query below will make sure there are at least one + different product between two Nike + + products, e.g. the diversified ranking may become *Nike, Adidas, + Nike,* and *PUMA* : + + ``` + + { + "diversification": {"brand": {"minimum_distance": 1}} + } + + ``` + + + You can also increase the minimum_distance to place products further + apart. For example, the following query will + + make sure, for the two Nike products, there are at least *two* other + products between them. + + As a result, the diversified ranking may become *Nike, Adidas, + PUMA*, and *Nike*.: + + ``` + + { + "diversification": {"brand": {"minimum_distance": 2}} + } + + ``` + + + The diversification algorithm reranks the products on a best-effort + basis. For example, for the product list + + described earlier, it is not possible to place two Nike product + three places apart from each other. Therefore, + + the diversified ranking will still remain *Nike, Adidas, PUMA,* and + Nike* even if we set `minimum_distance=3`. + pagination_id: + title: Pagination Id + maxLength: 512 + type: string + description: > + + A unique identifier to enable pagination in Recommendation APIs. By + default, Recommendation APIs do not support + + pagination because the results from Miso, by its natural, will + change in real-time with new user interactions. + + `pagination_id` allows you to implement pagination more easily by + memorize what products we have + + returned to the current user with the same `pagination_id`. + + + To enable pagination, you generate a `pagination_id` and set it in + the first and subsequent requests in the same browsing session + + where you want to enable pagination. With `pagination_id` set, you + can access recommendations + + in different pages using the combination of `start` and `rows` + parameters, and Miso will ensure that no duplicated + + recommendation will be returned in different pages. + + + For example, assuming you are implementing an infinite scroll with + Miso Recommendation APIs. Before you make the first request, + + you generate a `pagination_id` using the `current datetime` or + `uuid` like the following: + + ```javascript + + // current datetime + + var my_pagination_id = Date.now().toString() + + // OR uuid + + const uuidv4 = require("uuid/v4") + + var my_pagination_id = uuidv4() + + ``` + + You can then request the first page of results with + `my_pagination_id` like the following: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 0, + "rows": 10 + } + + ``` + + Then, you can request the next page of results with the same + `my_pagination_id`, and Miso will ensure + + that no duplicated result is returned: + + ```javascript + + { + "pagination_id": my_pagination_id, + "start": 10, + "rows": 10 + } + + ``` + + + Note that, a `pagination_id` will timeout if there is no further + request associated with it for 30 minutes. + + Also, `pagination_id` is scoped by individual users: i.e. different + users' results will not be affected + + even if they use the same `pagination_id`. + start: + title: Start + type: integer + description: > + + The start of the page you want to access. Combine this with `rows` + to implement pagination. You can only set it when `pagination_id` is + given. + default: 0 + additionalProperties: false + description: Attributes for recommendation boosting + app__schemas__engine_api__request__PreviewBoosting: + title: PreviewBoosting + required: + - query_option + - boost_match_type + - boost + - position + type: object + properties: + query: + title: Query + type: string + description: The boosting rule query. + queries: + title: Queries + type: array + items: + type: string + description: Multiple query of the boosting rule. + query_option: + title: Query Option + enum: + - contains + - not_contain + - is + - is_not + type: string + description: >- + The options of the query. Please fill this field with contains, + not_contain, is, and is_not value. + filter_query: + title: Filter Query + type: array + items: + $ref: '#/components/schemas/FilterQueryItem' + description: The filter queries of the boosting rule. + boost_match_type: + title: Boost Match Type + enum: + - any + - all + type: string + description: Type of the query. Please fill this field with any or all. + boost: + title: Boost + type: array + items: + $ref: '#/components/schemas/BoostItem' + description: The items of the boosting rule. + position: + title: Position + type: array + items: + type: integer + description: The position of the boosting rule should occur. + json_asset: + title: Json Asset + type: string + description: The boosting json asset. + example: + CO: + - product-name: name + product-image-url: url + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: The comma-separated boosting tags. + example: + - tag-1 + - tag-2 + description: Properties to receive on Boosting creation + app__schemas__engine_api__request__Question: + title: Question + required: + - question + type: object + properties: + question: + title: Question + minLength: 1 + type: string + description: The text of question. + weight: + title: Weight + type: number + description: The weight of question. + default: 1 + description: Question object + app__schemas__engine_api__response__Question: + title: Question + required: + - question + type: object + properties: + question: + title: Question + minLength: 1 + type: string + weight: + title: Weight + type: number + default: 1 + description: 'Question object ' + app__schemas__rec_boosting__PreviewBoosting: + title: PreviewBoosting + required: + - api_names + - boost_match_type + - boost + - position + type: object + properties: + api_names: + title: Api Names + type: array + items: + type: string + description: The api_names values + anchor_products: + title: Anchor Products + type: array + items: + type: string + description: The anchor products ids + default: [] + module_names: + title: Module Names + type: array + items: + type: string + description: The module name + boost_match_type: + title: Boost Match Type + enum: + - any + - all + type: string + description: Type of the query. Please fill this field with any or all. + boost: + title: Boost + type: array + items: + $ref: '#/components/schemas/BoostItem' + description: The items of the boosting rule. + position: + title: Position + type: array + items: + type: integer + description: 1-based index of the position of the boosting rule should occur. + example: + - 1 + - 2 + boosting_tags: + title: Boosting Tags + type: array + items: + type: string + description: The comma-separated boosting tags. + example: + - tag-1 + - tag-2 + description: Attributes of boosting + securitySchemes: + Secret API Key: + type: apiKey + description: >+ + + Your secret API key is used to access every Miso API endpoint. You + should secure this key and only use it on a backend + + server. Never leave this key in your client-side JavaScript code. If the + private key is compromised, you can revoke it + + in [Dojo](https://dojo.askmiso.com/docs/api-browser) and get a new one. + + + Specify your secret key in the `api_key` query parameter. For example: + + ``` + + POST /v1/users?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17 + + ``` + + in: query + name: api_key + Publishable API Key: + type: apiKey + description: > + + Your publishable API key is used to call Miso's APIs from your front-end + code. It can be used to stream interactions from the browser using + Miso's Interactions Upload API or to access read-only search and + recommendation results for a given user. When using the publishable API + key, the requested user_id will need to be hashed to maintain the + necessary security compliance. + + + Specify your publishable key in the `api_key` query parameter. For + example: + + ``` + + POST /v1/interactions?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17 + + ``` + in: query + name: api_key +tags: + - name: Experiment APIs + description: > + + Miso's experiment APIs let you do the A/B testing of your current result + with Miso. + + + ### Start an experiment in Dojo. + + + Login to the [dojo](https://dojo.askmiso.com) platform. + + Create an experiment event for you. + + + ### Start running A/B testing in your environment. + + + #### Implement A/B testing code. + + + Here's an example in NodeJS. You can also use any programming language of + you choice. + + ```nodejs + + const axios = require('axios'); + + + async function get_user_experiment_info(api_key, experiment_id, user_id) { + data = {"user_id": user_id} + endpoint = `https://api.askmiso.com/v1/experiments/${experiment_id}/events?api_key=${api_key}` + return await axios.post(endpoint, data) + } + + + const api_key = '' + + const experiment_id = "" + + let user_id = 'user_1234' // use to evaluate a treatment for + + + const user_experiment_info = get_user_experiment_info(api_key, + experiment_id, user_id) + + user_experiment_info.then((response) => { + let variant = response.data['variant'] + if (variant['name'] == "treatment") { + // insert code here to show "treatment" variant + } else if (variant['name'] == "control") { + // insert code here to show "control" variant + } else { + // unexpected variant name. raise error + throw new Error(`Unexpected variant name ${variant["name"]}`) + } + }) + + ``` + + + If you implement A/B testing code in FrontEnd, like JavaScript, and are + also worried about exploding the secret api_key. You can choose to use + anonymous_id with the public_api_key for this API. Here's an example. + + + ```javascript + + const apiKey = ''; + + const experimentId = ''; + + const anonymous_id = 'user_1234'; // use to evaluate a treatment for + + + function getUserExperimentInfo(apiKey, experimentId, anonymous_id) { + const data = { + user_id: anonymous_id + }; + const url = `https://api.askmiso.com/v1/experiments/${experimentId}/events?api_key=${apiKey}`; + const options = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }; + + return window.fetch(url, options) + .then((response) => response.json()) + .then((data) => { + const variantName = data.variant.name; + if (variantName === `${this.treatmentName}`) { + // insert code here to show 'treatment' variant + } else if (variantName === `${this.controlName}`) { + // insert code here to show 'control' variant + } else { + // unexpected variant name, throw error + throw new Error(`Unexpected variant name: ${variantName}`); + } + }) + .catch((error) => console.error(error)); + } + + + getUserExperimentInfo(apiKey, experimentId, anonymous_id); + + ``` + - name: Interaction APIs + description: >+ + + Miso’s Interaction APIs let you manage your Interaction records stored + with Miso. + + + ### Interaction records + + Your Interaction records tell Miso about user interactions with products + and content on your site or application. + + From these interactions, Miso understands how users move through your + conversion funnels: which products or content + + assets attract the attention of each individual user, and which products + or content ultimately will be purchased or + + consumed by each of them. With these insights, Miso makes real-time + tailored recommendations for each user, and + + responds to each of their clicks and views on the site (even for anonymous + users). + + + Interaction records share some common attributes, but are distinguished by + their type. + + Miso captures 23 different interaction types, divided into the following 6 + groups: + + + #### Core click-streams + + * `product_detail_page_view`: a user viewed the detail page for a product + + * `search`: a user made a search request with keywords and (optionally) + filters + + + The above interactions are the core fuel for Miso's personalization + Engines, because they happen in a much higher + + frequency than other interactions and provide an unbiased and + high-fidelity view of users' interests on the site. + + The collection of these interactions is highly important for Miso's + personalization performance. At the minimum, + + you should implement the `product_detail_page_view` interaction to start + with. + + + #### Conversion (eCommerce) + + * `add_to_cart`: a user added a product to the shopping cart + + * `remove_from_cart`: a user removed a product from the shopping cart + + * `checkout`: a user checked out and started the payment process + + * `refund`: a user refunded the product + + * `subscribe`: a user subscribed to a product + + + The above interactions are the main revenue drivers for eCommerce sites. + It’s important to collect them so that + + Miso can not only drive click-through rates, but actually improve the + revenue in a targeted way. To start with, + + you should at least implement the `add_to_cart` interaction. + + + #### Consumption (content media) + + * `read`, `watch`, and `listen` interactions capture how and for how long + a user consumed a piece of content. + + * `add_to_collection`: a user added an product to their personal + collection + + * `remove_from_collection`: a user removed an product from their personal + collection + + + If you are a content site, the above interactions are the main drivers to + users' satisfaction on the site. + + Collecting these interactions allows Miso to drive consumption rates and + consumption durations for the content on + + your site. If you run a content site, you should implement at least one of + these interactions. + + + #### Feedback signals + + * `like`, `dislike`, `share`, `rate`, and `bookmark` are common ways + users express their interests. + + + These are strong signals for Miso to understand each user's preferences + regarding your products or content. You + + should send these signals to Miso if you have any of these UI patterns on + your site. + + + #### Performance Checking + + * `impression`: a user saw or was presented with a product or content + asset (but didn't yet interact with it) + + * `viewable_impression`: the product or content presented is actually + viewed by the user + (for example, minimum of 50% of the pixels were in viewable space for at least one continuous second.) + * `click`: a user clicked on something (for example, a product item) + + + #### Additional click-streams + + * `home_page_view`: user viewed your home page + + * `category_page_view`: a user viewed the page for a specific “group” or + “family” or products or content in your catalog + + * `promo_page_view`: user viewed the promotion pages about certain + products + + * `product_image_view`: user clicked on or otherwise interacted with the + product image (e.g. enlarged the image) + + + The above interactions are additional signals for Miso to understand + users' behavior on the site. + + + #### Custom + + * `custom` interaction types are reserved for you to define your own + business-specific interaction types. + + + Miso will analyze any custom interactions you define to infer users' + interests and preferences. + + + - name: Product / Content APIs + description: >+ + + Miso's Product / Content APIs let you upload, read, and delete Product / + Content records that represent your site's + + catalog. + + + ### Product / Content records + + Miso analyzes your Product / Content records to provide personalized + search and recommendations that connect users + + with products or content on your site or application. + + + Much of Miso's search and personalization capability relies on + understanding your catalog in-depth and drawing + + correlations between your catalog and your users' consumption or + purchasing behaviors. In other words, Miso + + discovers that, with high correlation, users who are interested in certain + product attributes would also be + + interested in other products with similar or related attributes. (For + simplicity, we will often overload the word + + "products" to mean items for purchase if you are an eCommerce business, + and content to consume if you are a content + + marketplace.) + + + To fully optimize your search and recommendations, it is important to + provide Miso with Product / Content records + + that are complete and accurate. We define a set of common attributes that + capture the basics of most eCommerce and + + content media products, such as `title`, `description`, `categories`, + `tags`, `material`, `authors`, etc. + + + If your products' characteristics cannot be fully captured by these + fields, we recommend that you specify + + `custom_attributes`. For Miso, the more complete the product information + is, the better its personalized search + + and recommendations become. + + - name: User APIs + description: >+ + + Miso’s User APIs let you upload, read, and delete User records that tell + Miso about your site’s unique users and + + visitors. + + + ### User records + + User records specify relatively static attributes for a given user, such + as their `age`, `gender`, `city`, etc. As a + + rule of thumb, you should put information here that is not already + captured in your + + [Interaction records](https://api.askmiso.com). For example, + *last_bought_product* is probably not needed here because + + Miso already can tell that from the [Interaction + records](https://api.askmiso.com). + + + Miso will discover the correlations between a user's attributes and their + behaviors on your site. For example, Miso + + might determine that users of a certain age group tend to be interested in + certain products or a certain price + + range. These insights will be taken into account when predicting users' + interests, in particular for new users who + + have not yet generated many interaction records. + + + We define a set of common user attributes for e-Commerce and content media + sites. Some of them, such as `name` are + + for display in the Dojo dashboard only. The rest are for model quality. + Most attributes are optional and you don't + + need to specify them if you don't collect such data. On the other hand, + you can specify your custom user attributes + + in the `custom_attributes` field. Miso will analyze custom user attributes + to improve the model quality as well. + + - name: Bulk API + description: > + + The Bulk API provides an efficient interface for making multiple Search / + Recommendations / Q&A requests in one API + + call. These requests will be executed concurrently at the Miso side, and + returned at once when all of them are finished. + + This API is particularly useful when you need to invoke multiple Miso APIs + to respond to a user request. + + Using this API, you can batch multiple API calls into one, and + significantly save the network round-trip times. + + + ### Request schema + + The request schema for this API call is as follow: + + ``` + + POST /v1/bulk + + { + "requests": [ + { + "api_name": "search/search", + "body": { ... } + }, + { + "api_name": "recommendation/product_to_product", + "body": { ... } + }, + ... + ] + } + + ``` + + Each request object should contain: + + * **api_name**: name of the API you want to access. The name should + contain a slash `/`. + + For example, search/search for search requests, search/autocomplete for + autocomplete requests, etc. + + * **body**: the complete request body as if you are making the API request + individually. + + + Any errors in one of the requests will be returned, and will not prevent + other requests from being + + executed. + + + ### Response Schema + + Bulk API endpoint will return the API responses in the same order as they + appear in the request. + + For example, if the Bulk API request is like the following: + + ``` + + POST /v1/bulk + + { + "requests": [ + {... request 1 ...}, + {... request 2 ...} + ] + } + + ``` + + + The response will be like: + + ``` + + { + "data": [ + // response for request 1 + { + "error": false, + "status_code": 200, + "body": { ... } + }, + // response for request 2 + { + "error": false, + "status_code": 200, + "body": { ... } + } + ] + } + + ``` + + + Each response object will contain the following fields: + + * **error**: whether there was an error with the request. You should check + this field to determine whether to + + perform error handling. + + * **status_code**: status code of the request. + + * **body**: the response body of the request (as if the request was sent + individually). + + + Let's see a complete example with MovieLens data. The following requests + will issue two requests in one API call that + + return the `Sci-Fi` movies directed by + + *Ridley Scott*, and *James Cameron* respectively in the first and second + responses: + + ``` + + POST /v1/bulk + + { + "requests": [ + { + "api_name": "search/search", + "body": { + "user_id": "test_user", + "q": "sci-fi", + "fq": "custom_attributes.director:\"Ridley Scott\"" + } + }, + { + "api_name": "search/search", + "body": { + "user_id": "test_user", + "q": "sci-fi", + "fq": "custom_attributes.director:\"James Cameron\"" + } + } + ] + } + + ``` + + The response will be like: + + ``` + + { + "data": [ + { + "error": false, + "status_code": 200, + "body": { + "data": { + "took": 136, + "miso_id": "19ab254c-5fb8-11ec-bd48-b20169940af9", + "products": [ + { + "product_id": "blade-runner", + "title": "Blade Runner (1982)" + } + ], + "total": 6, + "start": 0 + } + } + }, + { + "error": false, + "status_code": 200, + "body": { + "data": { + "took": 116, + "miso_id": "19ab254c-5fb8-11ec-bd48-b20169940af9", + "products": [ + { + "product_id": "avatar", + "title": "Avatar (2009)" + } + ], + "total": 10, + "start": 0 + } + } + } + ] + } + + ``` + - name: Ask APIs + description: >+ + + Miso's new Ask API is the next generation of question answering APIs. + + It is designed to provide accurate and concise answers to your questions + + based on your existing product documents. + + + Ask API offers a seamless and effective way to address complex queries in + + a near-realtime fasion. + + + Miso preprocesses your product documents, breaking them into segments. + + When a question is received, Miso finds the most related product and + segments, then + + summarize to a concise and informative answer based on the identified + segments, + + including products related to the question. + + + Possible use case includes: knowledge base, documentation search, customer + support, and more. + + + To use the Ask API, you first submit a "question" you want to ask. + + Question can be any human-readable text. Then a question ID will returned, + + and the question will be processed in the background. + + + After receving question ID, you can then use the question ID to get latest + answer + + to the question as it is being compiled. + + + ---- + + + For example: + + + If you want to know about the inner workings of nginx: + + + ```json + + { + "question":"How nginx works internally?" + } + + ``` + + + The API would response with a question id. + + ```json + + { + "data": { + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a" + }, + "message": "success" + } + + ``` + + + Then you can send a GET request to + `/v1/ask/questions/{question_id}/answer` + + to get the latest answer as it is being compiled and summerized. + + You can use `answer_stage` and `finished` to check current answer status. + + + Here's the response of answer API when data is fetched and being verified, + before answer is summerized: + + ```json + + { + "message": "success", + "data": { + "question": "How nginx works internally?", + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a", + "parent_question_id": null, + "answer_stage": "Verifying possible answers", + "finished": false, + "answer": "Verifying possible answers ...", + "sources": [], + "related_resources": [], + "followup_questions": [] + } + } + + ``` + + + Here's the response when answer is fullly summerized: + + + ```json + + { + "message": "success", + "data": { + "question": "How nginx works internally?", + "question_id": "ff4775fa-345e-4d28-91b0-8fb8bf095e6a", + "parent_question_id": null, + "answer_stage": "Generating summary", + "finished": true, + "answer": "# How does Nginx work internally?\n\n## Internal requests [1]\n\nNginx differentiates between external and internal requests. External requests...[omitted for simplicity]", + "sources": [ + { + "title": "Internal requests", + "product_id": "9781788623551", + "child_title": "Internal requests", + "child_id": "203", + "snippet": "Internal requests\nNginx differentiates external and internal requests." + }, + { + "title": "5. Nginx Core Architecture", + "product_id": "9781484216569", + "child_title": "5. Nginx Core Architecture", + "child_id": "5", + "snippet": "Checks if the client can access of the requested the resource.\nIt is at this step that Nginx...[omitted]" + }, + { + "title": "2. Managing Nginx", + "product_id": "9781785289538", + "child_title": "2. Managing Nginx", + "child_id": "14", + "snippet": "The Nginx connection processing architecture\nBefore you study...[omitted]" + }, + { + "title": "3. Nginx Core Directives", + "product_id": "9781484216569", + "child_title": "3. Nginx Core Directives", + "child_id": "3", + "snippet": "Understanding the Default Configuration\nThe default configuration...[omitted]" + }, + { + "title": "4. Nginx Modules", + "product_id": "9781484216569", + "child_title": "4. Nginx Modules", + "child_id": "4", + "snippet": "Based on the context like HTTP, MAIL, and STREAM, it creates a ...[omitted]" + } + ], + "related_resources": [], + "followup_questions": [ + "What are the steps involved in processing a request and generating a response in Nginx?", + "How do Nginx modules contribute to the internal workings of Nginx?" + ] + } + } + + ``` + + + Related product IDs will be returned along with human-readable answer. + Related text section in the product will also be quoted. + + + If a product has any children, they will also be matched, `child_id` and + `child_title` will be included for sources belonging to the product's + children. + + + You can use `fq` to limit the search scope, for example, to a specific + product type or other condition. + + + If you only want to search for books (no articles of videos), you can use + `fq=type:book` like this: + + ```json + + { + "question":"How nginx works internally?" + "fq": "type:book" + } + + ``` + + + If you want the answer to contain any other fields, set `source_fl` when + submitting the question. + +x-tagGroups: + - name: Data APIs + tags: + - Interaction APIs + - Product / Content APIs + - User APIs + - name: Engine APIs + tags: + - Search APIs + - Recommendation APIs + - Ask APIs + - Signal API + - Bulk API + - name: Experiment APIs + tags: + - Experiment APIs + - name: Q&A API + tags: + - Q&A APIs +servers: + - url: https://api.askmiso.com diff --git a/sdks/db/processed-custom-request-cache/askmiso.com.yaml b/sdks/db/processed-custom-request-cache/askmiso.com.yaml new file mode 100644 index 0000000000..92fbcd7538 --- /dev/null +++ b/sdks/db/processed-custom-request-cache/askmiso.com.yaml @@ -0,0 +1,218 @@ +processed: + securitySchemes: + Secret API Key: + type: apiKey + description: >+ + + Your secret API key is used to access every Miso API endpoint. You + should secure this key and only use it on a backend + + server. Never leave this key in your client-side JavaScript code. If the + private key is compromised, you can revoke it + + in [Dojo](https://dojo.askmiso.com/docs/api-browser) and get a new one. + + + Specify your secret key in the `api_key` query parameter. For example: + + ``` + + POST /v1/users?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17 + + ``` + + in: query + name: api_key + Publishable API Key: + type: apiKey + description: > + + Your publishable API key is used to call Miso's APIs from your front-end + code. It can be used to stream interactions from the browser using + Miso's Interactions Upload API or to access read-only search and + recommendation results for a given user. When using the publishable API + key, the requested user_id will need to be hashed to maintain the + necessary security compliance. + + + Specify your publishable key in the `api_key` query parameter. For + example: + + ``` + + POST /v1/interactions?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17 + + ``` + in: query + name: api_key + apiBaseUrl: https://api.askmiso.com + apiVersion: 1.1.4 + apiDescription: > + + # Overview + + Miso’s approach to personalization is to train machine learning Engines on + three core data sets: + + + 1. Your site’s log of historical and real-time interactions, + + 2. Your catalog of products and content, and + + 3. Your users. Miso provides the output of its Engines to you, so you can + build search and recommendation + + experiences that are personalized down to the individual level (n=1 + personalization). + + + To see how Miso works and explore the power of its Engines, we recommend + following + + [this tutorial](https://docs.askmiso.com/) to get + + started with our Playground data. Integrating your site or application with + Miso happens in three basic steps: + + + 1. Upload your data + + 2. Train your Engines + + 3. Build search and recommendation experiences with the output of your + Engines. + + + + Miso provides two main integration points. The first is your [Dojo + Dashboard](https://dojo.askmiso.com/), + + which is used to set up your Engines with the conversions you want to + optimize and your training schedule. + + Dojo is also a great way to get familiar with Miso by manually uploading + data and exploring the output of + + Miso’s Engines. In Dojo’s Sandboxes, you can tweak your Engine settings and + see visual examples of Miso’s search + + and recommendations running on your live data. + + + The second integration point is Miso’s API, which lets you automatically + manage your data in Miso and build + + experiences that leverage the output of Miso’s personalization Engines. + + + + Miso’s API is composed of two major groups of REST API endpoints: Data APIs + and Engine APIs. + + + ### Data APIs + + Data APIs collect input to Miso's personalization Engines. These APIs all + support high-throughput + + data ingestion through bulk insert, and satisfy GDPR and CCPA compliance by + letting users delete their data + + from Miso. Subcategories of Data APIs are: + + + * [Interaction APIs](https://api.askmiso.com), for managing your Interaction + records. By uploading historical and real-time Interaction + + records, you tell Miso how users are engaging with the products and content + on your site, and in turn, Miso’s + + Engines learn how to optimize your conversion funnels. + + * [Product / Content APIs](https://api.askmiso.com), for managing your + Product / Content records. These records provide a deep semantic + + understanding of your catalog and keep Miso up to date about your offerings + so it can make smart and timely + + suggestions. The `product_id` is how Miso links Product / Content records to + your Interaction records. + + * [User APIs](https://api.askmiso.com), for managing your User records. + These records tell Miso about your site’s users and visitors, + + so Miso can build an understanding of user segmentation and behavior in + relation to products and content. + + The `user_id` is how Miso links User records to your Interaction records. + + + As a rule of thumb, we recommend batching up data to avoid timeout risks. + For the Product / Content and User + + Upload APIs, we recommend limiting each API upload call to about 100 records + at a time. For the Interaction + + Upload API, we recommend limiting your calls to around 10,000 records at a + time. + + + ### Engine APIs + + Engine APIs provide the output of Miso's personalization Engines. We + designed these APIs with a focus on low + + latency and high availability. Most of these APIs' 95th percentile response + time is under 75ms, + + and the services are replicated to at least three separate instances for + high availability. + + The types of Engine APIs are: + + + * [Search APIs](https://api.askmiso.com), for getting Miso’s personalized + search results for a user, with search-as-you-type and + + autocompletion. + + * [Recommendation APIs](https://api.askmiso.com), for retrieving Miso’s + recommendations that match users with + + the products, categories, and product attributes that are likely to drive + conversions. + + + # Authentication + + [View your API Keys in your Dojo + Dashboard.](https://dojo.askmiso.com/docs/api-browser) + + + There are three environments in Miso: + + * **Playground**, a read-only tutorial environment with sample data. + + * **Development**, for staging, QA, and experimentation. + + * **Production**, where you run your live integration with Miso. + + + Access a Miso environment by passing in the corresponding API key in your + API calls. There is one publishable + + key and one secret key per environment. + + + API Key can passed with query parameter `api_key`, or using the `X-API-KEY` + header. + apiTitle: Miso API + endpoints: 23 + sdkMethods: 26 + schemas: 134 + parameters: 212 + originalCustomRequest: + type: GET + url: https://api.askmiso.com/swagger.json + customRequestSpecFilename: askmiso.com.yaml + difficultyScore: 146 diff --git a/sdks/db/processed-custom-request-cache/baserow.io.yaml b/sdks/db/processed-custom-request-cache/baserow.io.yaml new file mode 100644 index 0000000000..8299e578ef --- /dev/null +++ b/sdks/db/processed-custom-request-cache/baserow.io.yaml @@ -0,0 +1,31 @@ +processed: + securitySchemes: + Database token: + type: http + scheme: bearer + bearerFormat: Token your_token + JWT: + type: http + scheme: bearer + bearerFormat: JWT your_token + apiBaseUrl: api.baserow.io + apiVersion: 1.23.2 + apiDescription: >- + 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). + apiTitle: Baserow API spec + endpoints: 211 + sdkMethods: 299 + schemas: 594 + parameters: 914 + contactUrl: https://baserow.io/contact + originalCustomRequest: + type: GET + url: https://api.baserow.io/api/schema.json + apiBaseUrl: api.baserow.io + customRequestSpecFilename: baserow.io.yaml + difficultyScore: 824.5 diff --git a/sdks/db/processed-custom-request-cache/browse.ai.yaml b/sdks/db/processed-custom-request-cache/browse.ai.yaml new file mode 100644 index 0000000000..92f04bf702 --- /dev/null +++ b/sdks/db/processed-custom-request-cache/browse.ai.yaml @@ -0,0 +1,17 @@ +processed: + securitySchemes: {} + apiBaseUrl: https://api.browse.ai/v2 + apiVersion: v2 + apiDescription: >- + If you are still using the deprecated API v1 version, you can see its + documentation [here](https://www.browse.ai/docs/api/v1). + apiTitle: Browse AI API Documentation + endpoints: 13 + sdkMethods: 19 + schemas: 71 + parameters: 71 + originalCustomRequest: + type: GET + url: https://api.browse.ai/v2/openapi + customRequestSpecFilename: browse.ai.yaml + difficultyScore: 72.25 diff --git a/sdks/db/processed-custom-request-cache/chatkitty.com.yaml b/sdks/db/processed-custom-request-cache/chatkitty.com.yaml new file mode 100644 index 0000000000..7dbe41ba09 --- /dev/null +++ b/sdks/db/processed-custom-request-cache/chatkitty.com.yaml @@ -0,0 +1,34 @@ +processed: + securitySchemes: + password_reset_token_authorization: + type: apiKey + name: X-Token + in: header + application_authorization: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://authorization.chatkitty.com/oauth/token + refreshUrl: https://authorization.chatkitty.com/oauth/token + scopes: + create:*: Create application resources + read:*: Read application resources + update:*: Update application resources + delete:*: Delete application resources + apiBaseUrl: https://api.chatkitty.com + apiVersion: 2.57.0 + apiDescription: |- + OpenAPI specification (OAS) for the ChatKitty Platform API. + See the Interactive Docs to try ChatKitty API methods without writing code, + and get the complete schema of resources exposed by the API. + apiTitle: ChatKitty Platform API + endpoints: 48 + sdkMethods: 68 + schemas: 117 + parameters: 173 + contactUrl: mailto:support@chatkitty.com + originalCustomRequest: + type: GET + url: https://api.chatkitty.com/docs/v1 + customRequestSpecFilename: chatkitty.com.yaml + difficultyScore: 169.75 diff --git a/sdks/db/progress/baserow-progress.yaml b/sdks/db/progress/baserow-progress.yaml new file mode 100644 index 0000000000..30d02254b2 --- /dev/null +++ b/sdks/db/progress/baserow-progress.yaml @@ -0,0 +1,2148 @@ +examples: {} +examples_2: {} +examples_3: + /api/database/views/{slug}/public/auth: + post: + '401': + application/json: {} + /api/user-source-auth-refresh: + post: + '401': + application/json: {} + /api/user-source-token-blacklist: + post: + '401': + application/json: {} + /api/user-source/{user_source_id}/force-token-auth: + post: + '401': + application/json: {} + /api/user-source/{user_source_id}/token-auth: + post: + '401': + application/json: {} + /api/user/token-auth: + post: + '401': + application/json: {} + /api/user/token-blacklist: + post: + '401': + application/json: {} + /api/user/token-refresh: + post: + '401': + application/json: {} + /api/user/token-verify: + post: + '401': + application/json: {} +ignoreObjectsWithNoProperties: true +operationIds: + /api/_health/full/: + get: Health_runFullCheck + /api/admin/audit-log/: + get: AuditLog_listEntriesForWorkspace + /api/admin/audit-log/action-types/: + get: AuditLog_listActionTypes + /api/admin/audit-log/export/: + post: AuditLog_createExportJob + /api/admin/audit-log/users/: + get: AuditLog_listUsers + /api/admin/audit-log/workspaces/: + get: AuditLog_listDistinctWorkspaceNames + /api/admin/auth-provider/: + get: Auth_listProviders + post: Auth_registerAuthProvider + /api/admin/auth-provider/{auth_provider_id}/: + delete: Auth_deleteAuthProvider + get: Auth_getAuthProvider + patch: Auth_updateAuthProvider + /api/admin/groups/: + get: Admin_getAllGroups + /api/admin/groups/{group_id}/: + delete: Admin_deleteGroup + /api/admin/users/: + get: Admin_getUsersDetail + post: Admin_createNewUser + /api/admin/users/impersonate/: + post: Admin_impersonateUser + /api/admin/users/{user_id}/: + delete: Admin_deleteUserPremium + patch: Admin_updateUserAttributes + /api/admin/workspaces/: + get: Admin_getWorkspaceDetails + /api/admin/workspaces/{workspace_id}/: + delete: Admin_deleteWorkspaceAndApplications + /api/application/{application_id}/integrations/: + get: Integrations_listApplicationIntegrations + post: Integrations_createNewIntegration + /api/application/{application_id}/list-user-source-users/: + get: UserSources_listAvailableUsers + /api/application/{application_id}/user-sources/: + get: UserSources_list + post: UserSources_createNewUserSource + /api/applications/: + get: Applications_listUserApplications + /api/applications/group/{group_id}/: + get: Applications_listGroupApplications + post: Applications_createGroupApplication + /api/applications/group/{group_id}/order/: + post: Applications_changeOrderOfGroupApplications + /api/applications/workspace/{workspace_id}/: + get: Applications_listUserApplications + post: Applications_createApplicationInWorkspace + /api/applications/workspace/{workspace_id}/order/: + post: Applications_changeApplicationOrder + /api/applications/{application_id}/: + get: Applications_getApplicationById + /api/applications/{application_id}/duplicate/async/: + post: Applications_duplicateAsync + /api/audit-log/: + get: AuditLog_listEntries + /api/audit-log/action-types/: + get: AuditLog_listActionTypes + /api/audit-log/export/: + post: AuditLog_exportJob + /api/audit-log/users/: + get: AuditLog_listUsers + /api/audit-log/workspaces/: + get: AuditLog_listDistinctWorkspaceNames + /api/auth-provider/login-options/: + get: Auth_listLoginOptions + /api/builder/data-source/{data_source_id}/: + delete: BuilderDataSources_deleteById + patch: BuilderDataSources_updateExistingDataSource + /api/builder/data-source/{data_source_id}/dispatch/: + post: BuilderDataSources_dispatchServiceResult + /api/builder/data_source/{data_source_id}/move/: + patch: BuilderDataSources_moveDataSource + /api/builder/domains/ask-public-domain-exists/: + get: BuilderDomains_checkDomainExists + /api/builder/domains/published/by_id/{builder_id}/: + get: BuilderPublic_serializedVersionById + /api/builder/domains/published/by_name/{domain_name}/: + get: BuilderPublic_serializedVersion + /api/builder/domains/published/page/{page_id}/data_sources/: + get: BuilderDataSources_listPageDataSources + /api/builder/domains/published/page/{page_id}/elements/: + get: BuilderElements_getPageElements + /api/builder/domains/published/page/{page_id}/workflow_actions/: + get: BuilderWorkflowActions_listPageWorkflowActions + /api/builder/domains/{domain_id}/: + delete: BuilderDomains_removeExistingDomain + patch: BuilderDomains_updateExistingDomain + /api/builder/domains/{domain_id}/publish/async/: + post: BuilderDomains_startPublishJob + /api/builder/element/{element_id}/: + delete: BuilderElements_removeElementById + patch: BuilderElements_updateExistingElement + /api/builder/element/{element_id}/duplicate/: + post: BuilderElements_duplicateElementChildren + /api/builder/element/{element_id}/move/: + patch: BuilderElements_moveElement + /api/builder/page/{page_id}/data-sources/: + get: BuilderDataSources_listPageDataSources + post: BuilderDataSources_createNew + /api/builder/page/{page_id}/dispatch-data-sources/: + post: BuilderDataSources_dispatchPageDataSources + /api/builder/page/{page_id}/elements/: + get: BuilderElements_getPageElements + post: BuilderElements_createNewElement + /api/builder/page/{page_id}/workflow_actions/: + get: BuilderWorkflowActions_listPageWorkflowActions + post: BuilderWorkflowActions_createNewAction + /api/builder/page/{page_id}/workflow_actions/order/: + post: BuilderWorkflowActions_applyNewOrder + /api/builder/pages/{page_id}/: + delete: BuilderPages_deletePage + patch: BuilderPages_updateExistingPage + /api/builder/pages/{page_id}/duplicate/async/: + post: BuilderPages_startDuplicationJob + /api/builder/workflow_action/{workflow_action_id}/: + delete: BuilderWorkflowActions_deleteWorkflowActionById + patch: BuilderWorkflowActions_updateExistingAction + /api/builder/workflow_action/{workflow_action_id}/dispatch/: + post: BuilderWorkflowActions_dispatchServiceResult + /api/builder/{builder_id}/domains/: + get: BuilderDomains_getAll + post: BuilderDomains_createNewDomain + /api/builder/{builder_id}/domains/order/: + post: BuilderDomains_applyOrder + /api/builder/{builder_id}/pages/: + post: BuilderPages_createNewPage + /api/builder/{builder_id}/pages/order/: + post: BuilderPages_applyOrderToPages + /api/builder/{builder_id}/theme/: + patch: BuilderTheme_updateProperties + /api/database/export/{job_id}/: + get: DatabaseTableExport_exportJobDetails + /api/database/fields/table/{table_id}/: + get: DatabaseTableFields_getTableFields + post: DatabaseTableFields_createNewField + /api/database/fields/{field_id}/: + delete: DatabaseTableFields_deleteField + get: DatabaseTableFields_getFieldProperties + patch: DatabaseTableFields_updateField + /api/database/fields/{field_id}/duplicate/async/: + post: DatabaseTableFields_duplicateAsync + /api/database/fields/{field_id}/unique_row_values/: + get: DatabaseTableFields_getUniqueRowValues + /api/database/formula/{table_id}/type/: + post: DatabaseTableFields_calculateFormulaType + /api/database/rows/names/: + get: DatabaseTableRows_getNamesOfRow + /api/database/rows/table/{table_id}/: + get: DatabaseTableRows_listTableRows + post: DatabaseTableRows_createRow + /api/database/rows/table/{table_id}/batch-delete/: + post: DatabaseTableRows_batchDelete + /api/database/rows/table/{table_id}/batch/: + patch: DatabaseTableRows_updateBatchRows + post: DatabaseTableRows_createBatchRows + /api/database/rows/table/{table_id}/{row_id}/: + delete: DatabaseTableRows_deleteRow + get: DatabaseTableRows_getRowByTableIdAndRowId + patch: DatabaseTableRows_updateRow + /api/database/rows/table/{table_id}/{row_id}/adjacent/: + get: DatabaseTableRows_getAdjacentRow + /api/database/rows/table/{table_id}/{row_id}/history/: + get: DatabaseTableRows_getRowChangeHistory + /api/database/rows/table/{table_id}/{row_id}/move/: + patch: DatabaseTableRows_moveRowTo + /api/database/tables/database/{database_id}/: + get: DatabaseTables_listByDatabaseId + post: DatabaseTables_createTable + /api/database/tables/database/{database_id}/async/: + post: DatabaseTables_createTableJob + /api/database/tables/database/{database_id}/order/: + post: DatabaseTables_updateTableOrder + /api/database/tables/{table_id}/: + delete: DatabaseTables_deleteTable + get: DatabaseTables_getTable + patch: DatabaseTables_updateTable + /api/database/tables/{table_id}/duplicate/async/: + post: DatabaseTables_duplicateAsyncJob + /api/database/tables/{table_id}/import/async/: + post: DatabaseTables_importAsyncJob + /api/database/tokens/: + get: DatabaseTokens_list + post: DatabaseTokens_createNewToken + /api/database/tokens/check/: + get: DatabaseTokens_verifyTokenValidity + /api/database/tokens/{token_id}/: + delete: DatabaseTokens_deleteToken + get: DatabaseTokens_getToken + patch: DatabaseTokens_updateTokenOwnership + /api/database/view/{view_id}/premium: + patch: DatabaseTableViews_setPremiumAttributes + /api/database/views/calendar/{slug}/public/rows/: + get: DatabaseTableCalendarView_getPublicRows + /api/database/views/calendar/{view_id}/: + get: DatabaseTableCalendarView_getGroupedRows + /api/database/views/decoration/{view_decoration_id}/: + delete: DatabaseTableViewDecorations_deleteExistingDecoration + get: DatabaseTableViewDecorations_getViewDecoration + patch: DatabaseTableViewDecorations_updateDecoration + /api/database/views/filter-group/{filter_group_id}/: + delete: DatabaseTableViewFilters_deleteFilterGroup + get: DatabaseTableViewFilters_getFilterGroupById + patch: DatabaseTableViewFilters_updateFilterGroup + /api/database/views/filter/{view_filter_id}/: + delete: DatabaseTableViewFilters_deleteFilter + get: DatabaseTableViewFilters_getViewFilter + patch: DatabaseTableViewFilters_updateExistingFilter + /api/database/views/form/{slug}/submit/: + get: DatabaseTableFormView_getFormMetadataBySlug + post: DatabaseTableFormView_submitForm + /api/database/views/form/{slug}/upload-file/: + post: DatabaseTableFormView_uploadFile + /api/database/views/gallery/{slug}/public/rows/: + get: DatabaseTableGalleryView_listPublicRows + /api/database/views/gallery/{view_id}/: + get: DatabaseTableGalleryView_listRowsByViewId + /api/database/views/grid/{slug}/public/rows/: + get: DatabaseTableGridView_listPublicRows + /api/database/views/grid/{view_id}/: + get: DatabaseTableGridView_getViewRows + post: DatabaseTableGridView_getFilteredData + /api/database/views/grid/{view_id}/aggregation/{field_id}/: + get: DatabaseTableGridView_computeAggregation + /api/database/views/grid/{view_id}/aggregations/: + get: DatabaseTableGridView_getFieldAggregations + /api/database/views/group_by/{view_group_by_id}/: + delete: DatabaseTableViewGroupings_deleteGroupBy + get: DatabaseTableViewGroupings_getViewGroupBy + patch: DatabaseTableViewGroupings_updateGroupBy + /api/database/views/kanban/{slug}/public/rows/: + get: DatabaseTableKanbanView_getPublicRowsBySlug + /api/database/views/kanban/{view_id}/: + get: DatabaseTableKanbanView_getSerializedRowsByViewId + /api/database/views/sort/{view_sort_id}/: + delete: DatabaseTableViewSortings_deleteById + get: DatabaseTableViewSortings_getSortById + patch: DatabaseTableViewSortings_updateById + /api/database/views/table/{table_id}/: + get: DatabaseTableViews_listTableViews + post: DatabaseTableViews_createNewView + /api/database/views/table/{table_id}/order/: + post: DatabaseTableViews_reorderTableOrder + /api/database/views/{slug}/link-row-field-lookup/{field_id}/: + get: DatabaseTableViews_getLinkRowFieldValue + /api/database/views/{slug}/public/auth/: + post: DatabaseTableViews_generateToken + /api/database/views/{slug}/public/info/: + get: DatabaseTableViews_getPublicInfo + /api/database/views/{view_id}/: + delete: DatabaseTableViews_deleteView + get: DatabaseTableViews_getViewById + patch: DatabaseTableViews_updateView + /api/database/views/{view_id}/decorations/: + get: DatabaseTableViewDecorations_list + post: DatabaseTableViewDecorations_createNew + /api/database/views/{view_id}/duplicate/: + post: DatabaseTableViews_duplicateView + /api/database/views/{view_id}/field-options/: + get: DatabaseTableViews_getFieldOptions + patch: DatabaseTableViews_updateFieldOptions + /api/database/views/{view_id}/filter-groups/: + post: DatabaseTableViewFilters_createNewFilterGroup + /api/database/views/{view_id}/filters/: + get: DatabaseTableViewFilters_getList + post: DatabaseTableViewFilters_createNewFilter + /api/database/views/{view_id}/group_bys/: + get: DatabaseTableViewGroupings_list + post: DatabaseTableViewGroupings_createNewGrouping + /api/database/views/{view_id}/rotate-slug/: + post: DatabaseTableViews_rotateSlug + /api/database/views/{view_id}/sortings/: + get: DatabaseTableViewSortings_list + post: DatabaseTableViewSortings_createNewSort + /api/database/webhooks/table/{table_id}/: + get: DatabaseTableWebhooks_list + post: DatabaseTableWebhooks_createWebhook + /api/database/webhooks/table/{table_id}/test-call/: + post: DatabaseTableWebhooks_triggerTestCall + /api/database/webhooks/{webhook_id}/: + delete: DatabaseTableWebhooks_deleteWebhook + get: DatabaseTableWebhooks_getExistingWebhook + patch: DatabaseTableWebhooks_updateView + /api/groups/invitations/group/{group_id}/: + get: GroupInvitations_listForGroup + post: GroupInvitations_createNewInvitation + /api/groups/invitations/token/{token}/: + get: GroupInvitations_findByToken + /api/groups/invitations/{group_invitation_id}/: + delete: GroupInvitations_deleteInvitation + get: GroupInvitations_getById + patch: GroupInvitations_updateRelatedInvitation + /api/groups/invitations/{group_invitation_id}/accept/: + post: GroupInvitations_acceptGroupInvitation + /api/groups/invitations/{group_invitation_id}/reject/: + post: GroupInvitations_rejectGroupInvitation + /api/groups/users/group/{group_id}/: + get: Groups_listGroupUsers + /api/groups/users/{group_user_id}/: + delete: Groups_deleteGroupUser + patch: Groups_updateGroupUser + /api/integration/{integration_id}/: + delete: Integrations_deleteById + patch: Integrations_updateExistingIntegration + /api/integration/{integration_id}/move/: + patch: Integrations_moveIntegration + /api/licenses/: + post: Admin_registerLicense + /api/licenses/{id}/: + delete: Admin_removeLicense + get: Admin_getLicenseDetails + /api/licenses/{id}/check/: + get: Admin_checkLicenseStatus + /api/licenses/{id}/fill-seats/: + post: Admin_fillSeatsLicense + /api/licenses/{id}/lookup-users/: + get: Admin_lookupUsers + /api/licenses/{id}/remove-all-users/: + post: Admin_removeAllUsers + /api/licenses/{id}/{user_id}/: + delete: Admin_removeUserFromLicense + post: Admin_addUserToLicense + /api/notifications/{workspace_id}/: + delete: Notifications_clearWorkspaceNotifications + get: Notifications_listForWorkspaceAndUser + /api/notifications/{workspace_id}/mark-all-as-read/: + post: Notifications_markAllAsRead + /api/notifications/{workspace_id}/{notification_id}/: + patch: Notifications_markAsRead + /api/role/{group_id}/: + get: RoleAssignments_listWithinGroup + post: RoleAssignments_assignRoleToGroup + /api/role/{group_id}/batch/: + post: RoleAssignments_assignMultipleSubjectsToGroup + /api/role/{workspace_id}/: + get: RoleAssignments_listWithinWorkspaceScope + /api/role/{workspace_id}/batch/: + post: RoleAssignments_assignRoleToGroup + /api/row_comments/{table_id}/comment/{comment_id}/: + delete: DatabaseTableRows_deleteComment + patch: DatabaseTableRows_updateComment + /api/row_comments/{table_id}/{row_id}/: + get: DatabaseTableRows_getAllComments + post: DatabaseTableRows_createComment + /api/row_comments/{table_id}/{row_id}/notification-mode/: + put: DatabaseTableRows_updateNotificationMode + /api/settings/instance-id/: + get: Settings_getInstanceId + /api/sso/oauth2/callback/{provider_id}/: + get: Auth_completeProviderCallback + /api/sso/oauth2/login/{provider_id}/: + get: Auth_redirectToProvider + /api/sso/saml/acs/: + post: Auth_completeSamlAuthenticationFlow + /api/sso/saml/login-url/: + get: Auth_getSamlLoginUrl + /api/sso/saml/login/: + get: Auth_initiateSsoSamlLogin + /api/teams/group/{group_id}/: + get: Teams_getAllInGroup + post: Teams_createInGroup + /api/teams/workspace/{workspace_id}/: + get: Teams_listInWorkspace + post: Teams_createNewTeam + /api/teams/{team_id}/subjects/: + get: Teams_listSubjects + /api/templates/install/{group_id}/{template_id}/: + post: Templates_installApplications + /api/templates/install/{group_id}/{template_id}/async/: + post: Templates_startAsyncJob + /api/templates/install/{workspace_id}/{template_id}/async/: + post: Templates_startAsyncJob + /api/trash/: + get: Trash_inspectTrashContents + /api/trash/group/{group_id}/: + delete: Trash_emptyGroupContents + get: Trash_getGroupContents + /api/trash/restore/: + patch: Trash_restoreItem + /api/trash/workspace/{workspace_id}/: + delete: Trash_emptyWorkspace + get: Trash_getWorkspaceTrashContents + /api/user-files/upload-via-url/: + post: UserFiles_uploadViaUrl + /api/user-source-auth-refresh/: + post: UserSources_refreshAccessToken + /api/user-source-token-blacklist/: + post: UserSources_blacklistToken + /api/user-source/{user_source_id}/: + delete: UserSources_removeById + patch: UserSources_updateExistingUserSource + /api/user-source/{user_source_id}/force-token-auth: + post: UserSources_forceTokenAuth + /api/user-source/{user_source_id}/move/: + patch: UserSources_rearrangeUserSource + /api/user-source/{user_source_id}/token-auth: + post: UserSources_authenticateUserWithToken + /api/user/dashboard/: + get: User_viewPendingWorkspaceInvitations + /api/user/redo/: + patch: User_redoAction + /api/user/schedule-account-deletion/: + post: User_scheduleAccountDeletion + /api/user/send-reset-password-email/: + post: User_sendResetPasswordEmail + /api/user/undo/: + patch: User_undoLatestUndoableAction + /api/workspaces/invitations/token/{token}/: + get: WorkspaceInvitations_getByToken + /api/workspaces/invitations/workspace/{workspace_id}/: + get: WorkspaceInvitations_list + post: WorkspaceInvitations_createInvite + /api/workspaces/invitations/{workspace_invitation_id}/: + delete: WorkspaceInvitations_deleteInvitation + get: WorkspaceInvitations_getById + patch: WorkspaceInvitations_updateExistingInvitation + /api/workspaces/invitations/{workspace_invitation_id}/accept/: + post: WorkspaceInvitations_acceptInvitation + /api/workspaces/invitations/{workspace_invitation_id}/reject/: + post: WorkspaceInvitations_rejectInvitation + /api/workspaces/users/workspace/{workspace_id}/: + get: Workspaces_listUsersInWorkspace + /api/workspaces/users/{workspace_user_id}/: + delete: Workspaces_deleteUser + patch: Workspaces_updateWorkspaceUser +operationTags: {} +renameTags: {} +requestSchemaNames: {} +responseDescriptions: {} +responseSchemaNames: + /api/_health/email: + post: + '400': + application/json: EmailTester400Response + /api/admin/audit-log: + get: + '400': + application/json: AuditLogListEntriesForWorkspaceResponse + /api/admin/audit-log/action-types: + get: + '200': + application/json: AuditLogListActionTypesResponse + '400': + application/json: AuditLogListActionTypes400Response + /api/admin/audit-log/export: + post: + '400': + application/json: AuditLogCreateExportJobResponse + '404': + application/json: AuditLogCreateExportJob404Response + /api/admin/audit-log/users: + get: + '400': + application/json: AuditLogListUsersResponse + /api/admin/audit-log/workspaces: + get: + '400': + application/json: AuditLogListDistinctWorkspaceNamesResponse + /api/admin/auth-provider: + get: + '200': + application/json: AuthListProvidersResponse + post: + '400': + application/json: AuthRegisterAuthProviderResponse + /api/admin/auth-provider/{auth_provider_id}: + delete: + '404': + application/json: AuthDeleteAuthProviderResponse + get: + '404': + application/json: AuthGetAuthProviderResponse + patch: + '400': + application/json: AuthUpdateAuthProviderResponse + '404': + application/json: AuthUpdateAuthProvider404Response + /api/admin/groups: + get: + '400': + application/json: AdminGetAllGroupsResponse + /api/admin/groups/{group_id}: + delete: + '400': + application/json: AdminDeleteGroupResponse + /api/admin/users: + get: + '400': + application/json: AdminGetUsersDetailResponse + post: + '400': + application/json: AdminCreateNewUserResponse + /api/admin/users/impersonate: + post: + '200': + application/json: AdminImpersonateUserResponse + /api/admin/users/{user_id}: + delete: + '400': + application/json: AdminDeleteUserPremiumResponse + patch: + '400': + application/json: AdminUpdateUserAttributesResponse + /api/admin/workspaces: + get: + '400': + application/json: AdminGetWorkspaceDetailsResponse + /api/admin/workspaces/{workspace_id}: + delete: + '400': + application/json: AdminDeleteWorkspaceAndApplicationsResponse + /api/application/{application_id}/integrations: + get: + '200': + application/json: IntegrationsListApplicationIntegrationsResponse + '404': + application/json: IntegrationsListApplicationIntegrations404Response + post: + '400': + application/json: IntegrationsCreateNewIntegrationResponse + '404': + application/json: IntegrationsCreateNewIntegration404Response + /api/application/{application_id}/list-user-source-users: + get: + '404': + application/json: UserSourcesListAvailableUsersResponse + /api/application/{application_id}/user-sources: + get: + '200': + application/json: UserSourcesListResponse + '404': + application/json: UserSourcesList404Response + post: + '400': + application/json: UserSourcesCreateNewUserSourceResponse + '404': + application/json: UserSourcesCreateNewUserSource404Response + /api/applications: + get: + '200': + application/json: ApplicationsListUserApplicationsResponse + '400': + application/json: ApplicationsListUserApplications400Response + /api/applications/group/{group_id}: + get: + '200': + application/json: ApplicationsListGroupApplicationsResponse + '400': + application/json: ApplicationsListGroupApplications400Response + '404': + application/json: ApplicationsListGroupApplications404Response + post: + '400': + application/json: ApplicationsCreateGroupApplicationResponse + '404': + application/json: ApplicationsCreateGroupApplication404Response + /api/applications/group/{group_id}/order: + post: + '400': + application/json: ApplicationsChangeOrderOfGroupApplicationsResponse + '404': + application/json: ApplicationsChangeOrderOfGroupApplications404Response + /api/applications/workspace/{workspace_id}: + get: + '200': + application/json: ApplicationsListUserApplications200Response + '400': + application/json: ApplicationsListUserApplications400Response + '404': + application/json: ApplicationsListUserApplications404Response + post: + '400': + application/json: ApplicationsCreateApplicationInWorkspaceResponse + '404': + application/json: ApplicationsCreateApplicationInWorkspace404Response + /api/applications/workspace/{workspace_id}/order: + post: + '400': + application/json: ApplicationsChangeApplicationOrderResponse + '404': + application/json: ApplicationsChangeApplicationOrder404Response + /api/applications/{application_id}: + delete: + '400': + application/json: DeleteApplicationResponse + '404': + application/json: DeleteApplication404Response + get: + '400': + application/json: ApplicationsGetApplicationByIdResponse + '404': + application/json: ApplicationsGetApplicationById404Response + patch: + '400': + application/json: UpdateApplicationResponse + '404': + application/json: UpdateApplication404Response + /api/applications/{application_id}/duplicate/async: + post: + '400': + application/json: ApplicationsDuplicateAsyncResponse + '404': + application/json: ApplicationsDuplicateAsync404Response + /api/audit-log: + get: + '400': + application/json: AuditLogListEntriesResponse + /api/audit-log/action-types: + get: + '200': + application/json: AuditLogListActionTypes200Response + '400': + application/json: AuditLogListActionTypes400Response + /api/audit-log/export: + post: + '400': + application/json: AuditLogExportJobResponse + '404': + application/json: AuditLogExportJob404Response + /api/audit-log/users: + get: + '400': + application/json: AuditLogListUsers400Response + /api/audit-log/workspaces: + get: + '400': + application/json: AuditLogListDistinctWorkspaceNames400Response + /api/auth-provider/login-options: + get: + '200': + application/json: AuthListLoginOptionsResponse + /api/builder/data-source/{data_source_id}: + delete: + '400': + application/json: BuilderDataSourcesDeleteByIdResponse + '404': + application/json: BuilderDataSourcesDeleteById404Response + patch: + '400': + application/json: BuilderDataSourcesUpdateExistingDataSourceResponse + '404': + application/json: BuilderDataSourcesUpdateExistingDataSource404Response + /api/builder/data-source/{data_source_id}/dispatch: + post: + '404': + application/json: BuilderDataSourcesDispatchServiceResultResponse + /api/builder/data_source/{data_source_id}/move: + patch: + '400': + application/json: BuilderDataSourcesMoveDataSourceResponse + '404': + application/json: BuilderDataSourcesMoveDataSource404Response + /api/builder/domains/published/by_id/{builder_id}: + get: + '404': + application/json: BuilderPublicSerializedVersionByIdResponse + /api/builder/domains/published/by_name/{domain_name}: + get: + '404': + application/json: BuilderPublicSerializedVersionResponse + /api/builder/domains/published/page/{page_id}/data_sources: + get: + '200': + application/json: BuilderDataSourcesListPageDataSourcesResponse + '404': + application/json: BuilderDataSourcesListPageDataSources404Response + /api/builder/domains/published/page/{page_id}/elements: + get: + '200': + application/json: BuilderElementsGetPageElementsResponse + '404': + application/json: BuilderElementsGetPageElements404Response + /api/builder/domains/published/page/{page_id}/workflow_actions: + get: + '200': + application/json: BuilderWorkflowActionsListPageWorkflowActionsResponse + '404': + application/json: BuilderWorkflowActionsListPageWorkflowActions404Response + /api/builder/domains/{domain_id}: + delete: + '400': + application/json: BuilderDomainsRemoveExistingDomainResponse + '404': + application/json: BuilderDomainsRemoveExistingDomain404Response + patch: + '400': + application/json: BuilderDomainsUpdateExistingDomainResponse + '404': + application/json: BuilderDomainsUpdateExistingDomain404Response + /api/builder/domains/{domain_id}/publish/async: + post: + '400': + application/json: BuilderDomainsStartPublishJobResponse + '404': + application/json: BuilderDomainsStartPublishJob404Response + /api/builder/element/{element_id}: + delete: + '400': + application/json: BuilderElementsRemoveElementByIdResponse + '404': + application/json: BuilderElementsRemoveElementById404Response + patch: + '400': + application/json: BuilderElementsUpdateExistingElementResponse + '404': + application/json: BuilderElementsUpdateExistingElement404Response + /api/builder/element/{element_id}/duplicate: + post: + '400': + application/json: BuilderElementsDuplicateElementChildrenResponse + '404': + application/json: BuilderElementsDuplicateElementChildren404Response + /api/builder/element/{element_id}/move: + patch: + '400': + application/json: BuilderElementsMoveElementResponse + '404': + application/json: BuilderElementsMoveElement404Response + /api/builder/page/{page_id}/data-sources: + get: + '200': + application/json: BuilderDataSourcesListPageDataSources200Response + '404': + application/json: BuilderDataSourcesListPageDataSources404Response + post: + '400': + application/json: BuilderDataSourcesCreateNewResponse + '404': + application/json: BuilderDataSourcesCreateNew404Response + /api/builder/page/{page_id}/dispatch-data-sources: + post: + '404': + application/json: BuilderDataSourcesDispatchPageDataSourcesResponse + /api/builder/page/{page_id}/elements: + get: + '200': + application/json: BuilderElementsGetPageElements200Response + '404': + application/json: BuilderElementsGetPageElements404Response + post: + '400': + application/json: BuilderElementsCreateNewElementResponse + '404': + application/json: BuilderElementsCreateNewElement404Response + /api/builder/page/{page_id}/workflow_actions: + get: + '200': + application/json: BuilderWorkflowActionsListPageWorkflowActions200Response + '404': + application/json: BuilderWorkflowActionsListPageWorkflowActions404Response + post: + '400': + application/json: BuilderWorkflowActionsCreateNewActionResponse + '404': + application/json: BuilderWorkflowActionsCreateNewAction404Response + /api/builder/page/{page_id}/workflow_actions/order: + post: + '400': + application/json: BuilderWorkflowActionsApplyNewOrderResponse + '404': + application/json: BuilderWorkflowActionsApplyNewOrder404Response + /api/builder/pages/{page_id}: + delete: + '400': + application/json: BuilderPagesDeletePageResponse + '404': + application/json: BuilderPagesDeletePage404Response + patch: + '400': + application/json: BuilderPagesUpdateExistingPageResponse + '404': + application/json: BuilderPagesUpdateExistingPage404Response + /api/builder/pages/{page_id}/duplicate/async: + post: + '400': + application/json: BuilderPagesStartDuplicationJobResponse + '404': + application/json: BuilderPagesStartDuplicationJob404Response + /api/builder/workflow_action/{workflow_action_id}: + delete: + '400': + application/json: BuilderWorkflowActionsDeleteWorkflowActionByIdResponse + '404': + application/json: BuilderWorkflowActionsDeleteWorkflowActionById404Response + patch: + '400': + application/json: BuilderWorkflowActionsUpdateExistingActionResponse + '404': + application/json: BuilderWorkflowActionsUpdateExistingAction404Response + /api/builder/workflow_action/{workflow_action_id}/dispatch: + post: + '400': + application/json: BuilderWorkflowActionsDispatchServiceResultResponse + /api/builder/{builder_id}/domains: + get: + '200': + application/json: BuilderDomainsGetAllResponse + '400': + application/json: BuilderDomainsGetAll400Response + '404': + application/json: BuilderDomainsGetAll404Response + post: + '400': + application/json: BuilderDomainsCreateNewDomainResponse + '404': + application/json: BuilderDomainsCreateNewDomain404Response + /api/builder/{builder_id}/domains/order: + post: + '400': + application/json: BuilderDomainsApplyOrderResponse + '404': + application/json: BuilderDomainsApplyOrder404Response + /api/builder/{builder_id}/pages: + post: + '400': + application/json: BuilderPagesCreateNewPageResponse + '404': + application/json: BuilderPagesCreateNewPage404Response + /api/builder/{builder_id}/pages/order: + post: + '400': + application/json: BuilderPagesApplyOrderToPagesResponse + '404': + application/json: BuilderPagesApplyOrderToPages404Response + /api/builder/{builder_id}/theme: + patch: + '400': + application/json: BuilderThemeUpdatePropertiesResponse + '404': + application/json: BuilderThemeUpdateProperties404Response + /api/database/export/table/{table_id}: + post: + '400': + application/json: ExportTableResponse + '404': + application/json: ExportTable404Response + /api/database/export/{job_id}: + get: + '404': + application/json: DatabaseTableExportExportJobDetailsResponse + /api/database/fields/table/{table_id}: + get: + '200': + application/json: DatabaseTableFieldsGetTableFieldsResponse + '400': + application/json: DatabaseTableFieldsGetTableFields400Response + '401': + application/json: DatabaseTableFieldsGetTableFields401Response + '404': + application/json: DatabaseTableFieldsGetTableFields404Response + post: + '400': + application/json: DatabaseTableFieldsCreateNewFieldResponse + '401': + application/json: DatabaseTableFieldsCreateNewField401Response + '404': + application/json: DatabaseTableFieldsCreateNewField404Response + /api/database/fields/{field_id}: + delete: + '400': + application/json: DatabaseTableFieldsDeleteFieldResponse + '404': + application/json: DatabaseTableFieldsDeleteField404Response + get: + '400': + application/json: DatabaseTableFieldsGetFieldPropertiesResponse + '404': + application/json: DatabaseTableFieldsGetFieldProperties404Response + patch: + '400': + application/json: DatabaseTableFieldsUpdateFieldResponse + '404': + application/json: DatabaseTableFieldsUpdateField404Response + /api/database/fields/{field_id}/duplicate/async: + post: + '400': + application/json: DatabaseTableFieldsDuplicateAsyncResponse + '404': + application/json: DatabaseTableFieldsDuplicateAsync404Response + /api/database/fields/{field_id}/unique_row_values: + get: + '400': + application/json: DatabaseTableFieldsGetUniqueRowValuesResponse + '404': + application/json: DatabaseTableFieldsGetUniqueRowValues404Response + /api/database/formula/{table_id}/type: + post: + '400': + application/json: DatabaseTableFieldsCalculateFormulaTypeResponse + '404': + application/json: DatabaseTableFieldsCalculateFormulaType404Response + /api/database/rows/names: + get: + '200': + application/json: DatabaseTableRowsGetNamesOfRowResponse + '400': + application/json: DatabaseTableRowsGetNamesOfRow400Response + '401': + application/json: DatabaseTableRowsGetNamesOfRow401Response + '404': + application/json: DatabaseTableRowsGetNamesOfRow404Response + /api/database/rows/table/{table_id}: + get: + '400': + application/json: DatabaseTableRowsListTableRowsResponse + '401': + application/json: DatabaseTableRowsListTableRows401Response + '404': + application/json: DatabaseTableRowsListTableRows404Response + post: + '400': + application/json: DatabaseTableRowsCreateRowResponse + '401': + application/json: DatabaseTableRowsCreateRow401Response + '404': + application/json: DatabaseTableRowsCreateRow404Response + /api/database/rows/table/{table_id}/batch: + patch: + '400': + application/json: DatabaseTableRowsUpdateBatchRowsResponse + '401': + application/json: DatabaseTableRowsUpdateBatchRows401Response + '404': + application/json: DatabaseTableRowsUpdateBatchRows404Response + post: + '400': + application/json: DatabaseTableRowsCreateBatchRowsResponse + '401': + application/json: DatabaseTableRowsCreateBatchRows401Response + '404': + application/json: DatabaseTableRowsCreateBatchRows404Response + /api/database/rows/table/{table_id}/batch-delete: + post: + '400': + application/json: DatabaseTableRowsBatchDeleteResponse + '404': + application/json: DatabaseTableRowsBatchDelete404Response + /api/database/rows/table/{table_id}/{row_id}: + delete: + '400': + application/json: DatabaseTableRowsDeleteRowResponse + '404': + application/json: DatabaseTableRowsDeleteRow404Response + get: + '400': + application/json: DatabaseTableRowsGetRowByTableIdAndRowIdResponse + '401': + application/json: DatabaseTableRowsGetRowByTableIdAndRowId401Response + '404': + application/json: DatabaseTableRowsGetRowByTableIdAndRowId404Response + patch: + '400': + application/json: DatabaseTableRowsUpdateRowResponse + '401': + application/json: DatabaseTableRowsUpdateRow401Response + '404': + application/json: DatabaseTableRowsUpdateRow404Response + /api/database/rows/table/{table_id}/{row_id}/adjacent: + get: + '400': + application/json: DatabaseTableRowsGetAdjacentRowResponse + '404': + application/json: DatabaseTableRowsGetAdjacentRow404Response + /api/database/rows/table/{table_id}/{row_id}/history: + get: + '400': + application/json: DatabaseTableRowsGetRowChangeHistoryResponse + '404': + application/json: DatabaseTableRowsGetRowChangeHistory404Response + /api/database/rows/table/{table_id}/{row_id}/move: + patch: + '400': + application/json: DatabaseTableRowsMoveRowToResponse + '401': + application/json: DatabaseTableRowsMoveRowTo401Response + '404': + application/json: DatabaseTableRowsMoveRowTo404Response + /api/database/tables/database/{database_id}: + get: + '200': + application/json: DatabaseTablesListByDatabaseIdResponse + '400': + application/json: DatabaseTablesListByDatabaseId400Response + '404': + application/json: DatabaseTablesListByDatabaseId404Response + post: + '400': + application/json: DatabaseTablesCreateTableResponse + '404': + application/json: DatabaseTablesCreateTable404Response + /api/database/tables/database/{database_id}/async: + post: + '400': + application/json: DatabaseTablesCreateTableJobResponse + '404': + application/json: DatabaseTablesCreateTableJob404Response + /api/database/tables/database/{database_id}/order: + post: + '400': + application/json: DatabaseTablesUpdateTableOrderResponse + '404': + application/json: DatabaseTablesUpdateTableOrder404Response + /api/database/tables/{table_id}: + delete: + '400': + application/json: DatabaseTablesDeleteTableResponse + '404': + application/json: DatabaseTablesDeleteTable404Response + get: + '400': + application/json: DatabaseTablesGetTableResponse + '404': + application/json: DatabaseTablesGetTable404Response + patch: + '400': + application/json: DatabaseTablesUpdateTableResponse + '404': + application/json: DatabaseTablesUpdateTable404Response + /api/database/tables/{table_id}/duplicate/async: + post: + '400': + application/json: DatabaseTablesDuplicateAsyncJobResponse + '404': + application/json: DatabaseTablesDuplicateAsyncJob404Response + /api/database/tables/{table_id}/import/async: + post: + '400': + application/json: DatabaseTablesImportAsyncJobResponse + '404': + application/json: DatabaseTablesImportAsyncJob404Response + /api/database/tokens: + get: + '200': + application/json: DatabaseTokensListResponse + post: + '400': + application/json: DatabaseTokensCreateNewTokenResponse + /api/database/tokens/check: + get: + '403': + application/json: DatabaseTokensVerifyTokenValidityResponse + /api/database/tokens/{token_id}: + delete: + '400': + application/json: DatabaseTokensDeleteTokenResponse + '404': + application/json: DatabaseTokensDeleteToken404Response + get: + '400': + application/json: DatabaseTokensGetTokenResponse + '404': + application/json: DatabaseTokensGetToken404Response + patch: + '400': + application/json: DatabaseTokensUpdateTokenOwnershipResponse + '404': + application/json: DatabaseTokensUpdateTokenOwnership404Response + /api/database/view/{view_id}/premium: + patch: + '400': + application/json: DatabaseTableViewsSetPremiumAttributesResponse + '404': + application/json: DatabaseTableViewsSetPremiumAttributes404Response + /api/database/views/calendar/{slug}/public/rows: + get: + '400': + application/json: DatabaseTableCalendarViewGetPublicRowsResponse + '401': + application/json: DatabaseTableCalendarViewGetPublicRows401Response + '404': + application/json: DatabaseTableCalendarViewGetPublicRows404Response + /api/database/views/calendar/{view_id}: + get: + '400': + application/json: DatabaseTableCalendarViewGetGroupedRowsResponse + '404': + application/json: DatabaseTableCalendarViewGetGroupedRows404Response + /api/database/views/decoration/{view_decoration_id}: + delete: + '400': + application/json: DatabaseTableViewDecorationsDeleteExistingDecorationResponse + '404': + application/json: DatabaseTableViewDecorationsDeleteExistingDecoration404Response + get: + '400': + application/json: DatabaseTableViewDecorationsGetViewDecorationResponse + '404': + application/json: DatabaseTableViewDecorationsGetViewDecoration404Response + patch: + '400': + application/json: DatabaseTableViewDecorationsUpdateDecorationResponse + '404': + application/json: DatabaseTableViewDecorationsUpdateDecoration404Response + /api/database/views/filter-group/{filter_group_id}: + delete: + '400': + application/json: DatabaseTableViewFiltersDeleteFilterGroupResponse + '404': + application/json: DatabaseTableViewFiltersDeleteFilterGroup404Response + get: + '400': + application/json: DatabaseTableViewFiltersGetFilterGroupByIdResponse + '404': + application/json: DatabaseTableViewFiltersGetFilterGroupById404Response + patch: + '400': + application/json: DatabaseTableViewFiltersUpdateFilterGroupResponse + '404': + application/json: DatabaseTableViewFiltersUpdateFilterGroup404Response + /api/database/views/filter/{view_filter_id}: + delete: + '400': + application/json: DatabaseTableViewFiltersDeleteFilterResponse + '404': + application/json: DatabaseTableViewFiltersDeleteFilter404Response + get: + '400': + application/json: DatabaseTableViewFiltersGetViewFilterResponse + '404': + application/json: DatabaseTableViewFiltersGetViewFilter404Response + patch: + '400': + application/json: DatabaseTableViewFiltersUpdateExistingFilterResponse + '404': + application/json: DatabaseTableViewFiltersUpdateExistingFilter404Response + /api/database/views/form/{slug}/submit: + get: + '401': + application/json: DatabaseTableFormViewGetFormMetadataBySlugResponse + '404': + application/json: DatabaseTableFormViewGetFormMetadataBySlug404Response + post: + '401': + application/json: DatabaseTableFormViewSubmitFormResponse + '404': + application/json: DatabaseTableFormViewSubmitForm404Response + /api/database/views/form/{slug}/upload-file: + post: + '400': + application/json: DatabaseTableFormViewUploadFileResponse + '401': + application/json: DatabaseTableFormViewUploadFile401Response + '404': + application/json: DatabaseTableFormViewUploadFile404Response + /api/database/views/gallery/{slug}/public/rows: + get: + '400': + application/json: DatabaseTableGalleryViewListPublicRowsResponse + '401': + application/json: DatabaseTableGalleryViewListPublicRows401Response + '404': + application/json: DatabaseTableGalleryViewListPublicRows404Response + /api/database/views/gallery/{view_id}: + get: + '400': + application/json: DatabaseTableGalleryViewListRowsByViewIdResponse + '404': + application/json: DatabaseTableGalleryViewListRowsByViewId404Response + /api/database/views/grid/{slug}/public/rows: + get: + '400': + application/json: DatabaseTableGridViewListPublicRowsResponse + '401': + application/json: DatabaseTableGridViewListPublicRows401Response + '404': + application/json: DatabaseTableGridViewListPublicRows404Response + /api/database/views/grid/{view_id}: + get: + '400': + application/json: DatabaseTableGridViewGetViewRowsResponse + '404': + application/json: DatabaseTableGridViewGetViewRows404Response + post: + '200': + application/json: DatabaseTableGridViewGetFilteredDataResponse + '400': + application/json: DatabaseTableGridViewGetFilteredData400Response + '404': + application/json: DatabaseTableGridViewGetFilteredData404Response + /api/database/views/grid/{view_id}/aggregation/{field_id}: + get: + '200': + application/json: DatabaseTableGridViewComputeAggregationResponse + '400': + application/json: DatabaseTableGridViewComputeAggregation400Response + '404': + application/json: DatabaseTableGridViewComputeAggregation404Response + /api/database/views/grid/{view_id}/aggregations: + get: + '200': + application/json: DatabaseTableGridViewGetFieldAggregationsResponse + '400': + application/json: DatabaseTableGridViewGetFieldAggregations400Response + '404': + application/json: DatabaseTableGridViewGetFieldAggregations404Response + /api/database/views/group_by/{view_group_by_id}: + delete: + '400': + application/json: DatabaseTableViewGroupingsDeleteGroupByResponse + '404': + application/json: DatabaseTableViewGroupingsDeleteGroupBy404Response + get: + '400': + application/json: DatabaseTableViewGroupingsGetViewGroupByResponse + '404': + application/json: DatabaseTableViewGroupingsGetViewGroupBy404Response + patch: + '400': + application/json: DatabaseTableViewGroupingsUpdateGroupByResponse + '404': + application/json: DatabaseTableViewGroupingsUpdateGroupBy404Response + /api/database/views/kanban/{slug}/public/rows: + get: + '400': + application/json: DatabaseTableKanbanViewGetPublicRowsBySlugResponse + '401': + application/json: DatabaseTableKanbanViewGetPublicRowsBySlug401Response + '404': + application/json: DatabaseTableKanbanViewGetPublicRowsBySlug404Response + /api/database/views/kanban/{view_id}: + get: + '400': + application/json: DatabaseTableKanbanViewGetSerializedRowsByViewIdResponse + '404': + application/json: DatabaseTableKanbanViewGetSerializedRowsByViewId404Response + /api/database/views/sort/{view_sort_id}: + delete: + '400': + application/json: DatabaseTableViewSortingsDeleteByIdResponse + '404': + application/json: DatabaseTableViewSortingsDeleteById404Response + get: + '400': + application/json: DatabaseTableViewSortingsGetSortByIdResponse + '404': + application/json: DatabaseTableViewSortingsGetSortById404Response + patch: + '400': + application/json: DatabaseTableViewSortingsUpdateByIdResponse + '404': + application/json: DatabaseTableViewSortingsUpdateById404Response + /api/database/views/table/{table_id}: + get: + '200': + application/json: DatabaseTableViewsListTableViewsResponse + '400': + application/json: DatabaseTableViewsListTableViews400Response + '404': + application/json: DatabaseTableViewsListTableViews404Response + post: + '400': + application/json: DatabaseTableViewsCreateNewViewResponse + '404': + application/json: DatabaseTableViewsCreateNewView404Response + /api/database/views/table/{table_id}/order: + post: + '400': + application/json: DatabaseTableViewsReorderTableOrderResponse + '404': + application/json: DatabaseTableViewsReorderTableOrder404Response + /api/database/views/{slug}/link-row-field-lookup/{field_id}: + get: + '401': + application/json: DatabaseTableViewsGetLinkRowFieldValueResponse + '404': + application/json: DatabaseTableViewsGetLinkRowFieldValue404Response + /api/database/views/{slug}/public/auth: + post: + '401': + application/json: DatabaseTableViewsGenerateTokenResponse + '404': + application/json: DatabaseTableViewsGenerateToken404Response + /api/database/views/{slug}/public/info: + get: + '400': + application/json: DatabaseTableViewsGetPublicInfoResponse + '401': + application/json: DatabaseTableViewsGetPublicInfo401Response + '404': + application/json: DatabaseTableViewsGetPublicInfo404Response + /api/database/views/{view_id}: + delete: + '400': + application/json: DatabaseTableViewsDeleteViewResponse + '404': + application/json: DatabaseTableViewsDeleteView404Response + get: + '400': + application/json: DatabaseTableViewsGetViewByIdResponse + '404': + application/json: DatabaseTableViewsGetViewById404Response + patch: + '400': + application/json: DatabaseTableViewsUpdateViewResponse + '404': + application/json: DatabaseTableViewsUpdateView404Response + /api/database/views/{view_id}/decorations: + get: + '200': + application/json: DatabaseTableViewDecorationsListResponse + '400': + application/json: DatabaseTableViewDecorationsList400Response + '404': + application/json: DatabaseTableViewDecorationsList404Response + post: + '400': + application/json: DatabaseTableViewDecorationsCreateNewResponse + '404': + application/json: DatabaseTableViewDecorationsCreateNew404Response + /api/database/views/{view_id}/duplicate: + post: + '400': + application/json: DatabaseTableViewsDuplicateViewResponse + '404': + application/json: DatabaseTableViewsDuplicateView404Response + /api/database/views/{view_id}/field-options: + get: + '400': + application/json: DatabaseTableViewsGetFieldOptionsResponse + '404': + application/json: DatabaseTableViewsGetFieldOptions404Response + patch: + '400': + application/json: DatabaseTableViewsUpdateFieldOptionsResponse + '404': + application/json: DatabaseTableViewsUpdateFieldOptions404Response + /api/database/views/{view_id}/filter-groups: + post: + '400': + application/json: DatabaseTableViewFiltersCreateNewFilterGroupResponse + '404': + application/json: DatabaseTableViewFiltersCreateNewFilterGroup404Response + /api/database/views/{view_id}/filters: + get: + '200': + application/json: DatabaseTableViewFiltersGetListResponse + '400': + application/json: DatabaseTableViewFiltersGetList400Response + '404': + application/json: DatabaseTableViewFiltersGetList404Response + post: + '400': + application/json: DatabaseTableViewFiltersCreateNewFilterResponse + '404': + application/json: DatabaseTableViewFiltersCreateNewFilter404Response + /api/database/views/{view_id}/group_bys: + get: + '200': + application/json: DatabaseTableViewGroupingsListResponse + '400': + application/json: DatabaseTableViewGroupingsList400Response + '404': + application/json: DatabaseTableViewGroupingsList404Response + post: + '400': + application/json: DatabaseTableViewGroupingsCreateNewGroupingResponse + '404': + application/json: DatabaseTableViewGroupingsCreateNewGrouping404Response + /api/database/views/{view_id}/rotate-slug: + post: + '400': + application/json: DatabaseTableViewsRotateSlugResponse + '404': + application/json: DatabaseTableViewsRotateSlug404Response + /api/database/views/{view_id}/sortings: + get: + '200': + application/json: DatabaseTableViewSortingsListResponse + '400': + application/json: DatabaseTableViewSortingsList400Response + '404': + application/json: DatabaseTableViewSortingsList404Response + post: + '400': + application/json: DatabaseTableViewSortingsCreateNewSortResponse + '404': + application/json: DatabaseTableViewSortingsCreateNewSort404Response + /api/database/webhooks/table/{table_id}: + get: + '200': + application/json: DatabaseTableWebhooksListResponse + '400': + application/json: DatabaseTableWebhooksList400Response + '404': + application/json: DatabaseTableWebhooksList404Response + post: + '400': + application/json: DatabaseTableWebhooksCreateWebhookResponse + '404': + application/json: DatabaseTableWebhooksCreateWebhook404Response + /api/database/webhooks/table/{table_id}/test-call: + post: + '400': + application/json: DatabaseTableWebhooksTriggerTestCallResponse + '404': + application/json: DatabaseTableWebhooksTriggerTestCall404Response + /api/database/webhooks/{webhook_id}: + delete: + '400': + application/json: DatabaseTableWebhooksDeleteWebhookResponse + '404': + application/json: DatabaseTableWebhooksDeleteWebhook404Response + get: + '400': + application/json: DatabaseTableWebhooksGetExistingWebhookResponse + '404': + application/json: DatabaseTableWebhooksGetExistingWebhook404Response + patch: + '400': + application/json: DatabaseTableWebhooksUpdateViewResponse + '404': + application/json: DatabaseTableWebhooksUpdateView404Response + /api/groups: + get: + '200': + application/json: ListGroupsResponse + /api/groups/invitations/group/{group_id}: + get: + '200': + application/json: GroupInvitationsListForGroupResponse + '400': + application/json: GroupInvitationsListForGroup400Response + '404': + application/json: GroupInvitationsListForGroup404Response + post: + '400': + application/json: GroupInvitationsCreateNewInvitationResponse + '404': + application/json: GroupInvitationsCreateNewInvitation404Response + /api/groups/invitations/token/{token}: + get: + '400': + application/json: GroupInvitationsFindByTokenResponse + '404': + application/json: GroupInvitationsFindByToken404Response + /api/groups/invitations/{group_invitation_id}: + delete: + '400': + application/json: GroupInvitationsDeleteInvitationResponse + '404': + application/json: GroupInvitationsDeleteInvitation404Response + get: + '400': + application/json: GroupInvitationsGetByIdResponse + '404': + application/json: GroupInvitationsGetById404Response + patch: + '400': + application/json: GroupInvitationsUpdateRelatedInvitationResponse + '404': + application/json: GroupInvitationsUpdateRelatedInvitation404Response + /api/groups/invitations/{group_invitation_id}/accept: + post: + '400': + application/json: GroupInvitationsAcceptGroupInvitationResponse + '404': + application/json: GroupInvitationsAcceptGroupInvitation404Response + /api/groups/invitations/{group_invitation_id}/reject: + post: + '400': + application/json: GroupInvitationsRejectGroupInvitationResponse + '404': + application/json: GroupInvitationsRejectGroupInvitation404Response + /api/groups/users/group/{group_id}: + get: + '200': + application/json: GroupsListGroupUsersResponse + '400': + application/json: GroupsListGroupUsers400Response + '404': + application/json: GroupsListGroupUsers404Response + /api/groups/users/{group_user_id}: + delete: + '400': + application/json: GroupsDeleteGroupUserResponse + '404': + application/json: GroupsDeleteGroupUser404Response + patch: + '400': + application/json: GroupsUpdateGroupUserResponse + '404': + application/json: GroupsUpdateGroupUser404Response + /api/groups/{group_id}: + delete: + '400': + application/json: DeleteGroupResponse + '404': + application/json: DeleteGroup404Response + patch: + '400': + application/json: UpdateGroupResponse + '404': + application/json: UpdateGroup404Response + /api/groups/{group_id}/leave: + post: + '400': + application/json: LeaveGroupResponse + '404': + application/json: LeaveGroup404Response + /api/groups/{group_id}/permissions: + get: + '200': + application/json: GroupPermissionsResponse + '404': + application/json: GroupPermissions404Response + /api/integration/{integration_id}: + delete: + '400': + application/json: IntegrationsDeleteByIdResponse + '404': + application/json: IntegrationsDeleteById404Response + patch: + '400': + application/json: IntegrationsUpdateExistingIntegrationResponse + '404': + application/json: IntegrationsUpdateExistingIntegration404Response + /api/integration/{integration_id}/move: + patch: + '400': + application/json: IntegrationsMoveIntegrationResponse + '404': + application/json: IntegrationsMoveIntegration404Response + /api/jobs: + get: + '200': + application/json: ListJobResponse + post: + '400': + application/json: CreateJobResponse + '404': + application/json: CreateJob404Response + /api/jobs/{job_id}: + get: + '404': + application/json: GetJobResponse + /api/licenses: + get: + '200': + application/json: AdminLicensesResponse + post: + '400': + application/json: AdminRegisterLicenseResponse + /api/licenses/{id}: + delete: + '404': + application/json: AdminRemoveLicenseResponse + get: + '404': + application/json: AdminGetLicenseDetailsResponse + /api/licenses/{id}/check: + get: + '404': + application/json: AdminCheckLicenseStatusResponse + /api/licenses/{id}/fill-seats: + post: + '200': + application/json: AdminFillSeatsLicenseResponse + '400': + application/json: AdminFillSeatsLicense400Response + '404': + application/json: AdminFillSeatsLicense404Response + /api/licenses/{id}/lookup-users: + get: + '404': + application/json: AdminLookupUsersResponse + /api/licenses/{id}/remove-all-users: + post: + '400': + application/json: AdminRemoveAllUsersResponse + '404': + application/json: AdminRemoveAllUsers404Response + /api/licenses/{id}/{user_id}: + delete: + '400': + application/json: AdminRemoveUserFromLicenseResponse + '404': + application/json: AdminRemoveUserFromLicense404Response + post: + '400': + application/json: AdminAddUserToLicenseResponse + '404': + application/json: AdminAddUserToLicense404Response + /api/notifications/{workspace_id}: + delete: + '400': + application/json: NotificationsClearWorkspaceNotificationsResponse + '404': + application/json: NotificationsClearWorkspaceNotifications404Response + get: + '400': + application/json: NotificationsListForWorkspaceAndUserResponse + '404': + application/json: NotificationsListForWorkspaceAndUser404Response + /api/notifications/{workspace_id}/mark-all-as-read: + post: + '400': + application/json: NotificationsMarkAllAsReadResponse + '404': + application/json: NotificationsMarkAllAsRead404Response + /api/notifications/{workspace_id}/{notification_id}: + patch: + '400': + application/json: NotificationsMarkAsReadResponse + '404': + application/json: NotificationsMarkAsRead404Response + /api/role/{group_id}: + get: + '200': + application/json: RoleAssignmentsListWithinGroupResponse + '400': + application/json: RoleAssignmentsListWithinGroup400Response + '404': + application/json: RoleAssignmentsListWithinGroup404Response + post: + '400': + application/json: RoleAssignmentsAssignRoleToGroupResponse + '404': + application/json: RoleAssignmentsAssignRoleToGroup404Response + /api/role/{group_id}/batch: + post: + '200': + application/json: RoleAssignmentsAssignMultipleSubjectsToGroupResponse + '400': + application/json: RoleAssignmentsAssignMultipleSubjectsToGroup400Response + '404': + application/json: RoleAssignmentsAssignMultipleSubjectsToGroup404Response + /api/role/{workspace_id}: + get: + '200': + application/json: RoleAssignmentsListWithinWorkspaceScopeResponse + '400': + application/json: RoleAssignmentsListWithinWorkspaceScope400Response + '404': + application/json: RoleAssignmentsListWithinWorkspaceScope404Response + post: + '400': + application/json: AssignRoleResponse + '404': + application/json: AssignRole404Response + /api/role/{workspace_id}/batch: + post: + '200': + application/json: RoleAssignmentsAssignRoleToGroup200Response + '400': + application/json: RoleAssignmentsAssignRoleToGroup400Response + '404': + application/json: RoleAssignmentsAssignRoleToGroup404Response + /api/row_comments/{table_id}/comment/{comment_id}: + delete: + '400': + application/json: DatabaseTableRowsDeleteCommentResponse + '401': + application/json: DatabaseTableRowsDeleteComment401Response + '404': + application/json: DatabaseTableRowsDeleteComment404Response + patch: + '400': + application/json: DatabaseTableRowsUpdateCommentResponse + '401': + application/json: DatabaseTableRowsUpdateComment401Response + '404': + application/json: DatabaseTableRowsUpdateComment404Response + /api/row_comments/{table_id}/{row_id}: + get: + '400': + application/json: DatabaseTableRowsGetAllCommentsResponse + '404': + application/json: DatabaseTableRowsGetAllComments404Response + post: + '400': + application/json: DatabaseTableRowsCreateCommentResponse + '404': + application/json: DatabaseTableRowsCreateComment404Response + /api/row_comments/{table_id}/{row_id}/notification-mode: + put: + '400': + application/json: DatabaseTableRowsUpdateNotificationModeResponse + '404': + application/json: DatabaseTableRowsUpdateNotificationMode404Response + /api/snapshots/application/{application_id}: + get: + '200': + application/json: ListSnapshotsResponse + '400': + application/json: ListSnapshots400Response + '404': + application/json: ListSnapshots404Response + post: + '400': + application/json: CreateSnapshotResponse + '404': + application/json: CreateSnapshot404Response + /api/snapshots/{snapshot_id}: + delete: + '400': + application/json: DeleteSnapshotResponse + '404': + application/json: DeleteSnapshot404Response + /api/snapshots/{snapshot_id}/restore: + post: + '400': + application/json: RestoreSnapshotResponse + '404': + application/json: RestoreSnapshot404Response + /api/sso/saml/login-url: + get: + '200': + application/json: AuthGetSamlLoginUrlResponse + '400': + application/json: AuthGetSamlLoginUrl400Response + /api/teams/group/{group_id}: + get: + '200': + application/json: TeamsGetAllInGroupResponse + '404': + application/json: TeamsGetAllInGroup404Response + post: + '400': + application/json: TeamsCreateInGroupResponse + '404': + application/json: TeamsCreateInGroup404Response + /api/teams/workspace/{workspace_id}: + get: + '200': + application/json: TeamsListInWorkspaceResponse + '404': + application/json: TeamsListInWorkspace404Response + post: + '400': + application/json: TeamsCreateNewTeamResponse + '404': + application/json: TeamsCreateNewTeam404Response + /api/teams/{team_id}: + delete: + '400': + application/json: DeleteTeamResponse + '404': + application/json: DeleteTeam404Response + get: + '404': + application/json: GetTeamResponse + put: + '400': + application/json: UpdateTeamResponse + '404': + application/json: UpdateTeam404Response + /api/teams/{team_id}/subjects: + get: + '200': + application/json: TeamsListSubjectsResponse + '400': + application/json: TeamsListSubjects400Response + post: + '400': + application/json: CreateSubjectResponse + '404': + application/json: CreateSubject404Response + /api/teams/{team_id}/subjects/{subject_id}: + delete: + '400': + application/json: DeleteSubjectResponse + '404': + application/json: DeleteSubject404Response + get: + '404': + application/json: GetSubjectResponse + /api/templates: + get: + '200': + application/json: ListTemplatesResponse + /api/templates/install/{group_id}/{template_id}: + post: + '200': + application/json: TemplatesInstallApplicationsResponse + '400': + application/json: TemplatesInstallApplications400Response + '404': + application/json: TemplatesInstallApplications404Response + /api/templates/install/{group_id}/{template_id}/async: + post: + '400': + application/json: TemplatesStartAsyncJobResponse + '404': + application/json: TemplatesStartAsyncJob404Response + /api/templates/install/{workspace_id}/{template_id}: + post: + '200': + application/json: InstallTemplateResponse + '400': + application/json: InstallTemplate400Response + '404': + application/json: InstallTemplate404Response + /api/templates/install/{workspace_id}/{template_id}/async: + post: + '400': + application/json: TemplatesStartAsyncJob400Response + '404': + application/json: TemplatesStartAsyncJob404Response + /api/trash/group/{group_id}: + delete: + '400': + application/json: TrashEmptyGroupContentsResponse + get: + '400': + application/json: TrashGetGroupContentsResponse + /api/trash/restore: + patch: + '400': + application/json: TrashRestoreItemResponse + /api/trash/workspace/{workspace_id}: + delete: + '400': + application/json: TrashEmptyWorkspaceResponse + get: + '400': + application/json: TrashGetWorkspaceTrashContentsResponse + /api/user: + post: + '200': + application/json: CreateUserResponse + '400': + application/json: CreateUser400Response + '404': + application/json: CreateUser404Response + /api/user-files/upload-file: + post: + '400': + application/json: UploadFileResponse + /api/user-files/upload-via-url: + post: + '400': + application/json: UserFilesUploadViaUrlResponse + /api/user-source-auth-refresh: + post: + '200': + application/json: UserSourcesRefreshAccessTokenResponse + '401': + application/json: UserSourcesRefreshAccessToken401Response + /api/user-source-token-blacklist: + post: + '401': + application/json: UserSourcesBlacklistTokenResponse + /api/user-source/{user_source_id}: + delete: + '400': + application/json: UserSourcesRemoveByIdResponse + '404': + application/json: UserSourcesRemoveById404Response + patch: + '400': + application/json: UserSourcesUpdateExistingUserSourceResponse + '404': + application/json: UserSourcesUpdateExistingUserSource404Response + /api/user-source/{user_source_id}/force-token-auth: + post: + '200': + application/json: UserSourcesForceTokenAuthResponse + '401': + application/json: UserSourcesForceTokenAuth401Response + /api/user-source/{user_source_id}/move: + patch: + '400': + application/json: UserSourcesRearrangeUserSourceResponse + '404': + application/json: UserSourcesRearrangeUserSource404Response + /api/user-source/{user_source_id}/token-auth: + post: + '200': + application/json: UserSourcesAuthenticateUserWithTokenResponse + '401': + application/json: UserSourcesAuthenticateUserWithToken401Response + /api/user/account: + patch: + '400': + application/json: UpdateAccountResponse + /api/user/change-password: + post: + '400': + application/json: ChangePasswordResponse + /api/user/reset-password: + post: + '400': + application/json: ResetPasswordResponse + /api/user/schedule-account-deletion: + post: + '400': + application/json: UserScheduleAccountDeletionResponse + /api/user/send-reset-password-email: + post: + '400': + application/json: UserSendResetPasswordEmailResponse + /api/user/token-auth: + post: + '200': + application/json: TokenAuthResponse + '401': + application/json: TokenAuth401Response + /api/user/token-blacklist: + post: + '401': + application/json: TokenBlacklistResponse + /api/user/token-refresh: + post: + '200': + application/json: TokenRefreshResponse + '401': + application/json: TokenRefresh401Response + /api/user/token-verify: + post: + '200': + application/json: TokenVerifyResponse + '401': + application/json: TokenVerify401Response + /api/workspaces: + get: + '200': + application/json: ListWorkspacesResponse + /api/workspaces/invitations/token/{token}: + get: + '400': + application/json: WorkspaceInvitationsGetByTokenResponse + '404': + application/json: WorkspaceInvitationsGetByToken404Response + /api/workspaces/invitations/workspace/{workspace_id}: + get: + '200': + application/json: WorkspaceInvitationsListResponse + '400': + application/json: WorkspaceInvitationsList400Response + '404': + application/json: WorkspaceInvitationsList404Response + post: + '400': + application/json: WorkspaceInvitationsCreateInviteResponse + '404': + application/json: WorkspaceInvitationsCreateInvite404Response + /api/workspaces/invitations/{workspace_invitation_id}: + delete: + '400': + application/json: WorkspaceInvitationsDeleteInvitationResponse + '404': + application/json: WorkspaceInvitationsDeleteInvitation404Response + get: + '400': + application/json: WorkspaceInvitationsGetByIdResponse + '404': + application/json: WorkspaceInvitationsGetById404Response + patch: + '400': + application/json: WorkspaceInvitationsUpdateExistingInvitationResponse + '404': + application/json: WorkspaceInvitationsUpdateExistingInvitation404Response + /api/workspaces/invitations/{workspace_invitation_id}/accept: + post: + '400': + application/json: WorkspaceInvitationsAcceptInvitationResponse + '404': + application/json: WorkspaceInvitationsAcceptInvitation404Response + /api/workspaces/invitations/{workspace_invitation_id}/reject: + post: + '400': + application/json: WorkspaceInvitationsRejectInvitationResponse + '404': + application/json: WorkspaceInvitationsRejectInvitation404Response + /api/workspaces/users/workspace/{workspace_id}: + get: + '200': + application/json: WorkspacesListUsersInWorkspaceResponse + '400': + application/json: WorkspacesListUsersInWorkspace400Response + '404': + application/json: WorkspacesListUsersInWorkspace404Response + /api/workspaces/users/{workspace_user_id}: + delete: + '400': + application/json: WorkspacesDeleteUserResponse + '404': + application/json: WorkspacesDeleteUser404Response + patch: + '400': + application/json: WorkspacesUpdateWorkspaceUserResponse + '404': + application/json: WorkspacesUpdateWorkspaceUser404Response + /api/workspaces/{workspace_id}: + delete: + '400': + application/json: DeleteWorkspaceResponse + '404': + application/json: DeleteWorkspace404Response + patch: + '400': + application/json: UpdateWorkspaceResponse + '404': + application/json: UpdateWorkspace404Response + /api/workspaces/{workspace_id}/leave: + post: + '400': + application/json: LeaveWorkspaceResponse + '404': + application/json: LeaveWorkspace404Response + /api/workspaces/{workspace_id}/permissions: + get: + '200': + application/json: WorkspacePermissionsResponse + '404': + application/json: WorkspacePermissions404Response +securityParameters: + ClientSessionId: + header: false + ClientUndoRedoActionGroupId: + header: false + action_type: + query: false + application_id: + query: false + before: + query: false + before_id: + query: false + code: + query: false + count: + query: false + domain: + query: false + email: + query: false + exclude: + query: false + exclude_fields: + query: false + filter__{field}__{filter}: + query: false + filter_type: + query: false + filters: + query: false + from_timestamp: + query: false + group_by: + query: false + group_invitation_token: + query: false + include: + query: false + include_fields: + query: false + job_ids: + query: false + language: + query: false + limit: + query: false + offset: + query: false + order_by: + query: false + original: + query: false + page: + query: false + previous: + query: false + scope_id: + query: false + scope_type: + query: false + search: + query: false + search_mode: + query: false + select_option: + query: false + size: + query: false + sorts: + query: false + split_comma_separated: + query: false + states: + query: false + table__{id}: + query: false + to_timestamp: + query: false + type: + query: false + user_field_names: + query: false + user_id: + query: false + user_timezone: + query: false + view_id: + query: false + workspace_id: + query: false + workspace_invitation_token: + query: false +validServerUrls: + api.baserow.io: + url: api.baserow.io diff --git a/sdks/db/progress/browse-ai-progress.yaml b/sdks/db/progress/browse-ai-progress.yaml new file mode 100644 index 0000000000..7757904035 --- /dev/null +++ b/sdks/db/progress/browse-ai-progress.yaml @@ -0,0 +1,64 @@ +examples: {} +examples_2: {} +examples_3: {} +operationIds: + /robots: + get: Robots_listRetrieval + /robots/{robotId}: + get: Robots_getById + /robots/{robotId}/bulk-runs: + get: BulkRuns_getList + post: BulkRuns_executeTasks + /robots/{robotId}/bulk-runs/{bulkRunId}: + get: BulkRuns_getRobotBulkRun + /robots/{robotId}/cookies: + patch: Robots_updateCookies + /robots/{robotId}/monitors: + get: Monitors_getList + post: Monitors_createNew + /robots/{robotId}/monitors/{monitorId}: + delete: Monitors_deleteRobotMonitor + get: Monitors_getRobotMonitor + patch: Monitors_updateRobotMonitor + /robots/{robotId}/tasks: + get: Tasks_getAllByRobot + post: Tasks_runRobotTask + /robots/{robotId}/tasks/{taskId}: + get: Tasks_getTaskDetails + /robots/{robotId}/webhooks: + get: Webhooks_getList + post: Webhooks_createNewOnRobot + /robots/{robotId}/webhooks/{webhookId}: + delete: Webhooks_deleteRobotWebhook + /status: + get: System_checkInfrastructureStatus + /teams: + get: Internal_getTeamsByAuth0AccessToken +operationTags: {} +renameTags: {} +requestSchemaNames: + /robots/{robotId}/cookies: + patch: + application/json: RobotsUpdateCookiesRequest +responseDescriptions: {} +responseSchemaNames: {} +securityParameters: + authorization: + header: false + fromDate: + query: false + includeRetried: + query: false + page: + query: false + pageSize: + query: false + robotBulkRunId: + query: false + sort: + query: false + status: + query: false + toDate: + query: false +validServerUrls: {} diff --git a/sdks/db/progress/chat-kitty-progress.yaml b/sdks/db/progress/chat-kitty-progress.yaml new file mode 100644 index 0000000000..4753312605 --- /dev/null +++ b/sdks/db/progress/chat-kitty-progress.yaml @@ -0,0 +1,193 @@ +examples: {} +examples_2: {} +examples_3: {} +ignoreObjectsWithNoProperties: true +operationIds: + /v1/analytics/messages: + post: Analytics_exportMessageAnalyticsData + /v1/analytics/users: + post: Analytics_exportUserAnalyticsData + /v1/application: + get: Application_getAuthenticated + /v1/application/settings: + get: Application_getSettings + put: Application_updateSettings + /v1/channels: + get: Channels_list + post: Channels_createChannel + /v1/channels/{id}: + delete: Channels_deleteById + get: Channels_getById + patch: Channels_updateProperties + /v1/channels/{id}/events: + post: Channels_sendEvent + /v1/channels/{id}/invites: + get: Channels_listInvites + post: Channels_sendInvite + /v1/channels/{id}/keystrokes: + post: Channels_sendKeystrokes + /v1/channels/{id}/members: + get: Channels_listMembersPage + post: Channels_addMember + /v1/channels/{id}/members/{user_id}: + delete: Channels_removeMember + /v1/channels/{id}/memberships: + get: Channels_listMembershipsPage + /v1/channels/{id}/messages: + get: Channels_listMessagesPage + post: Channels_sendChannelMessage + /v1/channels/{id}/moderators: + get: Channels_listModeratorsPage + post: Channels_addModerator + /v1/channels/{id}/moderators/{user_id}: + delete: Channels_removeModerator + /v1/channels/{id}/participants: + get: Channels_listParticipantsPage + /v1/channels/{id}/reported-messages: + get: Channels_listReportedMessagesPage + /v1/chat-sessions: + get: Chatsessions_listPage + /v1/function-versions/{id}: + get: Functionversions_getById + /v1/functions/{id}: + get: Functions_getById + /v1/functions/{id}/current-version: + get: Functions_getCurrentVersion + /v1/functions/{id}/invocations: + get: Functions_listInvocationsPage + /v1/functions/{id}/versions: + get: Functions_listVersionsPage + post: Functions_createFunctionVersion + /v1/imports/channels: + post: Imports_batchChannels + /v1/imports/channels/{id}/members: + post: Imports_channelMembersBatch + /v1/imports/messages: + post: Imports_batchMessagesFromJson + /v1/imports/users: + post: Imports_jsonUsersBatch + /v1/jobs: + get: Jobs_listJobsPage + /v1/jobs/{id}: + get: Jobs_getJobById + /v1/messages: + delete: Messages_deleteAll + get: Messages_listPage + /v1/messages/{id}: + delete: Messages_removeById + get: Messages_getById + patch: Messages_updateProperties + /v1/messages/{id}/read-receipts: + get: Messages_listReadReceipts + /v1/runtimes/nodejs: + get: Runtime_getNodejsChatRuntime + /v1/runtimes/nodejs/dependencies: + put: Runtime_updateNodejsChatDependencies + /v1/runtimes/nodejs/environment-variables: + put: Runtime_updateNodejsChatEnvironmentVariables + /v1/runtimes/nodejs/functions: + get: Runtime_listNodejsChatFunctions + post: Runtime_createNodejsChatFunction + /v1/runtimes/nodejs/initialization-script: + put: Runtime_updateNodejsChatInitializationScript + /v1/threads/{id}: + get: Threads_getById + /v1/threads/{id}/keystrokes: + post: Threads_sendKeystrokes + /v1/threads/{id}/messages: + get: Threads_listThreadMessages + post: Threads_sendReplyMessage + /v1/user-sessions: + get: Usersessions_listUserSessions + /v1/users: + get: Users_getPage + head: Users_checkExists + post: Users_createUser + /v1/users/{id}: + delete: Users_removeUser + get: Users_getById + patch: Users_updateUserById + /v1/users/{id}/channels: + get: Users_listChannelsPage + /v1/users/{id}/display-picture: + post: Users_updateDisplayPicture + /v1/users/{id}/messages: + get: Users_listMessagesPage + /v1/users/{id}/notifications: + get: Users_listNotificationsPage + /v1/users/{id}/secrets/{name}: + delete: Users_removeSecretValue + get: Users_getSecret + put: Users_setUserSecret +operationTags: {} +renameTags: {} +requestSchemaNames: + /v1/channels/{id}/messages: + post: + multipart/form-data: ChannelsSendChannelMessageRequest + /v1/imports/channels: + post: + multipart/form-data: ImportsBatchChannelsRequest + /v1/imports/channels/{id}/members: + post: + multipart/form-data: ImportsChannelMembersBatchRequest + /v1/imports/messages: + post: + multipart/form-data: ImportsBatchMessagesFromJsonRequest + /v1/imports/users: + post: + multipart/form-data: ImportsJsonUsersBatchRequest + /v1/runtimes/nodejs/dependencies: + put: + application/vnd.chatkitty+json: RuntimeUpdateNodejsChatDependenciesRequest + /v1/threads/{id}/messages: + post: + multipart/form-data: ThreadsSendReplyMessageRequest + /v1/users/{id}/display-picture: + post: + multipart/form-data: UsersUpdateDisplayPictureRequest +responseDescriptions: {} +responseSchemaNames: + /v1/users: + head: + '200': + application/hal+json: UsersCheckExists200Response + application/json: UsersCheckExistsResponse + application/vnd.chatkitty+json: UsersCheckExists200Response + application/vnd.hal+json: UsersCheckExists200Response +securityParameters: + endTime: + query: false + members: + query: false + name: + query: false + next: + query: false + page: + query: false + properties: + query: false + query: + query: false + relation: + query: false + running: + query: false + size: + query: false + sort: + query: false + start: + query: false + startTime: + query: false + state: + query: false + type: + query: false + unread: + query: false + username: + query: false +validServerUrls: {} diff --git a/sdks/db/progress/miso-progress.yaml b/sdks/db/progress/miso-progress.yaml new file mode 100644 index 0000000000..255f89e81f --- /dev/null +++ b/sdks/db/progress/miso-progress.yaml @@ -0,0 +1,165 @@ +examples: {} +examples_2: {} +examples_3: {} +ignorePotentialIncorrectType: true +operationIds: + /v1/ask/questions: + post: AskApIs_submitQuestion + /v1/ask/questions/{question_id}/answer: + get: AskApIs_getAnswerStage + /v1/bulk: + post: BulkApi_requestPost + /v1/experiments/{experiment_id_or_slug}/events: + post: ExperimentApIs_sendEvent + /v1/interactions: + delete: InteractionApIs_removeData + post: InteractionApIs_insertRecords + /v1/products: + post: ProductContentApIs_bulkInsert + /v1/products/_delete: + post: ProductContentApIs_bulkDelete + /v1/products/_ids: + get: ProductContentApIs_getProductIds + /v1/products/{product_id}: + delete: ProductContentApIs_deleteProductContent + get: ProductContentApIs_getProductDetails + /v1/qa/question_answering: + post: QaApIs_extractAnswer + /v1/qa/question_autocomplete: + post: QaApIs_getAutocomplete + /v1/qa/questions: + post: QaApIs_uploadQuestionBank + /v1/recommendation/product_to_products: + post: RecommendationApIs_getRelatedProducts + /v1/recommendation/user_to_attributes: + post: RecommendationApIs_getUserAttributes + /v1/recommendation/user_to_categories: + post: RecommendationApIs_getUserCategories + /v1/recommendation/user_to_products: + post: RecommendationApIs_getRecommendedProducts + /v1/recommendation/user_to_trending: + post: RecommendationApIs_getUserTrending + /v1/search/autocomplete: + post: SearchApIs_autocompleteRequest + /v1/search/mget: + post: SearchApIs_multipleGetProducts + /v1/search/search: + post: SearchApIs_searchRequest + /v1/users: + post: UserApIs_bulkUpload + /v1/users/_delete: + post: UserApIs_bulkUserDelete + /v1/users/{user_id}: + delete: UserApIs_deleteUser + get: UserApIs_getUserDetails +operationTags: {} +renameTags: {} +requestSchemaNames: {} +responseDescriptions: {} +responseSchemaNames: + /v1/experiments/{experiment_id_or_slug}/events: + post: + '401': + application/json: ExperimentApIsSendEventResponse + '404': + application/json: ExperimentApIsSendEvent404Response + '422': + application/json: ExperimentApIsSendEvent422Response + /v1/interactions: + post: + '401': + application/json: InteractionApIsInsertRecordsResponse + '403': + application/json: InteractionApIsInsertRecords403Response + '422': + application/json: InteractionApIsInsertRecords422Response + /v1/products: + post: + '400': + application/json: ProductContentApIsBulkInsertResponse + '401': + application/json: ProductContentApIsBulkInsert401Response + '403': + application/json: ProductContentApIsBulkInsert403Response + '422': + application/json: ProductContentApIsBulkInsert422Response + '500': + application/json: ProductContentApIsBulkInsert500Response + /v1/products/_delete: + post: + '400': + application/json: ProductContentApIsBulkDeleteResponse + '401': + application/json: ProductContentApIsBulkDelete401Response + '403': + application/json: ProductContentApIsBulkDelete403Response + '500': + application/json: ProductContentApIsBulkDelete500Response + /v1/products/_ids: + get: + '401': + application/json: ProductContentApIsGetProductIdsResponse + '500': + application/json: ProductContentApIsGetProductIds500Response + /v1/products/{product_id}: + delete: + '400': + application/json: ProductContentApIsDeleteProductContentResponse + '401': + application/json: ProductContentApIsDeleteProductContent401Response + '403': + application/json: ProductContentApIsDeleteProductContent403Response + '500': + application/json: ProductContentApIsDeleteProductContent500Response + get: + '401': + application/json: ProductContentApIsGetProductDetailsResponse + '404': + application/json: ProductContentApIsGetProductDetails404Response + '500': + application/json: ProductContentApIsGetProductDetails500Response + /v1/users: + post: + '400': + application/json: UserApIsBulkUploadResponse + '401': + application/json: UserApIsBulkUpload401Response + '403': + application/json: UserApIsBulkUpload403Response + '422': + application/json: UserApIsBulkUpload422Response + '500': + application/json: UserApIsBulkUpload500Response + /v1/users/_delete: + post: + '400': + application/json: UserApIsBulkUserDeleteResponse + '401': + application/json: UserApIsBulkUserDelete401Response + '403': + application/json: UserApIsBulkUserDelete403Response + '500': + application/json: UserApIsBulkUserDelete500Response + /v1/users/{user_id}: + delete: + '400': + application/json: UserApIsDeleteUserResponse + '401': + application/json: UserApIsDeleteUser401Response + '403': + application/json: UserApIsDeleteUser403Response + '500': + application/json: UserApIsDeleteUser500Response + get: + '401': + application/json: UserApIsGetUserDetailsResponse + '403': + application/json: UserApIsGetUserDetails403Response + '404': + application/json: UserApIsGetUserDetails404Response + '500': + application/json: UserApIsGetUserDetails500Response +securityParameters: + userId: + query: false +validServerUrls: {} diff --git a/sdks/db/published/from-custom-request_askmiso.com.json b/sdks/db/published/from-custom-request_askmiso.com.json new file mode 100644 index 0000000000..7393473aec --- /dev/null +++ b/sdks/db/published/from-custom-request_askmiso.com.json @@ -0,0 +1,1993 @@ +{ + "securitySchemes": { + "Secret API Key": { + "type": "apiKey", + "description": "\nYour secret API key is used to access every Miso API endpoint. You should secure this key and only use it on a backend \nserver. Never leave this key in your client-side JavaScript code. If the private key is compromised, you can revoke it \nin [Dojo](https://dojo.askmiso.com/docs/api-browser) and get a new one.\n\nSpecify your secret key in the `api_key` query parameter. For example:\n```\nPOST /v1/users?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17\n```\n\n", + "in": "query", + "name": "api_key" + }, + "Publishable API Key": { + "type": "apiKey", + "description": "\nYour publishable API key is used to call Miso's APIs from your front-end code. It can be used to stream interactions from the browser using Miso's Interactions Upload API or to access read-only search and recommendation results for a given user. When using the publishable API key, the requested user_id will need to be hashed to maintain the necessary security compliance. \n\nSpecify your publishable key in the `api_key` query parameter. For example:\n```\nPOST /v1/interactions?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17\n```\n", + "in": "query", + "name": "api_key" + } + }, + "apiBaseUrl": "https://api.askmiso.com", + "apiVersion": "1.1.4", + "apiDescription": "\n# Overview\nMiso’s approach to personalization is to train machine learning Engines on three core data sets:\n\n1. Your site’s log of historical and real-time interactions,\n2. Your catalog of products and content, and\n3. Your users. Miso provides the output of its Engines to you, so you can build search and recommendation\nexperiences that are personalized down to the individual level (n=1 personalization).\n\nTo see how Miso works and explore the power of its Engines, we recommend following\n[this tutorial](https://docs.askmiso.com/) to get\nstarted with our Playground data. Integrating your site or application with Miso happens in three basic steps:\n\n1. Upload your data\n2. Train your Engines\n3. Build search and recommendation experiences with the output of your Engines.\n\n\nMiso provides two main integration points. The first is your [Dojo Dashboard](https://dojo.askmiso.com/),\nwhich is used to set up your Engines with the conversions you want to optimize and your training schedule.\nDojo is also a great way to get familiar with Miso by manually uploading data and exploring the output of\nMiso’s Engines. In Dojo’s Sandboxes, you can tweak your Engine settings and see visual examples of Miso’s search\nand recommendations running on your live data.\n\nThe second integration point is Miso’s API, which lets you automatically manage your data in Miso and build\nexperiences that leverage the output of Miso’s personalization Engines.\n\n\nMiso’s API is composed of two major groups of REST API endpoints: Data APIs and Engine APIs.\n\n### Data APIs\nData APIs collect input to Miso's personalization Engines. These APIs all support high-throughput\ndata ingestion through bulk insert, and satisfy GDPR and CCPA compliance by letting users delete their data\nfrom Miso. Subcategories of Data APIs are:\n\n* [Interaction APIs](https://api.askmiso.com), for managing your Interaction records. By uploading historical and real-time Interaction\nrecords, you tell Miso how users are engaging with the products and content on your site, and in turn, Miso’s\nEngines learn how to optimize your conversion funnels.\n* [Product / Content APIs](https://api.askmiso.com), for managing your Product / Content records. These records provide a deep semantic\nunderstanding of your catalog and keep Miso up to date about your offerings so it can make smart and timely\nsuggestions. The `product_id` is how Miso links Product / Content records to your Interaction records.\n* [User APIs](https://api.askmiso.com), for managing your User records. These records tell Miso about your site’s users and visitors,\nso Miso can build an understanding of user segmentation and behavior in relation to products and content.\nThe `user_id` is how Miso links User records to your Interaction records.\n\nAs a rule of thumb, we recommend batching up data to avoid timeout risks. For the Product / Content and User\nUpload APIs, we recommend limiting each API upload call to about 100 records at a time. For the Interaction\nUpload API, we recommend limiting your calls to around 10,000 records at a time.\n\n### Engine APIs\nEngine APIs provide the output of Miso's personalization Engines. We designed these APIs with a focus on low\nlatency and high availability. Most of these APIs' 95th percentile response time is under 75ms,\nand the services are replicated to at least three separate instances for high availability.\nThe types of Engine APIs are:\n\n* [Search APIs](https://api.askmiso.com), for getting Miso’s personalized search results for a user, with search-as-you-type and\nautocompletion.\n* [Recommendation APIs](https://api.askmiso.com), for retrieving Miso’s recommendations that match users with\nthe products, categories, and product attributes that are likely to drive conversions.\n\n# Authentication\n[View your API Keys in your Dojo Dashboard.](https://dojo.askmiso.com/docs/api-browser)\n\nThere are three environments in Miso:\n* **Playground**, a read-only tutorial environment with sample data.\n* **Development**, for staging, QA, and experimentation.\n* **Production**, where you run your live integration with Miso.\n\nAccess a Miso environment by passing in the corresponding API key in your API calls. There is one publishable\nkey and one secret key per environment.\n\nAPI Key can passed with query parameter `api_key`, or using the `X-API-KEY` header.\n", + "apiTitle": "Miso API", + "endpoints": 23, + "sdkMethods": 26, + "schemas": 175, + "parameters": 212, + "originalCustomRequest": { + "type": "GET", + "url": "https://api.askmiso.com/swagger.json" + }, + "customRequestSpecFilename": "askmiso.com.yaml", + "difficultyScore": 146, + "difficulty": "Medium", + "company": "Miso", + "sdkName": "miso-{language}-sdk", + "clientName": "Miso", + "metaDescription": "Miso’s simple APIs empower product teams to realize unlimited personalization opportunities. Leading brands are using Miso’s semantic intelligence and real-time clickstream analysis to drive a new generation of personalized experiences and lift revenues sitewide. And unlike traditional solutions, Miso can personalize 100% anonymously — no tracking users or mining data.", + "apiStatusUrls": "inherit", + "homepage": "miso.ai", + "developerDocumentation": "docs.miso.ai/", + "categories": [ + "ai", + "search" + ], + "category": "AI Tools", + "methods": [ + { + "url": "/v1/experiments/{experiment_id_or_slug}/events", + "method": "sendEvent", + "httpMethod": "post", + "tag": "Experiment APIs", + "typeScriptTag": "experimentApIs", + "description": "Send Experiment Event", + "parameters": [ + { + "name": "user_id", + "schema": "string", + "description": "", + "example": "2179873" + }, + { + "name": "anonymous_id", + "schema": "string", + "description": "", + "example": "403fb18e-98ff-434d-8585-726fabf5ed37" + }, + { + "name": "variant_name", + "schema": "string", + "description": "", + "example": "Treatment_Group" + }, + { + "name": "timestamp", + "schema": "string", + "description": "", + "example": "2022-01-23T12:34:56-08:00" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/interactions", + "method": "removeData", + "httpMethod": "delete", + "tag": "Interaction APIs", + "typeScriptTag": "interactionApIs", + "description": "Interaction Delete API", + "parameters": [ + { + "name": "user_ids", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/interactions", + "method": "insertRecords", + "httpMethod": "post", + "tag": "Interaction APIs", + "typeScriptTag": "interactionApIs", + "description": "Interaction Upload API", + "parameters": [ + { + "name": "data", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/products", + "method": "bulkInsert", + "httpMethod": "post", + "tag": "Product / Content APIs", + "typeScriptTag": "productContentApIs", + "description": "Product / Content Upload API", + "parameters": [ + { + "name": "data", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/v1/products/{product_id}", + "method": "deleteProductContent", + "httpMethod": "delete", + "tag": "Product / Content APIs", + "typeScriptTag": "productContentApIs", + "description": "Product / Content Delete API", + "parameters": [ + { + "name": "productId", + "schema": "string", + "required": true, + "description": "", + "example": "PRODUCT_ID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/v1/products/{product_id}", + "method": "getProductDetails", + "httpMethod": "get", + "tag": "Product / Content APIs", + "typeScriptTag": "productContentApIs", + "description": "Product / Content Read API", + "parameters": [ + { + "name": "productId", + "schema": "string", + "required": true, + "description": "", + "example": "PRODUCT_ID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/v1/products/_ids", + "method": "getProductIds", + "httpMethod": "get", + "tag": "Product / Content APIs", + "typeScriptTag": "productContentApIs", + "description": "Product / Content ID List API", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/v1/products/_delete", + "method": "bulkDelete", + "httpMethod": "post", + "tag": "Product / Content APIs", + "typeScriptTag": "productContentApIs", + "description": "Product / Content Bulk Delete API", + "parameters": [ + { + "name": "data", + "schema": "object", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/v1/users", + "method": "bulkUpload", + "httpMethod": "post", + "tag": "User APIs", + "typeScriptTag": "userApIs", + "description": "User Upload API", + "parameters": [ + { + "name": "data", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/v1/users/{user_id}", + "method": "deleteUser", + "httpMethod": "delete", + "tag": "User APIs", + "typeScriptTag": "userApIs", + "description": "User Delete API", + "parameters": [ + { + "name": "userId", + "schema": "string", + "required": true, + "description": "", + "example": "USER_ID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/v1/users/{user_id}", + "method": "getUserDetails", + "httpMethod": "get", + "tag": "User APIs", + "typeScriptTag": "userApIs", + "description": "User Read API", + "parameters": [ + { + "name": "userId", + "schema": "string", + "required": true, + "description": "", + "example": "USERID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/v1/users/_delete", + "method": "bulkUserDelete", + "httpMethod": "post", + "tag": "User APIs", + "typeScriptTag": "userApIs", + "description": "User Bulk Delete API", + "parameters": [ + { + "name": "data", + "schema": "object", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/v1/search/search", + "method": "searchRequest", + "httpMethod": "post", + "tag": "Search APIs", + "typeScriptTag": "searchApIs", + "description": "Search API", + "parameters": [ + { + "name": "engine_id", + "schema": "string", + "description": "" + }, + { + "name": "user_id", + "schema": "string", + "description": "" + }, + { + "name": "anonymous_id", + "schema": "string", + "description": "" + }, + { + "name": "user_hash", + "schema": "string", + "description": "" + }, + { + "name": "user_cohort", + "schema": "object", + "description": "" + }, + { + "name": "rows", + "schema": "integer", + "description": "", + "default": 5 + }, + { + "name": "type", + "schema": "string", + "description": "" + }, + { + "name": "dedupe_product_group_id", + "schema": "boolean", + "description": "", + "default": true + }, + { + "name": "additional_interactions", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "fl", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "exclude", + "schema": "array", + "description": "" + }, + { + "name": "q", + "schema": "string", + "description": "" + }, + { + "name": "advanced_q", + "schema": "string", + "description": "" + }, + { + "name": "boosting_tags", + "schema": "array", + "description": "", + "example": [ + "tag-1", + "quetag-2" + ], + "default": [] + }, + { + "name": "enable_boosting_campaigns", + "schema": "boolean", + "description": "", + "default": true + }, + { + "name": "custom_context", + "schema": "object", + "description": "", + "example": { + "session_variable_1": [ + "value_1", + "value_2" + ] + } + }, + { + "name": "language", + "schema": "string", + "description": "" + }, + { + "name": "like", + "schema": "string", + "description": "" + }, + { + "name": "category", + "schema": "array", + "description": "" + }, + { + "name": "spellcheck", + "schema": "object", + "description": "" + }, + { + "name": "start", + "schema": "integer", + "description": "", + "default": 0 + }, + { + "name": "order_by", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "facets", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "facet_filters", + "schema": "object", + "description": "", + "default": {} + }, + { + "name": "anchoring_settings", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "enable_partial_match", + "schema": "boolean", + "description": "", + "default": false + }, + { + "name": "partial_match_mode", + "schema": "string", + "description": "", + "default": "blended" + }, + { + "name": "enable_partial_match_threshold", + "schema": "integer", + "description": "" + }, + { + "name": "enable_semantic_search", + "schema": "boolean", + "description": "", + "default": false + }, + { + "name": "semantic_search_threshold", + "schema": "number", + "description": "", + "default": 0.5 + }, + { + "name": "enable_matched_fields", + "schema": "boolean", + "description": "", + "default": false + }, + { + "name": "query_product_existence", + "schema": "object", + "description": "" + }, + { + "name": "personalization_weight", + "schema": "integer", + "description": "", + "default": 5 + }, + { + "name": "fq", + "schema": "string", + "description": "" + }, + { + "name": "boost_fq", + "schema": "string", + "description": "" + }, + { + "name": "boost_positions", + "schema": "array", + "description": "" + }, + { + "name": "boost_rules", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "geo", + "schema": "object", + "description": "" + }, + { + "name": "diversification", + "schema": "object", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/search/autocomplete", + "method": "autocompleteRequest", + "httpMethod": "post", + "tag": "Search APIs", + "typeScriptTag": "searchApIs", + "description": "Autocomplete API", + "parameters": [ + { + "name": "engine_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "user_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "anonymous_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "user_hash", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "user_cohort", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "rows", + "schema": "integer", + "required": false, + "description": "", + "default": 5 + }, + { + "name": "type", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "dedupe_product_group_id", + "schema": "boolean", + "required": false, + "description": "", + "default": true + }, + { + "name": "additional_interactions", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "fq", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "boost_fq", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "boost_positions", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "boost_rules", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "geo", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "q", + "schema": "string", + "required": true, + "description": "", + "example": "Q" + }, + { + "name": "language", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "min_query_users", + "schema": "integer", + "required": false, + "description": "", + "default": 5 + }, + { + "name": "completion_fields", + "schema": "array", + "required": false, + "description": "", + "default": [ + "title" + ] + }, + { + "name": "fl", + "schema": "array", + "required": false, + "description": "", + "default": [] + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/search/mget", + "method": "multipleGetProducts", + "httpMethod": "post", + "tag": "Search APIs", + "typeScriptTag": "searchApIs", + "description": "Multiple Get API", + "parameters": [ + { + "name": "engine_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "user_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "anonymous_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "user_hash", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "product_ids", + "schema": "array", + "required": true, + "description": "" + }, + { + "name": "fl", + "schema": "array", + "required": false, + "description": "", + "default": [ + "*" + ] + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/ask/questions", + "method": "submitQuestion", + "httpMethod": "post", + "tag": "Ask APIs", + "typeScriptTag": "askApIs", + "description": "Create a new qestion", + "parameters": [ + { + "name": "user_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "anonymous_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "fq", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "question", + "schema": "string", + "required": true, + "description": "", + "example": "QUESTION" + }, + { + "name": "parent_question_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "yearly_decay", + "schema": "number", + "required": false, + "description": "", + "default": 0.93 + }, + { + "name": "source_fl", + "schema": "array", + "required": false, + "description": "", + "default": [ + "title" + ] + }, + { + "name": "related_resource_fl", + "schema": "array", + "required": false, + "description": "", + "default": [ + "title" + ] + }, + { + "name": "cite_start", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "cite_end", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/ask/questions/{question_id}/answer", + "method": "getAnswerStage", + "httpMethod": "get", + "tag": "Ask APIs", + "typeScriptTag": "askApIs", + "description": "Get latest answer of asked question", + "parameters": [ + { + "name": "questionId", + "schema": "string", + "required": true, + "description": "", + "example": "QUESTION_ID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/recommendation/user_to_products", + "method": "getRecommendedProducts", + "httpMethod": "post", + "tag": "Recommendation APIs", + "typeScriptTag": "recommendationApIs", + "description": "User to Products API", + "parameters": [ + { + "name": "engine_id", + "schema": "string", + "description": "" + }, + { + "name": "user_id", + "schema": "string", + "description": "" + }, + { + "name": "anonymous_id", + "schema": "string", + "description": "" + }, + { + "name": "user_hash", + "schema": "string", + "description": "" + }, + { + "name": "user_cohort", + "schema": "object", + "description": "" + }, + { + "name": "rows", + "schema": "integer", + "description": "", + "default": 5 + }, + { + "name": "type", + "schema": "string", + "description": "" + }, + { + "name": "dedupe_product_group_id", + "schema": "boolean", + "description": "", + "default": true + }, + { + "name": "additional_interactions", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "fl", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "exclude", + "schema": "array", + "description": "" + }, + { + "name": "boosting_tags", + "schema": "array", + "description": "", + "example": [ + "tag-1", + "quetag-2" + ], + "default": [] + }, + { + "name": "fq", + "schema": "string", + "description": "" + }, + { + "name": "boost_fq", + "schema": "string", + "description": "" + }, + { + "name": "boost_positions", + "schema": "array", + "description": "" + }, + { + "name": "boost_rules", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "geo", + "schema": "object", + "description": "" + }, + { + "name": "diversification", + "schema": "object", + "description": "" + }, + { + "name": "pagination_id", + "schema": "string", + "description": "" + }, + { + "name": "start", + "schema": "integer", + "description": "", + "default": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/recommendation/user_to_categories", + "method": "getUserCategories", + "httpMethod": "post", + "tag": "Recommendation APIs", + "typeScriptTag": "recommendationApIs", + "description": "User to Categories API", + "parameters": [ + { + "name": "engine_id", + "schema": "string", + "description": "" + }, + { + "name": "user_id", + "schema": "string", + "description": "" + }, + { + "name": "anonymous_id", + "schema": "string", + "description": "" + }, + { + "name": "user_hash", + "schema": "string", + "description": "" + }, + { + "name": "user_cohort", + "schema": "object", + "description": "" + }, + { + "name": "rows", + "schema": "integer", + "description": "", + "default": 5 + }, + { + "name": "type", + "schema": "string", + "description": "" + }, + { + "name": "dedupe_product_group_id", + "schema": "boolean", + "description": "", + "default": true + }, + { + "name": "additional_interactions", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "fl", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "exclude", + "schema": "array", + "description": "" + }, + { + "name": "boosting_tags", + "schema": "array", + "description": "", + "example": [ + "tag-1", + "quetag-2" + ], + "default": [] + }, + { + "name": "products_per_category", + "schema": "integer", + "description": "", + "default": 5 + }, + { + "name": "root_category", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "fq", + "schema": "string", + "description": "" + }, + { + "name": "boost_fq", + "schema": "string", + "description": "" + }, + { + "name": "boost_positions", + "schema": "array", + "description": "" + }, + { + "name": "boost_rules", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "geo", + "schema": "object", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/recommendation/user_to_attributes", + "method": "getUserAttributes", + "httpMethod": "post", + "tag": "Recommendation APIs", + "typeScriptTag": "recommendationApIs", + "description": "User to Attributes API", + "parameters": [ + { + "name": "boosting_tags", + "schema": "array", + "required": false, + "description": "", + "example": [ + "tag-1", + "quetag-2" + ], + "default": [] + }, + { + "name": "field", + "schema": "string", + "required": true, + "description": "", + "example": "FIELD" + }, + { + "name": "boost_attributes", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "exclude_attributes", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "rows", + "schema": "integer", + "required": false, + "description": "", + "default": 5 + }, + { + "name": "products_per_attribute", + "schema": "integer", + "required": false, + "description": "", + "default": 2 + }, + { + "name": "engine_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "user_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "anonymous_id", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "user_hash", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "user_cohort", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "type", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "dedupe_product_group_id", + "schema": "boolean", + "required": false, + "description": "", + "default": true + }, + { + "name": "additional_interactions", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "fl", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "exclude", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "fq", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "boost_fq", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "boost_positions", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "boost_rules", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "geo", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/recommendation/user_to_trending", + "method": "getUserTrending", + "httpMethod": "post", + "tag": "Recommendation APIs", + "typeScriptTag": "recommendationApIs", + "description": "User to Trending API", + "parameters": [ + { + "name": "engine_id", + "schema": "string", + "description": "" + }, + { + "name": "user_id", + "schema": "string", + "description": "" + }, + { + "name": "anonymous_id", + "schema": "string", + "description": "" + }, + { + "name": "user_hash", + "schema": "string", + "description": "" + }, + { + "name": "user_cohort", + "schema": "object", + "description": "" + }, + { + "name": "rows", + "schema": "integer", + "description": "", + "default": 5 + }, + { + "name": "type", + "schema": "string", + "description": "" + }, + { + "name": "dedupe_product_group_id", + "schema": "boolean", + "description": "", + "default": true + }, + { + "name": "additional_interactions", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "fl", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "exclude", + "schema": "array", + "description": "" + }, + { + "name": "boosting_tags", + "schema": "array", + "description": "", + "example": [ + "tag-1", + "quetag-2" + ], + "default": [] + }, + { + "name": "fq", + "schema": "string", + "description": "" + }, + { + "name": "boost_fq", + "schema": "string", + "description": "" + }, + { + "name": "boost_positions", + "schema": "array", + "description": "" + }, + { + "name": "boost_rules", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "geo", + "schema": "object", + "description": "" + }, + { + "name": "diversification", + "schema": "object", + "description": "" + }, + { + "name": "pagination_id", + "schema": "string", + "description": "" + }, + { + "name": "start", + "schema": "integer", + "description": "", + "default": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/recommendation/product_to_products", + "method": "getRelatedProducts", + "httpMethod": "post", + "tag": "Recommendation APIs", + "typeScriptTag": "recommendationApIs", + "description": "Product to Products API", + "parameters": [ + { + "name": "product_id", + "schema": "string", + "description": "" + }, + { + "name": "product_ids", + "schema": "array", + "description": "" + }, + { + "name": "product_group_id", + "schema": "string", + "description": "" + }, + { + "name": "product_group_ids", + "schema": "array", + "description": "" + }, + { + "name": "buy_together", + "schema": "boolean", + "description": "", + "default": false + }, + { + "name": "engine_id", + "schema": "string", + "description": "" + }, + { + "name": "user_id", + "schema": "string", + "description": "" + }, + { + "name": "anonymous_id", + "schema": "string", + "description": "" + }, + { + "name": "user_hash", + "schema": "string", + "description": "" + }, + { + "name": "user_cohort", + "schema": "object", + "description": "" + }, + { + "name": "rows", + "schema": "integer", + "description": "", + "default": 5 + }, + { + "name": "type", + "schema": "string", + "description": "" + }, + { + "name": "dedupe_product_group_id", + "schema": "boolean", + "description": "", + "default": true + }, + { + "name": "additional_interactions", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "fl", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "exclude", + "schema": "array", + "description": "" + }, + { + "name": "boosting_tags", + "schema": "array", + "description": "", + "example": [ + "tag-1", + "quetag-2" + ], + "default": [] + }, + { + "name": "fq", + "schema": "string", + "description": "" + }, + { + "name": "boost_fq", + "schema": "string", + "description": "" + }, + { + "name": "boost_positions", + "schema": "array", + "description": "" + }, + { + "name": "boost_rules", + "schema": "array", + "description": "", + "default": [] + }, + { + "name": "geo", + "schema": "object", + "description": "" + }, + { + "name": "diversification", + "schema": "object", + "description": "" + }, + { + "name": "pagination_id", + "schema": "string", + "description": "" + }, + { + "name": "start", + "schema": "integer", + "description": "", + "default": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/qa/question_answering", + "method": "extractAnswer", + "httpMethod": "post", + "tag": "Q&A APIs", + "typeScriptTag": "q&aApIs", + "description": "Q&A API", + "parameters": [ + { + "name": "version", + "schema": "string", + "required": false, + "description": "", + "example": "v1.2", + "default": "v1.2" + }, + { + "name": "q", + "schema": "string", + "required": true, + "description": "", + "example": "what is gradient descent" + }, + { + "name": "min_probability", + "schema": "number", + "required": true, + "description": "", + "example": 0.7 + }, + { + "name": "rows", + "schema": "integer", + "required": false, + "description": "", + "default": 1 + }, + { + "name": "fl", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "spellcheck", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "enable_answer_html", + "schema": "boolean", + "required": false, + "description": "", + "default": false + }, + { + "name": "enable_answer_block", + "schema": "boolean", + "required": false, + "description": "", + "default": false + }, + { + "name": "fq", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "boost_fq", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "boost_positions", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "boost_rules", + "schema": "array", + "required": false, + "description": "", + "default": [] + }, + { + "name": "geo", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "boost_probability_threshold", + "schema": "number", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/qa/questions", + "method": "uploadQuestionBank", + "httpMethod": "post", + "tag": "Q&A APIs", + "typeScriptTag": "q&aApIs", + "description": "Upload Question Bank API", + "parameters": [ + { + "name": "data", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/qa/question_autocomplete", + "method": "getAutocomplete", + "httpMethod": "post", + "tag": "Q&A APIs", + "typeScriptTag": "q&aApIs", + "description": "Question Autocomplete API", + "parameters": [ + { + "name": "q", + "schema": "string", + "required": true, + "description": "", + "example": "what is g" + }, + { + "name": "rows", + "schema": "integer", + "required": false, + "description": "", + "default": 5 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Autocomplete Response" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/v1/bulk", + "method": "requestPost", + "httpMethod": "post", + "tag": "Bulk API", + "typeScriptTag": "bulkApi", + "description": "Bulk Request API", + "parameters": [ + { + "name": "requests", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Bulk API response " + }, + { + "statusCode": "422", + "description": "" + } + ] + } + ], + "repositoryDescription": "Miso offers simple APIs for unlimited personalization opportunities. Leading brands use Miso's intelligence for personalized experiences and revenue growth, all done anonymously without tracking or mining data. Miso's {language} SDK generated by Konfig (https://konfigthis.com/).", + "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/miso/logo.svg", + "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/miso/openapi.yaml", + "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/miso/openapi.yaml", + "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/miso/imagePreview.png", + "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/miso/favicon.png", + "clientNameCamelCase": "miso", + "lastUpdated": "2024-03-29T20:45:46.288Z", + "typescriptSdkUsageCode": "import { Miso } from 'miso-typescript-sdk';\n\nconst miso = new Miso({\n /*\n * \n * Your secret API key is used to access every Miso API endpoint. You should secure this key and only use it on a backend \n * server. Never leave this key in your client-side JavaScript code. If the private key is compromised, you can revoke it \n * in [Dojo](https://dojo.askmiso.com/docs/api-browser) and get a new one.\n * \n * Specify your secret key in the `api_key` query parameter. For example:\n * ```\n * POST /v1/users?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17\n * ```\n * \n * \n */\n secretApiKey: \"API_KEY\",\n /*\n * \n * Your publishable API key is used to call Miso's APIs from your front-end code. It can be used to stream interactions from the browser using Miso's Interactions Upload API or to access read-only search and recommendation results for a given user. When using the publishable API key, the requested user_id will need to be hashed to maintain the necessary security compliance. \n * \n * Specify your publishable key in the `api_key` query parameter. For example:\n * ```\n * POST /v1/interactions?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17\n * ```\n * \n */\n publishableApiKey: \"API_KEY\"\n})", + "typescriptSdkFirstRequestCode": "// Send Experiment Event\nconst sendEventResponse = miso.experimentApIs.sendEvent({\n user_id: \"2179873\"\n anonymous_id: \"403fb18e-98ff-434d-8585-726fabf5ed37\"\n variant_name: \"Treatment_Group\"\n timestamp: \"2022-01-23T12:34:56-08:00\"\n})", + "fixedSpecFileName": "miso-fixed-spec.yaml" +} \ No newline at end of file diff --git a/sdks/db/published/from-custom-request_baserow.io.json b/sdks/db/published/from-custom-request_baserow.io.json new file mode 100644 index 0000000000..a0a968b014 --- /dev/null +++ b/sdks/db/published/from-custom-request_baserow.io.json @@ -0,0 +1,12206 @@ +{ + "securitySchemes": { + "Database token": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "Token your_token" + }, + "JWT": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT your_token" + } + }, + "apiBaseUrl": "api.baserow.io", + "apiVersion": "1.23.2", + "apiDescription": "For more information about our REST API, please visit [this page](https://baserow.io/docs/apis%2Frest-api).\n\nFor more information about our deprecation policy, please visit [this page](https://baserow.io/docs/apis%2Fdeprecations).", + "apiTitle": "Baserow API spec", + "endpoints": 211, + "sdkMethods": 299, + "schemas": 1137, + "parameters": 914, + "contactUrl": "https://baserow.io/contact", + "originalCustomRequest": { + "type": "GET", + "url": "https://api.baserow.io/api/schema.json", + "apiBaseUrl": "api.baserow.io" + }, + "customRequestSpecFilename": "baserow.io.yaml", + "difficultyScore": 824.5, + "difficulty": "Very Hard", + "company": "Baserow", + "sdkName": "baserow-{language}-sdk", + "clientName": "Baserow", + "metaDescription": "Baserow is the most flexible platform for creating databases and applications—without coding.\n\nGet all the power of a database with the familiarity of a spreadsheet. Organize your data and build applications faster, with greater security and at any scale. Only Baserow has self-hosting, real-time collaboration, APIs, plugins, and no vendor lock-in. \n\nCreate Kanban boards, calendars, forms, integrate with other tools, and more to provide the best representation of your data. Today, thousands of customers around the world use our powerful and easy-to-use tools as their CRM, project management systems, or to power websites.\n\nWe live by open source principles: our code, product, and community are all open for everyone to join and contribute to. We're looking for passionate individuals to join us: baserow.io/jobs", + "apiStatusUrls": "inherit", + "homepage": "baserow.io", + "developerDocumentation": "baserow.io/docs/index", + "categories": [ + "database", + "no_code" + ], + "category": "Developer Tools", + "methods": [ + { + "url": "/api/database/view/{view_id}/premium", + "method": "setPremiumAttributes", + "httpMethod": "patch", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Sets view attributes only available for premium users.", + "parameters": [ + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Sets show_logo of this view.", + "example": 0 + }, + { + "name": "show_logo", + "schema": "boolean", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/user-source/{user_source_id}/force-token-auth", + "method": "forceTokenAuth", + "httpMethod": "post", + "tag": "User sources", + "typeScriptTag": "userSources", + "description": "Force authenticates an existing user based on their ID. If successful, an access token and a refresh token will be returned.", + "parameters": [ + { + "name": "userSourceId", + "schema": "integer", + "required": true, + "description": "The user source to use to authenticate the user.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/api/user-source/{user_source_id}/token-auth", + "method": "authenticateUserWithToken", + "httpMethod": "post", + "tag": "User sources", + "typeScriptTag": "userSources", + "description": "Authenticates an existing user against a user source based on their credentials. If successful, an access token and a refresh token will be returned.", + "parameters": [ + { + "name": "userSourceId", + "schema": "integer", + "required": true, + "description": "The id of the user_source to move", + "example": 0 + }, + { + "name": "username", + "schema": "string", + "required": true, + "description": "", + "example": "USERNAME" + }, + { + "name": "password", + "schema": "string", + "required": true, + "description": "", + "example": "PASSWORD" + }, + { + "name": "access", + "schema": "string", + "required": true, + "description": "", + "example": "ACCESS" + }, + { + "name": "refresh", + "schema": "string", + "required": true, + "description": "", + "example": "REFRESH" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/api/_health/email", + "method": "tester", + "httpMethod": "post", + "tag": "Health", + "typeScriptTag": "health", + "description": "Sends a test email to the provided email address. Useful for testing Baserow's email configuration as errors are clearly returned.", + "parameters": [ + { + "name": "target_email", + "schema": "string", + "required": true, + "description": "", + "example": "TARGET_EMAIL" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/_health/full", + "method": "runFullCheck", + "httpMethod": "get", + "tag": "Health", + "typeScriptTag": "health", + "description": "Runs a full health check testing as many services and systems as possible. These health checks can be expensive operations such as writing files to storage etc.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/admin/audit-log", + "method": "listEntriesForWorkspace", + "httpMethod": "get", + "tag": "Audit log", + "typeScriptTag": "auditLog", + "description": "Lists all audit log entries for the given workspace id.\n\nThis is a **enterprise** feature.", + "parameters": [ + { + "name": "actionType", + "schema": "string", + "description": "Filter the audit log entries by action type." + }, + { + "name": "fromTimestamp", + "schema": "string", + "description": "The ISO timestamp to filter the audit log entries from." + }, + { + "name": "page", + "schema": "integer", + "description": "Defines which page should be returned." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many audit log entries should be returned per page." + }, + { + "name": "sorts", + "schema": "string", + "description": "A comma separated string of attributes to sort by, each attribute must be prefixed with `+` for a descending sort or a `-` for an ascending sort. The accepted attribute names are: `user, workspace, type, timestamp, ip_address`. For example `sorts=-user,-workspace` will sort the audit log entries first by descending user and then ascending workspace. A sortparameter with multiple instances of the same sort attribute will respond with the ERROR_INVALID_SORT_ATTRIBUTE error." + }, + { + "name": "toTimestamp", + "schema": "string", + "description": "The ISO timestamp to filter the audit log entries to." + }, + { + "name": "userId", + "schema": "integer", + "description": "Filter the audit log entries by user id." + }, + { + "name": "workspaceId", + "schema": "integer", + "description": "Filter the audit log entries by workspace id. This filter works only for the admin audit log." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/audit-log/action-types", + "method": "listActionTypes", + "httpMethod": "get", + "tag": "Audit log", + "typeScriptTag": "auditLog", + "description": "List all distinct action types related to an audit log entry.\n\nThis is a **enterprise** feature.", + "parameters": [ + { + "name": "search", + "schema": "string", + "description": "If provided only action_types with name that match the query will be returned." + }, + { + "name": "workspaceId", + "schema": "integer", + "description": "Return action types related to the workspace." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/audit-log/export", + "method": "createExportJob", + "httpMethod": "post", + "tag": "Audit log", + "typeScriptTag": "auditLog", + "description": "Creates a job to export the filtered audit log to a CSV file.\n\nThis is a **enterprise** feature.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "url", + "schema": "string", + "required": true, + "description": "", + "example": "URL" + }, + { + "name": "export_charset", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "csv_column_separator", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "csv_first_row_header", + "schema": "boolean", + "required": false, + "description": "", + "default": true + }, + { + "name": "filter_user_id", + "schema": "integer", + "required": false, + "description": "" + }, + { + "name": "filter_workspace_id", + "schema": "integer", + "required": false, + "description": "" + }, + { + "name": "filter_action_type", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "filter_from_timestamp", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "filter_to_timestamp", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "exclude_columns", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "202", + "description": "When mixed in to a model serializer for an ExportJob this will add an url field\nwith the actual usable url of the export job's file (if it has one)." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/admin/audit-log/users", + "method": "listUsers", + "httpMethod": "get", + "tag": "Audit log", + "typeScriptTag": "auditLog", + "description": "List all users that have performed an action in the audit log.\n\nThis is a **enterprise** feature.", + "parameters": [ + { + "name": "page", + "schema": "integer", + "description": "Defines which page should be returned." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only users with email that match the query will be returned." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many users should be returned per page." + }, + { + "name": "workspaceId", + "schema": "integer", + "description": "Return users belonging to the given workspace_id." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/audit-log/workspaces", + "method": "listDistinctWorkspaceNames", + "httpMethod": "get", + "tag": "Audit log", + "typeScriptTag": "auditLog", + "description": "List all distinct workspace names related to an audit log entry.\n\nThis is a **enterprise** feature.", + "parameters": [ + { + "name": "page", + "schema": "integer", + "description": "Defines which page should be returned." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only workspaces with name that match the query will be returned." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many workspaces should be returned per page." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/auth-provider", + "method": "listProviders", + "httpMethod": "get", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "List all the available authentication providers.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/admin/auth-provider", + "method": "registerAuthProvider", + "httpMethod": "post", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "Creates a new authentication provider. This can be used to enable authentication with a third party service like Google or Facebook.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/admin/auth-provider/{auth_provider_id}", + "method": "deleteAuthProvider", + "httpMethod": "delete", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "Delete an authentication provider.", + "parameters": [ + { + "name": "authProviderId", + "schema": "integer", + "required": true, + "description": "The authentication provider id to delete.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/admin/auth-provider/{auth_provider_id}", + "method": "getAuthProvider", + "httpMethod": "get", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "Get an authentication provider.", + "parameters": [ + { + "name": "authProviderId", + "schema": "integer", + "required": true, + "description": "The authentication provider id to fetch.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/admin/auth-provider/{auth_provider_id}", + "method": "updateAuthProvider", + "httpMethod": "patch", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "Updates a new authentication provider. This can be used to enable authentication with a third party service like Google or Facebook.", + "parameters": [ + { + "name": "authProviderId", + "schema": "integer", + "required": true, + "description": "The authentication provider id to update.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/admin/dashboard", + "method": "dashboard", + "httpMethod": "get", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Returns the new and active users for the last 24 hours, 7 days and 30 days. The `previous_` values are the values of the period before, so for example `previous_new_users_last_24_hours` are the new users that signed up from 48 to 24 hours ago. It can be used to calculate an increase or decrease in the amount of signups. A list of the new and active users for every day for the last 30 days is also included.\n\nThis is a **premium** feature.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/groups", + "method": "getAllGroups", + "httpMethod": "get", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [admin_list_workspaces](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Returns all groups with detailed information on each group, if the requesting user is staff.\n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "page", + "schema": "integer", + "description": "Defines which page should be returned." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only groups with id or name that match the query will be returned." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many groups should be returned per page." + }, + { + "name": "sorts", + "schema": "string", + "description": "A comma separated string of attributes to sort by, each attribute must be prefixed with `+` for a descending sort or a `-` for an ascending sort. The accepted attribute names are: `id, name, application_count, created_on, row_count, storage_usage`. For example `sorts=-id,-name` will sort the groups first by descending id and then ascending name. A sortparameter with multiple instances of the same sort attribute will respond with the ERROR_INVALID_SORT_ATTRIBUTE error." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/groups/{group_id}", + "method": "deleteGroup", + "httpMethod": "delete", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [admin_delete_workspace](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Deletes the specified group and the applications inside that group, if the requesting user is staff. \n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "The id of the group to delete", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/users", + "method": "getUsersDetail", + "httpMethod": "get", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Returns all users with detailed information on each user, if the requesting user is staff. \n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "page", + "schema": "integer", + "description": "Defines which page should be returned." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only users with username that match the query will be returned." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many users should be returned per page." + }, + { + "name": "sorts", + "schema": "string", + "description": "A comma separated string of attributes to sort by, each attribute must be prefixed with `+` for a descending sort or a `-` for an ascending sort. The accepted attribute names are: `id, is_active, name, username, date_joined, last_login`. For example `sorts=-id,-is_active` will sort the users first by descending id and then ascending is_active. A sortparameter with multiple instances of the same sort attribute will respond with the ERROR_INVALID_SORT_ATTRIBUTE error." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/users", + "method": "createNewUser", + "httpMethod": "post", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Creates and returns a new user if the requesting user is staff. This works even if new signups are disabled. \n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "username", + "schema": "string", + "required": true, + "description": "", + "example": "USERNAME" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "is_active", + "schema": "boolean", + "required": false, + "description": "" + }, + { + "name": "is_staff", + "schema": "boolean", + "required": false, + "description": "" + }, + { + "name": "password", + "schema": "string", + "required": true, + "description": "", + "example": "PASSWORD" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Serializes the safe user attributes to expose for a response back to the user." + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/admin/users/{user_id}", + "method": "deleteUserPremium", + "httpMethod": "delete", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Deletes the specified user, if the requesting user has admin permissions. You cannot delete yourself. \n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "userId", + "schema": "integer", + "required": true, + "description": "The id of the user to delete", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/users/{user_id}", + "method": "updateUserAttributes", + "httpMethod": "patch", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Updates specified user attributes and returns the updated user if the requesting user is staff. You cannot update yourself to no longer be an admin or active. \n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "userId", + "schema": "integer", + "required": true, + "description": "The id of the user to edit", + "example": 0 + }, + { + "name": "username", + "schema": "string", + "description": "" + }, + { + "name": "name", + "schema": "string", + "description": "" + }, + { + "name": "is_active", + "schema": "boolean", + "description": "" + }, + { + "name": "is_staff", + "schema": "boolean", + "description": "" + }, + { + "name": "password", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Serializes the safe user attributes to expose for a response back to the user." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/users/impersonate", + "method": "impersonateUser", + "httpMethod": "post", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "This endpoint allows staff to impersonate another user by requesting a JWT token and user object. The requesting user must have staff access in order to do this. It's not possible to impersonate a superuser or staff.\n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "user", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/admin/workspaces", + "method": "getWorkspaceDetails", + "httpMethod": "get", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Returns all workspaces with detailed information on each workspace, if the requesting user is staff.\n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "page", + "schema": "integer", + "description": "Defines which page should be returned." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only workspaces with id or name that match the query will be returned." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many workspaces should be returned per page." + }, + { + "name": "sorts", + "schema": "string", + "description": "A comma separated string of attributes to sort by, each attribute must be prefixed with `+` for a descending sort or a `-` for an ascending sort. The accepted attribute names are: `id, name, application_count, created_on, row_count, storage_usage`. For example `sorts=-id,-name` will sort the workspaces first by descending id and then ascending name. A sortparameter with multiple instances of the same sort attribute will respond with the ERROR_INVALID_SORT_ATTRIBUTE error." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/admin/workspaces/{workspace_id}", + "method": "deleteWorkspaceAndApplications", + "httpMethod": "delete", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Deletes the specified workspace and the applications inside that workspace, if the requesting user is staff. \n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The id of the workspace to delete", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/application/{application_id}/integrations", + "method": "listApplicationIntegrations", + "httpMethod": "get", + "tag": "Integrations", + "typeScriptTag": "integrations", + "description": "Lists all the integrations of the application related to the provided parameter if the user has access to the related application's workspace. If the workspace is related to a template, then this endpoint will be publicly accessible.", + "parameters": [ + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "Returns only the integrations of the application related to the provided Id.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/application/{application_id}/integrations", + "method": "createNewIntegration", + "httpMethod": "post", + "tag": "Integrations", + "typeScriptTag": "integrations", + "description": "Creates a new integration", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "Creates an integration for the application related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/application/{application_id}/list-user-source-users", + "method": "listAvailableUsers", + "httpMethod": "get", + "tag": "User sources", + "typeScriptTag": "userSources", + "description": "List per user sources the first 5 users available.", + "parameters": [ + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "The application we want the users for.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "The response of the list user source users endpoint." + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/application/{application_id}/user-sources", + "method": "list", + "httpMethod": "get", + "tag": "User sources", + "typeScriptTag": "userSources", + "description": "Lists all the user_sources of the application related to the provided parameter if the user has access to the related application's workspace. If the workspace is related to a template, then this endpoint will be publicly accessible.", + "parameters": [ + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "Returns only the user_sources of the application related to the provided Id.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/application/{application_id}/user-sources", + "method": "createNewUserSource", + "httpMethod": "post", + "tag": "User sources", + "typeScriptTag": "userSources", + "description": "Creates a new user_source", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "Creates an user_source for the application related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/applications", + "method": "listUserApplications", + "httpMethod": "get", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "Lists all the applications that the authorized user has access to. The properties that belong to the application can differ per type. An application always belongs to a single workspace. All the applications of the workspaces that the user has access to are going to be listed here.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/applications/{application_id}", + "method": "application", + "httpMethod": "delete", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "Deletes an application if the authorized user is in the application's workspace. All the related children are also going to be deleted. For example in case of a database application all the underlying tables, fields, views and rows are going to be deleted.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "Deletes the application related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/applications/{application_id}", + "method": "getApplicationById", + "httpMethod": "get", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "Returns the requested application if the authorized user is in the application's workspace. The properties that belong to the application can differ per type.", + "parameters": [ + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "Returns the application related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/applications/{application_id}", + "method": "application", + "httpMethod": "patch", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "Updates the existing application related to the provided `application_id` param if the authorized user is in the application's workspace. It is not possible to change the type, but properties like the name can be changed.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "Updates the application related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/applications/{application_id}/duplicate/async", + "method": "duplicateAsync", + "httpMethod": "post", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "Duplicate an application if the authorized user is in the application's workspace. All the related children are also going to be duplicated. For example in case of a database application all the underlying tables, fields, views and rows are going to be duplicated.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "The id of the application to duplicate.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/applications/group/{group_id}", + "method": "listGroupApplications", + "httpMethod": "get", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_list_applications](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Lists all the applications of the group related to the provided `group_id` parameter if the authorized user is in that group. If the group is related to a template, then this endpoint will be publicly accessible. The properties that belong to the application can differ per type. An application always belongs to a single group.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Returns only applications that are in the group related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/applications/group/{group_id}", + "method": "createGroupApplication", + "httpMethod": "post", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_create_application](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Creates a new application based on the provided type. The newly created application is going to be added to the group related to the provided `group_id` parameter. If the authorized user does not belong to the group an error will be returned.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Creates an application for the group related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/applications/group/{group_id}/order", + "method": "changeOrderOfGroupApplications", + "httpMethod": "post", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_order_applications](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Changes the order of the provided application ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order of the not provided tables will be set to `0`.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Updates the order of the applications in the group related to the provided value.", + "example": 0 + }, + { + "name": "application_ids", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/applications/workspace/{workspace_id}", + "method": "listUserApplications", + "httpMethod": "get", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "Lists all the applications of the workspace related to the provided `workspace_id` parameter if the authorized user is in that workspace. If theworkspace is related to a template, then this endpoint will be publicly accessible. The properties that belong to the application can differ per type. An application always belongs to a single workspace.", + "parameters": [ + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Returns only applications that are in the workspace related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/applications/workspace/{workspace_id}", + "method": "createApplicationInWorkspace", + "httpMethod": "post", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "Creates a new application based on the provided type. The newly created application is going to be added to the workspace related to the provided `workspace_id` parameter. If the authorized user does not belong to the workspace an error will be returned.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Creates an application for the workspace related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/applications/workspace/{workspace_id}/order", + "method": "changeApplicationOrder", + "httpMethod": "post", + "tag": "Applications", + "typeScriptTag": "applications", + "description": "Changes the order of the provided application ids to the matching position that the id has in the list. If the authorized user does not belong to the workspace it will be ignored. The order of the not provided tables will be set to `0`.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Updates the order of the applications in the workspace related to the provided value.", + "example": 0 + }, + { + "name": "application_ids", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/audit-log", + "method": "listEntries", + "httpMethod": "get", + "tag": "Audit log", + "typeScriptTag": "auditLog", + "description": "Lists all audit log entries for the given workspace id.\n\nThis is a **enterprise** feature.", + "parameters": [ + { + "name": "actionType", + "schema": "string", + "description": "Filter the audit log entries by action type." + }, + { + "name": "fromTimestamp", + "schema": "string", + "description": "The ISO timestamp to filter the audit log entries from." + }, + { + "name": "page", + "schema": "integer", + "description": "Defines which page should be returned." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many audit log entries should be returned per page." + }, + { + "name": "sorts", + "schema": "string", + "description": "A comma separated string of attributes to sort by, each attribute must be prefixed with `+` for a descending sort or a `-` for an ascending sort. The accepted attribute names are: `user, workspace, type, timestamp, ip_address`. For example `sorts=-user,-workspace` will sort the audit log entries first by descending user and then ascending workspace. A sortparameter with multiple instances of the same sort attribute will respond with the ERROR_INVALID_SORT_ATTRIBUTE error." + }, + { + "name": "toTimestamp", + "schema": "string", + "description": "The ISO timestamp to filter the audit log entries to." + }, + { + "name": "userId", + "schema": "integer", + "description": "Filter the audit log entries by user id." + }, + { + "name": "workspaceId", + "schema": "integer", + "description": "Filter the audit log entries by workspace id. This filter works only for the admin audit log." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/audit-log/action-types", + "method": "listActionTypes", + "httpMethod": "get", + "tag": "Audit log", + "typeScriptTag": "auditLog", + "description": "List all distinct action types related to an audit log entry.\n\nThis is a **enterprise** feature.", + "parameters": [ + { + "name": "search", + "schema": "string", + "description": "If provided only action_types with name that match the query will be returned." + }, + { + "name": "workspaceId", + "schema": "integer", + "description": "Return action types related to the workspace." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/audit-log/export", + "method": "exportJob", + "httpMethod": "post", + "tag": "Audit log", + "typeScriptTag": "auditLog", + "description": "Creates a job to export the filtered audit log to a CSV file.\n\nThis is a **enterprise** feature.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "url", + "schema": "string", + "required": true, + "description": "", + "example": "URL" + }, + { + "name": "export_charset", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "csv_column_separator", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "csv_first_row_header", + "schema": "boolean", + "required": false, + "description": "", + "default": true + }, + { + "name": "filter_user_id", + "schema": "integer", + "required": false, + "description": "" + }, + { + "name": "filter_workspace_id", + "schema": "integer", + "required": false, + "description": "" + }, + { + "name": "filter_action_type", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "filter_from_timestamp", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "filter_to_timestamp", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "exclude_columns", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "202", + "description": "When mixed in to a model serializer for an ExportJob this will add an url field\nwith the actual usable url of the export job's file (if it has one)." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/audit-log/users", + "method": "listUsers", + "httpMethod": "get", + "tag": "Audit log", + "typeScriptTag": "auditLog", + "description": "List all users that have performed an action in the audit log.\n\nThis is a **enterprise** feature.", + "parameters": [ + { + "name": "page", + "schema": "integer", + "description": "Defines which page should be returned." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only users with email that match the query will be returned." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many users should be returned per page." + }, + { + "name": "workspaceId", + "schema": "integer", + "description": "Return users belonging to the given workspace_id." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/audit-log/workspaces", + "method": "listDistinctWorkspaceNames", + "httpMethod": "get", + "tag": "Audit log", + "typeScriptTag": "auditLog", + "description": "List all distinct workspace names related to an audit log entry.\n\nThis is a **enterprise** feature.", + "parameters": [ + { + "name": "page", + "schema": "integer", + "description": "Defines which page should be returned." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only workspaces with name that match the query will be returned." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many workspaces should be returned per page." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "No response body" + } + ] + }, + { + "url": "/api/auth-provider/login-options", + "method": "listLoginOptions", + "httpMethod": "get", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "Lists the available login options for the configured authentication providers.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "Unspecified response body" + } + ] + }, + { + "url": "/api/builder/{builder_id}/domains", + "method": "getAll", + "httpMethod": "get", + "tag": "Builder domains", + "typeScriptTag": "builderDomains", + "description": "Gets all the domains of a builder", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "builderId", + "schema": "integer", + "required": true, + "description": "Gets all the domains for the specified builder", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/{builder_id}/domains", + "method": "createNewDomain", + "httpMethod": "post", + "tag": "Builder domains", + "typeScriptTag": "builderDomains", + "description": "Creates a new domain for an application builder", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "builderId", + "schema": "integer", + "required": true, + "description": "Creates a domain for the application builder related tothe provided value", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/{builder_id}/domains/order", + "method": "applyOrder", + "httpMethod": "post", + "tag": "Builder domains", + "typeScriptTag": "builderDomains", + "description": "Apply a new order to the domains of a builder", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "builderId", + "schema": "integer", + "required": true, + "description": "The builder the domain belongs to", + "example": 0 + }, + { + "name": "domain_ids", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/{builder_id}/pages", + "method": "createNewPage", + "httpMethod": "post", + "tag": "Builder pages", + "typeScriptTag": "builderPages", + "description": "Creates a new page for an application builder", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "builderId", + "schema": "integer", + "required": true, + "description": "Creates a page for the application builder related to the provided value.", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "path", + "schema": "string", + "required": true, + "description": "", + "example": "PATH" + }, + { + "name": "path_params", + "schema": "array", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "👉 Mind to update the\nbaserow.contrib.builder.api.domains.serializer.PublicPageSerializer\nwhen you update this one." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/{builder_id}/pages/order", + "method": "applyOrderToPages", + "httpMethod": "post", + "tag": "Builder pages", + "typeScriptTag": "builderPages", + "description": "Apply a new order to the pages of a builder", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "builderId", + "schema": "integer", + "required": true, + "description": "The builder the page belongs to", + "example": 0 + }, + { + "name": "page_ids", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/{builder_id}/theme", + "method": "updateProperties", + "httpMethod": "patch", + "tag": "Builder theme", + "typeScriptTag": "builderTheme", + "description": "Updates the theme properties for the provided id.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "builderId", + "schema": "integer", + "required": true, + "description": "Updates the theme for the application builder related to the provided value.", + "example": 0 + }, + { + "name": "primary_color", + "schema": "string", + "description": "" + }, + { + "name": "secondary_color", + "schema": "string", + "description": "" + }, + { + "name": "border_color", + "schema": "string", + "description": "" + }, + { + "name": "heading_1_font_size", + "schema": "integer", + "description": "" + }, + { + "name": "heading_1_color", + "schema": "string", + "description": "" + }, + { + "name": "heading_2_font_size", + "schema": "integer", + "description": "" + }, + { + "name": "heading_2_color", + "schema": "string", + "description": "" + }, + { + "name": "heading_3_font_size", + "schema": "integer", + "description": "" + }, + { + "name": "heading_3_color", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/data-source/{data_source_id}", + "method": "deleteById", + "httpMethod": "delete", + "tag": "Builder data sources", + "typeScriptTag": "builderDataSources", + "description": "Deletes the data_source related by the given id.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "dataSourceId", + "schema": "integer", + "required": true, + "description": "The id of the data_source", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/data-source/{data_source_id}", + "method": "updateExistingDataSource", + "httpMethod": "patch", + "tag": "Builder data sources", + "typeScriptTag": "builderDataSources", + "description": "Updates an existing builder data_source.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "dataSourceId", + "schema": "integer", + "required": true, + "description": "The id of the data_source", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/data-source/{data_source_id}/dispatch", + "method": "dispatchServiceResult", + "httpMethod": "post", + "tag": "Builder data sources", + "typeScriptTag": "builderDataSources", + "description": "Dispatches the service of the related data_source and returns the result.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "dataSourceId", + "schema": "integer", + "required": true, + "description": "The id of the data_source you want to call the dispatch for", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/api/builder/data_source/{data_source_id}/move", + "method": "moveDataSource", + "httpMethod": "patch", + "tag": "Builder data sources", + "typeScriptTag": "builderDataSources", + "description": "Moves the data_source in the page before another data_source or at the end of the page if no before data_source is given. The data_sources must belong to the same page.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "dataSourceId", + "schema": "integer", + "required": true, + "description": "The id of the data_source to move", + "example": 0 + }, + { + "name": "before_id", + "schema": "integer", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/domains/{domain_id}", + "method": "removeExistingDomain", + "httpMethod": "delete", + "tag": "Builder domains", + "typeScriptTag": "builderDomains", + "description": "Deletes an existing domain of an application builder", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "domainId", + "schema": "integer", + "required": true, + "description": "The id of the domain", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/domains/{domain_id}", + "method": "updateExistingDomain", + "httpMethod": "patch", + "tag": "Builder domains", + "typeScriptTag": "builderDomains", + "description": "Updates an existing domain of an application builder", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "domainId", + "schema": "integer", + "required": true, + "description": "The id of the domain", + "example": 0 + }, + { + "name": "type", + "schema": "string", + "description": "" + }, + { + "name": "domain_name", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/domains/{domain_id}/publish/async", + "method": "startPublishJob", + "httpMethod": "post", + "tag": "Builder domains", + "typeScriptTag": "builderDomains", + "description": "This endpoint starts an asynchronous job to publish the builder. The job clones the current version of the given builder and publish it for the given domain.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "domainId", + "schema": "integer", + "required": true, + "description": "The builder application id the user wants to publish.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/domains/ask-public-domain-exists", + "method": "checkDomainExists", + "httpMethod": "get", + "tag": "Builder domains", + "typeScriptTag": "builderDomains", + "description": "This endpoint can be used to check whether a domain exists for SSL certificate purposes. It's compatible with the Caddy on_demand TLS as described here: https://caddyserver.com/docs/json/apps/tls/automation/on_demand/ask/. It will respond with a 200 status code if it exists or a 404 if it doesn't exist.", + "parameters": [ + { + "name": "domain", + "schema": "integer", + "description": "The domain name for which" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "No response body" + }, + { + "statusCode": "404", + "description": "No response body" + } + ] + }, + { + "url": "/api/builder/domains/published/by_id/{builder_id}", + "method": "serializedVersionById", + "httpMethod": "get", + "tag": "Builder public", + "typeScriptTag": "builderPublic", + "description": "Returns the public serialized version of the builder and its pages for the given builder id.", + "parameters": [ + { + "name": "builderId", + "schema": "integer", + "required": true, + "description": "Returns the builder related to the provided Id and its pages.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A public version of the builder serializer with less data to prevent data leaks." + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/domains/published/by_name/{domain_name}", + "method": "serializedVersion", + "httpMethod": "get", + "tag": "Builder public", + "typeScriptTag": "builderPublic", + "description": "Returns the public serialized version of the builder for the given domain name and its pages .", + "parameters": [ + { + "name": "domainName", + "schema": "string", + "required": true, + "description": "Returns the builder published for the given domain name.", + "example": "DOMAIN_NAME" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A public version of the builder serializer with less data to prevent data leaks." + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/domains/published/page/{page_id}/data_sources", + "method": "listPageDataSources", + "httpMethod": "get", + "tag": "Builder data sources", + "typeScriptTag": "builderDataSources", + "description": "Lists all the data_sources of the page related to the provided parameter if the builder is public.", + "parameters": [ + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "Returns only the data_sources of the page related to the provided Id if the related builder is public.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/domains/published/page/{page_id}/elements", + "method": "getPageElements", + "httpMethod": "get", + "tag": "Builder elements", + "typeScriptTag": "builderElements", + "description": "Lists all the elements of the page related to the provided parameter. If the user is Anonymous, the page must belong to a published builder instance to being accessible.", + "parameters": [ + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "Returns the elements of the page related to the provided Id.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/domains/published/page/{page_id}/workflow_actions", + "method": "listPageWorkflowActions", + "httpMethod": "get", + "tag": "Builder workflow actions", + "typeScriptTag": "builderWorkflowActions", + "description": "Lists all the workflow actions with their public accessible data. Some configuration might be omitted for security reasons such as passwords or PII.", + "parameters": [ + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "Returns only the public workflow actions of the page related to the provided Id.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/element/{element_id}", + "method": "removeElementById", + "httpMethod": "delete", + "tag": "Builder elements", + "typeScriptTag": "builderElements", + "description": "Deletes the element related by the given id.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "elementId", + "schema": "integer", + "required": true, + "description": "The id of the element", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/element/{element_id}", + "method": "updateExistingElement", + "httpMethod": "patch", + "tag": "Builder elements", + "typeScriptTag": "builderElements", + "description": "Updates an existing builder element.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "elementId", + "schema": "integer", + "required": true, + "description": "The id of the element", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/element/{element_id}/duplicate", + "method": "duplicateElementChildren", + "httpMethod": "post", + "tag": "Builder elements", + "typeScriptTag": "builderElements", + "description": "Duplicates an element and all of the elements children and the associated workflow actions as well.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "elementId", + "schema": "integer", + "required": true, + "description": "The id of the element to duplicate", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/element/{element_id}/move", + "method": "moveElement", + "httpMethod": "patch", + "tag": "Builder elements", + "typeScriptTag": "builderElements", + "description": "Moves the element in the page before another element or at the end of the page if no before element is given. The elements must belong to the same page.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "elementId", + "schema": "integer", + "required": true, + "description": "The id of the element to move", + "example": 0 + }, + { + "name": "before_id", + "schema": "integer", + "description": "" + }, + { + "name": "parent_element_id", + "schema": "integer", + "description": "" + }, + { + "name": "place_in_container", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/page/{page_id}/data-sources", + "method": "listPageDataSources", + "httpMethod": "get", + "tag": "Builder data sources", + "typeScriptTag": "builderDataSources", + "description": "Lists all the data_sources of the page related to the provided parameter if the user has access to the related builder's workspace. If the workspace is related to a template, then this endpoint will be publicly accessible.", + "parameters": [ + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "Returns only the data_sources of the page related to the provided Id.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/page/{page_id}/data-sources", + "method": "createNew", + "httpMethod": "post", + "tag": "Builder data sources", + "typeScriptTag": "builderDataSources", + "description": "Creates a new builder data_source", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "Creates a data_source for the builder page related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/page/{page_id}/dispatch-data-sources", + "method": "dispatchPageDataSources", + "httpMethod": "post", + "tag": "Builder data sources", + "typeScriptTag": "builderDataSources", + "description": "Dispatches the service of the related page data_sources", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "The page we want to dispatch the data source for.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/api/builder/page/{page_id}/elements", + "method": "getPageElements", + "httpMethod": "get", + "tag": "Builder elements", + "typeScriptTag": "builderElements", + "description": "Lists all the elements of the page related to the provided parameter if the user has access to the related builder's workspace. If the workspace is related to a template, then this endpoint will be publicly accessible.", + "parameters": [ + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "Returns only the elements of the page related to the provided Id.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/page/{page_id}/elements", + "method": "createNewElement", + "httpMethod": "post", + "tag": "Builder elements", + "typeScriptTag": "builderElements", + "description": "Creates a new builder element", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "Creates an element for the builder page related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/page/{page_id}/workflow_actions", + "method": "listPageWorkflowActions", + "httpMethod": "get", + "tag": "Builder workflow actions", + "typeScriptTag": "builderWorkflowActions", + "description": "Lists all the workflow actions of the page related to the provided parameter if the user has access to the related builder's workspace. If the workspace is related to a template, then this endpoint will be publicly accessible.", + "parameters": [ + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "Returns only the workflow actions of the page related to the provided Id.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/page/{page_id}/workflow_actions", + "method": "createNewAction", + "httpMethod": "post", + "tag": "Builder workflow actions", + "typeScriptTag": "builderWorkflowActions", + "description": "Creates a new builder workflow action", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "Creates a workflow action for the builder page related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/page/{page_id}/workflow_actions/order", + "method": "applyNewOrder", + "httpMethod": "post", + "tag": "Builder workflow actions", + "typeScriptTag": "builderWorkflowActions", + "description": "Apply a new order to the workflow actions of a page", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "The page the workflow actions belong to", + "example": 0 + }, + { + "name": "workflow_action_ids", + "schema": "array", + "required": true, + "description": "" + }, + { + "name": "element_id", + "schema": "integer", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/pages/{page_id}", + "method": "deletePage", + "httpMethod": "delete", + "tag": "Builder pages", + "typeScriptTag": "builderPages", + "description": "Deletes an existing page of an application builder", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "The id of the page", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/pages/{page_id}", + "method": "updateExistingPage", + "httpMethod": "patch", + "tag": "Builder pages", + "typeScriptTag": "builderPages", + "description": "Updates an existing page of an application builder", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "The id of the page", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "description": "" + }, + { + "name": "path", + "schema": "string", + "description": "" + }, + { + "name": "path_params", + "schema": "array", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "👉 Mind to update the\nbaserow.contrib.builder.api.domains.serializer.PublicPageSerializer\nwhen you update this one." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/pages/{page_id}/duplicate/async", + "method": "startDuplicationJob", + "httpMethod": "post", + "tag": "Builder pages", + "typeScriptTag": "builderPages", + "description": "Start a job to duplicate the page with the provided `page_id` parameter if the authorized user has access to the builder's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "pageId", + "schema": "integer", + "required": true, + "description": "The page to duplicate.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/workflow_action/{workflow_action_id}", + "method": "deleteWorkflowActionById", + "httpMethod": "delete", + "tag": "Builder workflow actions", + "typeScriptTag": "builderWorkflowActions", + "description": "Deletes the workflow action related by the given id.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "workflowActionId", + "schema": "integer", + "required": true, + "description": "The id of the workflow action", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/workflow_action/{workflow_action_id}", + "method": "updateExistingAction", + "httpMethod": "patch", + "tag": "Builder workflow actions", + "typeScriptTag": "builderWorkflowActions", + "description": "Updates an existing builder workflow action.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "workflowActionId", + "schema": "integer", + "required": true, + "description": "The id of the workflow action", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/builder/workflow_action/{workflow_action_id}/dispatch", + "method": "dispatchServiceResult", + "httpMethod": "post", + "tag": "Builder workflow actions", + "typeScriptTag": "builderWorkflowActions", + "description": "Dispatches the service of the related workflow_action and returns the result.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "workflowActionId", + "schema": "integer", + "required": true, + "description": "The id of the workflow_action you want to call the dispatch for.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "default", + "description": "" + } + ] + }, + { + "url": "/api/database/export/{job_id}", + "method": "exportJobDetails", + "httpMethod": "get", + "tag": "Database table export", + "typeScriptTag": "databaseTableExport", + "description": "Returns information such as export progress and state or the url of the exported file for the specified export job, only if the requesting user has access.", + "parameters": [ + { + "name": "jobId", + "schema": "integer", + "required": true, + "description": "The job id to lookup information about.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "When mixed in to a model serializer for an ExportJob this will add an url field\nwith the actual usable url of the export job's file (if it has one)." + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/export/table/{table_id}", + "method": "table", + "httpMethod": "post", + "tag": "Database table export", + "typeScriptTag": "databaseTableExport", + "description": "Creates and starts a new export job for a table given some exporter options. Returns an error if the requesting user does not have permissionsto view the table.", + "parameters": [ + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "The table id to create and start an export job for", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "When mixed in to a model serializer for an ExportJob this will add an url field\nwith the actual usable url of the export job's file (if it has one)." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/fields/{field_id}", + "method": "deleteField", + "httpMethod": "delete", + "tag": "Database table fields", + "typeScriptTag": "databaseTableFields", + "description": "Deletes the existing field if the authorized user has access to the related database's workspace. Note that all the related data to that field is also deleted. Primary fields cannot be deleted because their value represents the row. If deleting the field causes other fields to change then the specificinstances of those fields will be included in the related fields response key.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "fieldId", + "schema": "integer", + "required": true, + "description": "Deletes the field related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/fields/{field_id}", + "method": "getFieldProperties", + "httpMethod": "get", + "tag": "Database table fields", + "typeScriptTag": "databaseTableFields", + "description": "Returns the existing field if the authorized user has access to the related database's workspace. Depending on the type different properties could be returned.", + "parameters": [ + { + "name": "fieldId", + "schema": "integer", + "required": true, + "description": "Returns the field related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/fields/{field_id}", + "method": "updateField", + "httpMethod": "patch", + "tag": "Database table fields", + "typeScriptTag": "databaseTableFields", + "description": "Updates the existing field if the authorized user has access to the related database's workspace. The type can also be changed and depending on that type, different additional properties can optionally be set. If you change the field type it could happen that the data conversion fails, in that case the `ERROR_CANNOT_CHANGE_FIELD_TYPE` is returned, but this rarely happens. If a data value cannot be converted it is set to `null` so data might go lost.If updated the field causes other fields to change then the specificinstances of those fields will be included in the related fields response key.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "fieldId", + "schema": "integer", + "required": true, + "description": "Updates the field related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/fields/{field_id}/duplicate/async", + "method": "duplicateAsync", + "httpMethod": "post", + "tag": "Database table fields", + "typeScriptTag": "databaseTableFields", + "description": "Duplicates the table with the provided `table_id` parameter if the authorized user has access to the database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "fieldId", + "schema": "integer", + "required": true, + "description": "The field to duplicate.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/fields/{field_id}/unique_row_values", + "method": "getUniqueRowValues", + "httpMethod": "get", + "tag": "Database table fields", + "typeScriptTag": "databaseTableFields", + "description": "Returns a list of all the unique row values for an existing field, sorted in order of frequency.", + "parameters": [ + { + "name": "fieldId", + "schema": "integer", + "required": true, + "description": "Returns the values related to the provided field.", + "example": 0 + }, + { + "name": "limit", + "schema": "integer", + "description": "Defines how many values should be returned." + }, + { + "name": "splitCommaSeparated", + "schema": "boolean", + "description": "Indicates whether the original column values must be splitted by comma." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/fields/table/{table_id}", + "method": "getTableFields", + "httpMethod": "get", + "tag": "Database table fields", + "typeScriptTag": "databaseTableFields", + "description": "Lists all the fields of the table related to the provided parameter if the user has access to the related database's workspace. If the workspace is related to a template, then this endpoint will be publicly accessible. A table consists of fields and each field can have a different type. Each type can have different properties. A field is comparable with a regular table's column.", + "parameters": [ + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Returns only the fields of the table related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/fields/table/{table_id}", + "method": "createNewField", + "httpMethod": "post", + "tag": "Database table fields", + "typeScriptTag": "databaseTableFields", + "description": "Creates a new field for the table related to the provided `table_id` parameter if the authorized user has access to the related database's workspace. Depending on the type, different properties can optionally be set.If creating the field causes other fields to change then the specificinstances of those fields will be included in the related fields response key.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Creates a new field for the provided table related to the value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/formula/{table_id}/type", + "method": "calculateFormulaType", + "httpMethod": "post", + "tag": "Database table fields", + "typeScriptTag": "databaseTableFields", + "description": "Calculates and returns the type of the specified formula value. Does not change the state of the field in any way.", + "parameters": [ + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "The table id of the formula field to type.", + "example": 0 + }, + { + "name": "formula", + "schema": "string", + "required": true, + "description": "", + "example": "FORMULA" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/names", + "method": "getNamesOfRow", + "httpMethod": "get", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Returns the names of the given row of the given tables. The nameof a row is the primary field value for this row. The result can be usedfor example, when you want to display the name of a linked row from another table.", + "parameters": [ + { + "name": "table_{id}", + "schema": "string", + "description": "A list of comma separated row ids to query from the table with id {id}. For example, if you want the name of row `42` and `43` from table `28` this parameter will be `table__28=42,43`. You can specify multiple rows for different tables but every tables must be in the same database. You need at least read permission on all specified tables." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}", + "method": "listTableRows", + "httpMethod": "get", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Lists all the rows of the table related to the provided parameter if the user has access to the related database's workspace. The response is paginated by a page/size style. It is also possible to provide an optional search query, only rows where the data matches the search query are going to be returned then. The properties of the returned rows depends on which fields the table has. For a complete overview of fields use the **list_database_table_fields** endpoint to list them all. In the example all field types are listed, but normally the number in field_{id} key is going to be the id of the field. Or if the GET parameter `user_field_names` is provided then the keys will be the name of the field. The value is what the user has provided and the format of it depends on the fields type.", + "parameters": [ + { + "name": "exclude", + "schema": "string", + "description": "All the fields are included in the response by default. You can select a subset of fields by providing the exclude query parameter. If you for example provide the following GET parameter `exclude=field_1,field_2` then the fields with id `1` and id `2` are going to be excluded from the selection and response. If the `user_field_names` parameter is provided then instead exclude should be a comma separated list of the actual field names. For field names with commas you should surround the name with quotes like so: `exclude=My Field,\"Field With , \"`. A backslash can be used to escape field names which contain double quotes like so: `exclude=My Field,Field with \\\"`." + }, + { + "name": "filter_{field}_{filter}", + "schema": "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\nPlease note that if the `filters` parameter is provided, this parameter will be ignored. \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, lower_than, 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, single_select_equal, single_select_not_equal, 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." + }, + { + "name": "filterType", + "schema": "string", + "description": "`AND`: Indicates that the rows must match all the provided filters.\n`OR`: Indicates that the rows only have to match one of the filters.\n\nThis works only if two or more filters are provided.Please note that if the `filters` parameter is provided, this parameter will be ignored. \n\n" + }, + { + "name": "filters", + "schema": "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\nPlease note that if this parameter is provided, all other `filter__{field}__{filter}` will be ignored, as well as the `filter_type` parameter. \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, lower_than, 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, single_select_equal, single_select_not_equal, 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." + }, + { + "name": "include", + "schema": "string", + "description": "All the fields are included in the response by default. You can select a subset of fields by providing the include query parameter. If you for example provide the following GET parameter `include=field_1,field_2` then only the fields withid `1` and id `2` are going to be selected and included in the response. If the `user_field_names` parameter is provided then instead include should be a comma separated list of the actual field names. For field names with commas you should surround the name with quotes like so: `include=My Field,\"Field With , \"`. A backslash can be used to escape field names which contain double quotes like so: `include=My Field,Field with \\\"`." + }, + { + "name": "orderBy", + "schema": "string", + "description": "Optionally the rows can be ordered by provided field ids separated by comma. By default a field is ordered in ascending (https://baserow.io/docs/index order, but by prepending the field with a '-' it can be ordered descending (https://baserow.io/docs/index. If the `user_field_names` parameter is provided then instead order_by should be a comma separated list of the actual field names. For field names with commas you should surround the name with quotes like so: `order_by=My Field,\"Field With , \"`. A backslash can be used to escape field names which contain double quotes like so: `order_by=My Field,Field with \\\"`." + }, + { + "name": "page", + "schema": "integer", + "description": "Defines which page of rows should be returned." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only rows with data that matches the search query are going to be returned." + }, + { + "name": "searchMode", + "schema": "string", + "description": "If provided, allows API consumers to determine what kind of search experience they wish to have. If the default `full-text-with-count` is used, then Postgres full-text search is used. If `compat` is provided then the search term will be exactly searched for including whitespace on each cell. This is the Baserow legacy search behaviour." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many rows should be returned per page." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Returns the rows of the table related to the provided value.", + "example": 0 + }, + { + "name": "userFieldNames", + "schema": "boolean", + "description": "A flag query parameter which if provided the returned json will use the user specified field names instead of internal Baserow field names (field_123 etc). " + }, + { + "name": "viewId", + "schema": "integer", + "description": "Includes all the filters and sorts of the provided view." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}", + "method": "createRow", + "httpMethod": "post", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Creates a new row in the table if the user has access to the related table's workspace. The accepted body fields are depending on the fields that the table has. For a complete overview of fields use the **list_database_table_fields** to list them all. None of the fields are required, if they are not provided the value is going to be `null` or `false` or some default value is that is set. If you want to add a value for the field with for example id `10`, the key must be named `field_10`. Or instead if the `user_field_names` GET param is provided the key must be the name of the field. Of course multiple fields can be provided in one request. In the examples below you will find all the different field types, the numbers/ids in the example are just there for example purposes, the field_ID must be replaced with the actual id of the field or the name of the field if `user_field_names` is provided.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "before", + "schema": "integer", + "description": "If provided then the newly created row will be positioned before the row with the provided id." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Creates a row in the table related to the provided value.", + "example": 0 + }, + { + "name": "userFieldNames", + "schema": "boolean", + "description": "A flag query parameter which if provided this endpoint will expect and return the user specified field names instead of internal Baserow field names (field_123 etc)." + }, + { + "name": "field_1", + "schema": "string", + "description": "" + }, + { + "name": "field_2", + "schema": "string", + "description": "" + }, + { + "name": "field_3", + "schema": "string", + "description": "" + }, + { + "name": "field_4", + "schema": "string", + "description": "" + }, + { + "name": "field_5", + "schema": "string", + "description": "" + }, + { + "name": "field_6", + "schema": "integer", + "description": "", + "default": 0 + }, + { + "name": "field_7", + "schema": "boolean", + "description": "", + "default": false + }, + { + "name": "field_8", + "schema": "string", + "description": "" + }, + { + "name": "field_13", + "schema": "number", + "description": "" + }, + { + "name": "field_14", + "schema": "array", + "description": "" + }, + { + "name": "field_15", + "schema": "array", + "description": "" + }, + { + "name": "field_16", + "schema": "integer", + "description": "" + }, + { + "name": "field_17", + "schema": "array", + "description": "" + }, + { + "name": "field_18", + "schema": "string", + "description": "" + }, + { + "name": "field_23", + "schema": "array", + "description": "" + }, + { + "name": "field_26", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}/{row_id}", + "method": "deleteRow", + "httpMethod": "delete", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Deletes an existing row in the table if the user has access to the table's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "rowId", + "schema": "integer", + "required": true, + "description": "Deletes the row related to the value.", + "example": 0 + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Deletes the row in the table related to the value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}/{row_id}", + "method": "getRowByTableIdAndRowId", + "httpMethod": "get", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Fetches an existing row from the table if the user has access to the related table's workspace. The properties of the returned row depend on which fields the table has. For a complete overview of fields use the **list_database_table_fields** endpoint to list them all. In the example all field types are listed, but normally the number in field_{id} key is going to be the id of the field of the field. Or if the GET parameter `user_field_names` is provided then the keys will be the name of the field. The value is what the user has provided and the format of it depends on the fields type.", + "parameters": [ + { + "name": "rowId", + "schema": "integer", + "required": true, + "description": "Returns the row related the provided value.", + "example": 0 + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Returns the row of the table related to the provided value.", + "example": 0 + }, + { + "name": "userFieldNames", + "schema": "boolean", + "description": "A flag query parameter which if provided the returned json will use the user specified field names instead of internal Baserow field names (field_123 etc). " + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}/{row_id}", + "method": "updateRow", + "httpMethod": "patch", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Updates an existing row in the table if the user has access to the related table's workspace. The accepted body fields are depending on the fields that the table has. For a complete overview of fields use the **list_database_table_fields** endpoint to list them all. None of the fields are required, if they are not provided the value is not going to be updated. When you want to update a value for the field with id `10`, the key must be named `field_10`. Or if the GET parameter `user_field_names` is provided the key of the field to update must be the name of the field. Multiple different fields to update can be provided in one request. In the examples below you will find all the different field types, the numbers/ids in the example are just there for example purposes, the field_ID must be replaced with the actual id of the field or the name of the field if `user_field_names` is provided.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "rowId", + "schema": "integer", + "required": true, + "description": "Updates the row related to the value.", + "example": 0 + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Updates the row in the table related to the value.", + "example": 0 + }, + { + "name": "userFieldNames", + "schema": "boolean", + "description": "A flag query parameter which if provided this endpoint will expect and return the user specified field names instead of internal Baserow field names (field_123 etc)." + }, + { + "name": "field_1", + "schema": "string", + "description": "" + }, + { + "name": "field_2", + "schema": "string", + "description": "" + }, + { + "name": "field_3", + "schema": "string", + "description": "" + }, + { + "name": "field_4", + "schema": "string", + "description": "" + }, + { + "name": "field_5", + "schema": "string", + "description": "" + }, + { + "name": "field_6", + "schema": "integer", + "description": "", + "default": 0 + }, + { + "name": "field_7", + "schema": "boolean", + "description": "", + "default": false + }, + { + "name": "field_8", + "schema": "string", + "description": "" + }, + { + "name": "field_13", + "schema": "number", + "description": "" + }, + { + "name": "field_14", + "schema": "array", + "description": "" + }, + { + "name": "field_15", + "schema": "array", + "description": "" + }, + { + "name": "field_16", + "schema": "integer", + "description": "" + }, + { + "name": "field_17", + "schema": "array", + "description": "" + }, + { + "name": "field_18", + "schema": "string", + "description": "" + }, + { + "name": "field_23", + "schema": "array", + "description": "" + }, + { + "name": "field_26", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}/{row_id}/adjacent", + "method": "getAdjacentRow", + "httpMethod": "get", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Fetches the adjacent row to a given row_id in the table with the given table_id. If the previous flag is set it will return the previous row, otherwise it will return the next row. You can specifya view_id and it will apply the filters and sorts of the provided view.", + "parameters": [ + { + "name": "previous", + "schema": "boolean", + "description": "A flag query parameter which if provided returns theprevious row to the specified row_id. If it's not setit will return the next row." + }, + { + "name": "rowId", + "schema": "integer", + "required": true, + "description": "Returns the row adjacent the provided value.", + "example": 0 + }, + { + "name": "search", + "schema": "string", + "description": "If provided, the adjacent row will be one that matchesthe search query." + }, + { + "name": "searchMode", + "schema": "string", + "description": "If provided, allows API consumers to determine what kind of search experience they wish to have. If the default `full-text-with-count` is used, then Postgres full-text search is used. If `compat` is provided then the search term will be exactly searched for including whitespace on each cell. This is the Baserow legacy search behaviour." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Returns the row of the table related to the provided value.", + "example": 0 + }, + { + "name": "userFieldNames", + "schema": "boolean", + "description": "A flag query parameter which if provided the returned json will use the user specified field names instead of internal Baserow field names (field_123 etc). " + }, + { + "name": "viewId", + "schema": "integer", + "description": "Applies the filters and sorts of the provided view." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}/{row_id}/history", + "method": "getRowChangeHistory", + "httpMethod": "get", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Fetches the row change history of a given row_id in the table with the given table_id. The row change history is paginated and can be limited with the limit and offset query parameters.", + "parameters": [ + { + "name": "limit", + "schema": "integer", + "description": "The maximum number of row change history entries to return." + }, + { + "name": "offset", + "schema": "integer", + "description": "The offset of the row change history entries to return." + }, + { + "name": "rowId", + "schema": "integer", + "required": true, + "description": "The id of the row to fetch the change history from.", + "example": 0 + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "The id of the table to fetch the row change history from.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}/{row_id}/move", + "method": "moveRowTo", + "httpMethod": "patch", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Moves the row related to given `row_id` parameter to another position. It is only possible to move the row before another existing row or to the end. If the `before_id` is provided then the row related to the `row_id` parameter is moved before that row. If the `before_id` parameter is not provided, then the row will be moved to the end.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "beforeId", + "schema": "integer", + "description": "Moves the row related to the given `row_id` before the row related to the provided value. If not provided, then the row will be moved to the end." + }, + { + "name": "rowId", + "schema": "integer", + "required": true, + "description": "Moves the row related to the value.", + "example": 0 + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Moves the row in the table related to the value.", + "example": 0 + }, + { + "name": "userFieldNames", + "schema": "boolean", + "description": "A flag query parameter which if provided the returned json will use the user specified field names instead of internal Baserow field names (field_123 etc). " + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}/batch", + "method": "updateBatchRows", + "httpMethod": "patch", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Updates existing rows in the table if the user has access to the related table's workspace. The accepted body fields are depending on the fields that the table has. For a complete overview of fields use the **list_database_table_fields** endpoint to list them all. None of the fields are required, if they are not provided the value is not going to be updated. When you want to update a value for the field with id `10`, the key must be named `field_10`. Or if the GET parameter `user_field_names` is provided the key of the field to update must be the name of the field. Multiple different fields to update can be provided for each row. In the examples below you will find all the different field types, the numbers/ids in the example are just there for example purposes, the field_ID must be replaced with the actual id of the field or the name of the field if `user_field_names` is provided.\n\n **WARNING:** This endpoint doesn't yet work with row updated webhooks.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Updates the rows in the table.", + "example": 0 + }, + { + "name": "userFieldNames", + "schema": "boolean", + "description": "A flag query parameter which if provided this endpoint will expect and return the user specified field names instead of internal Baserow field names (field_123 etc)." + }, + { + "name": "items", + "schema": "array", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}/batch", + "method": "createBatchRows", + "httpMethod": "post", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Creates new rows in the table if the user has access to the related table's workspace. The accepted body fields are depending on the fields that the table has. For a complete overview of fields use the **list_database_table_fields** to list them all. None of the fields are required, if they are not provided the value is going to be `null` or `false` or some default value is that is set. If you want to add a value for the field with for example id `10`, the key must be named `field_10`. Or instead if the `user_field_names` GET param is provided the key must be the name of the field. Of course multiple fields can be provided in one request. In the examples below you will find all the different field types, the numbers/ids in the example are just there for example purposes, the field_ID must be replaced with the actual id of the field or the name of the field if `user_field_names` is provided.\n\n **WARNING:** This endpoint doesn't yet work with row created webhooks.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "before", + "schema": "integer", + "description": "If provided then the newly created rows will be positioned before the row with the provided id." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Creates the rows in the table.", + "example": 0 + }, + { + "name": "userFieldNames", + "schema": "boolean", + "description": "A flag query parameter which if provided this endpoint will expect and return the user specified field names instead of internal Baserow field names (field_123 etc)." + }, + { + "name": "items", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/rows/table/{table_id}/batch-delete", + "method": "batchDelete", + "httpMethod": "post", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Deletes existing rows in the table if the user has access to the table's workspace.\n\n **WARNING:** This endpoint doesn't yet work with row deleted webhooks.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Deletes the rows in the table related to the value.", + "example": 0 + }, + { + "name": "items", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tables/{table_id}", + "method": "deleteTable", + "httpMethod": "delete", + "tag": "Database tables", + "typeScriptTag": "databaseTables", + "description": "Deletes the existing table if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Deletes the table related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tables/{table_id}", + "method": "getTable", + "httpMethod": "get", + "tag": "Database tables", + "typeScriptTag": "databaseTables", + "description": "Returns the requested table if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Returns the table related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tables/{table_id}", + "method": "updateTable", + "httpMethod": "patch", + "tag": "Database tables", + "typeScriptTag": "databaseTables", + "description": "Updates the existing table if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Updates the table related to the provided value.", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tables/{table_id}/duplicate/async", + "method": "duplicateAsyncJob", + "httpMethod": "post", + "tag": "Database tables", + "typeScriptTag": "databaseTables", + "description": "Start a job to duplicate the table with the provided `table_id` parameter if the authorized user has access to the database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "The table to duplicate.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tables/{table_id}/import/async", + "method": "importAsyncJob", + "httpMethod": "post", + "tag": "Database tables", + "typeScriptTag": "databaseTables", + "description": "Import data in the specified table if the authorized user has access to the related database's workspace. This endpoint is asynchronous and return the created job to track the progress of the task.", + "parameters": [ + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Import data into the table related to the provided value.", + "example": 0 + }, + { + "name": "data", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tables/database/{database_id}", + "method": "listByDatabaseId", + "httpMethod": "get", + "tag": "Database tables", + "typeScriptTag": "databaseTables", + "description": "Lists all the tables that are in the database related to the `database_id` parameter if the user has access to the database's workspace. A table is exactly as the name suggests. It can hold multiple fields, each having their own type and multiple rows. They can be added via the **create_database_table_field** and **create_database_table_row** endpoints.", + "parameters": [ + { + "name": "databaseId", + "schema": "integer", + "required": true, + "description": "Returns only tables that are related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tables/database/{database_id}", + "method": "createTable", + "httpMethod": "post", + "tag": "Database tables", + "typeScriptTag": "databaseTables", + "description": "Creates synchronously a new table for the database related to the provided `database_id` parameter if the authorized user has access to the database's workspace.\n\nAs an alternative you can use the `create_async_database_table` for better performances and importing bigger files.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "databaseId", + "schema": "integer", + "required": true, + "description": "Creates a table for the database related to the provided value.", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "data", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "first_row_header", + "schema": "boolean", + "required": false, + "description": "", + "default": false + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tables/database/{database_id}/async", + "method": "createTableJob", + "httpMethod": "post", + "tag": "Database tables", + "typeScriptTag": "databaseTables", + "description": "Creates a job that creates a new table for the database related to the provided `database_id` parameter if the authorized user has access to the database's workspace. This endpoint is asynchronous and return the created job to track the progress of the task.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "databaseId", + "schema": "integer", + "required": true, + "description": "Creates a table for the database related to the provided value.", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "data", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "first_row_header", + "schema": "boolean", + "required": false, + "description": "", + "default": false + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tables/database/{database_id}/order", + "method": "updateTableOrder", + "httpMethod": "post", + "tag": "Database tables", + "typeScriptTag": "databaseTables", + "description": "Changes the order of the provided table ids to the matching position that the id has in the list. If the authorized user does not belong to the workspace it will be ignored. The order of the not provided tables will be set to `0`.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "databaseId", + "schema": "integer", + "required": true, + "description": "Updates the order of the tables in the database related to the provided value.", + "example": 0 + }, + { + "name": "table_ids", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tokens", + "method": "list", + "httpMethod": "get", + "tag": "Database tokens", + "typeScriptTag": "databaseTokens", + "description": "Lists all the database tokens that belong to the authorized user. A token can be used to create, read, update and delete rows in the tables of the token's workspace. It only works on the tables if the token has the correct permissions. The **Database table rows** endpoints can be used for these operations.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/database/tokens", + "method": "createNewToken", + "httpMethod": "post", + "tag": "Database tokens", + "typeScriptTag": "databaseTokens", + "description": "Creates a new database token for a given workspace and for the authorized user.", + "parameters": [ + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "group", + "schema": "string", + "required": true, + "description": "", + "example": "GROUP" + }, + { + "name": "workspace", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A mixin that allows us to rename the `group` field to `workspace` when serializing." + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/database/tokens/{token_id}", + "method": "deleteToken", + "httpMethod": "delete", + "tag": "Database tokens", + "typeScriptTag": "databaseTokens", + "description": "Deletes the existing database token if it is owned by the authorized user and ifthe user has access to the related workspace.", + "parameters": [ + { + "name": "tokenId", + "schema": "integer", + "required": true, + "description": "Deletes the database token related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tokens/{token_id}", + "method": "getToken", + "httpMethod": "get", + "tag": "Database tokens", + "typeScriptTag": "databaseTokens", + "description": "Returns the requested database token if it is owned by the authorized user andif the user has access to the related workspace.", + "parameters": [ + { + "name": "tokenId", + "schema": "integer", + "required": true, + "description": "Returns the database token related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A mixin that allows us to rename the `group` field to `workspace` when serializing." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tokens/{token_id}", + "method": "updateTokenOwnership", + "httpMethod": "patch", + "tag": "Database tokens", + "typeScriptTag": "databaseTokens", + "description": "Updates the existing database token if it is owned by the authorized user and ifthe user has access to the related workspace.", + "parameters": [ + { + "name": "tokenId", + "schema": "integer", + "required": true, + "description": "Updates the database token related to the provided value.", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "description": "" + }, + { + "name": "permissions", + "schema": "object", + "description": "" + }, + { + "name": "rotate_key", + "schema": "boolean", + "description": "", + "default": false + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A mixin that allows us to rename the `group` field to `workspace` when serializing." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/tokens/check", + "method": "verifyTokenValidity", + "httpMethod": "get", + "tag": "Database tokens", + "typeScriptTag": "databaseTokens", + "description": "This endpoint check be used to check if the provided personal API token is valid. If returns a `200` response if so and a `403` is not. This can be used by integrations like Zapier or n8n to test if a token is valid.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "No response body" + }, + { + "statusCode": "403", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{slug}/link-row-field-lookup/{field_id}", + "method": "getLinkRowFieldValue", + "httpMethod": "get", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "If the view is publicly shared or if an authenticated user has access to the related workspace, then this endpoint can be used to do a value lookup of the link row fields that are included in the view. Normally it is not possible for a not authenticated visitor to fetch the rows of a table. This endpoint makes it possible to fetch the id and primary field value of the related table of a link row included in the view.", + "parameters": [ + { + "name": "fieldId", + "schema": "integer", + "required": true, + "description": "The field id of the link row field.", + "example": 0 + }, + { + "name": "search", + "schema": "string", + "description": "If provided only rows with data that matches the search query are going to be returned." + }, + { + "name": "searchMode", + "schema": "string", + "description": "If provided, allows API consumers to determine what kind of search experience they wish to have. If the default `full-text-with-count` is used, then Postgres full-text search is used. If `compat` is provided then the search term will be exactly searched for including whitespace on each cell. This is the Baserow legacy search behaviour." + }, + { + "name": "slug", + "schema": "string", + "required": true, + "description": "The slug related to the view.", + "example": "SLUG" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{slug}/public/auth", + "method": "generateToken", + "httpMethod": "post", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Returns a valid never-expiring JWT token for this public shared view if the password provided matches with the one saved by the view's owner.", + "parameters": [ + { + "name": "slug", + "schema": "string", + "required": true, + "description": "The slug of the grid view to get public information about.", + "example": "SLUG" + }, + { + "name": "password", + "schema": "string", + "required": true, + "description": "", + "example": "PASSWORD" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{slug}/public/info", + "method": "getPublicInfo", + "httpMethod": "get", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Returns the required public information to display a single shared view.", + "parameters": [ + { + "name": "slug", + "schema": "string", + "required": true, + "description": "The slug of the view to get public information about.", + "example": "SLUG" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}", + "method": "deleteView", + "httpMethod": "delete", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Deletes the existing view. Note that all the related settings of the view are going to be deleted also. The data stays intact after deleting the view because this is related to the table and not the view.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Deletes the view related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}", + "method": "getViewById", + "httpMethod": "get", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Returns the existing view. Depending on the type different propertiescould be returned.", + "parameters": [ + { + "name": "include", + "schema": "string", + "description": "A comma separated list of extra attributes to include on the returned view. The supported attributes are `filters`, `sortings` and `decorations`. For example `include=filters,sortings` will add the attributes `filters` and `sortings` to every returned view, containing a list of the views filters and sortings respectively." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Returns the view related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}", + "method": "updateView", + "httpMethod": "patch", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Updates the existing view. The type cannot be changed. It depends on the existing type which properties can be changed.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "include", + "schema": "string", + "description": "A comma separated list of extra attributes to include on the returned view. The supported attributes are `filters`, `sortings` and `decorations`. For example `include=filters,sortings` will add the attributes `filters` and `sortings` to every returned view, containing a list of the views filters and sortings respectively." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Updates the view related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/decorations", + "method": "list", + "httpMethod": "get", + "tag": "Database table view decorations", + "typeScriptTag": "databaseTableViewDecorations", + "description": "Lists all decorations of the view related to the provided `view_id` if the user has access to the related database's workspace. A view can have multiple decorations. View decorators can be used to decorate rows. This can, for example, be used to change the border or background color of a row if it matches certain conditions.", + "parameters": [ + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Returns only decoration of the view given to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/decorations", + "method": "createNew", + "httpMethod": "post", + "tag": "Database table view decorations", + "typeScriptTag": "databaseTableViewDecorations", + "description": "Creates a new decoration for the view related to the provided `view_id` parameter if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Creates a decoration for the view related to the given value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/duplicate", + "method": "duplicateView", + "httpMethod": "post", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Duplicates an existing view if the user has access to it. When a view is duplicated everything is copied except:\n- The name is appended with the copy number. Ex: `ViewName`->`ViewName(https://baserow.io/docs/index` and `View(https://baserow.io/docs/index`->`View(https://baserow.io/docs/index`\n- If the original view is publicly shared, the new view will not be shared anymore", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Duplicates the view related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/field-options", + "method": "getFieldOptions", + "httpMethod": "get", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Responds with the fields options of the provided view if the authenticated user has access to the related workspace.", + "parameters": [ + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Responds with field options related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/field-options", + "method": "updateFieldOptions", + "httpMethod": "patch", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Updates the field options of a view. The field options differ per field type This could for example be used to update the field width of a `grid` view if the user changes it.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Updates the field options related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/filter-groups", + "method": "createNewFilterGroup", + "httpMethod": "post", + "tag": "Database table view filters", + "typeScriptTag": "databaseTableViewFilters", + "description": "Creates a new filter group for the view related to the provided `view_id` parameter.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "The ID of the view where create the new filter group.", + "example": 0 + }, + { + "name": "filter_type", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/filters", + "method": "getList", + "httpMethod": "get", + "tag": "Database table view filters", + "typeScriptTag": "databaseTableViewFilters", + "description": "Lists all filters of the view related to the provided `view_id`. A view can have multiple filters. When all the rows are requested for the view only those that apply to the filters are returned.", + "parameters": [ + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Returns only filters of the view related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/filters", + "method": "createNewFilter", + "httpMethod": "post", + "tag": "Database table view filters", + "typeScriptTag": "databaseTableViewFilters", + "description": "Creates a new filter for the view related to the provided `view_id` parameter. When the rows of a view are requested, for example via the `list_database_table_grid_view_rows` endpoint, then only the rows that apply to all the filters are going to be returned. A filter compares the value of a field to the value of a filter. It depends on the type how values are going to be compared.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Creates a filter for the view related to the provided value.", + "example": 0 + }, + { + "name": "field", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "type", + "schema": "string", + "required": true, + "description": "", + "example": "TYPE" + }, + { + "name": "value", + "schema": "string", + "required": false, + "description": "", + "default": "" + }, + { + "name": "group", + "schema": "integer", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/group_bys", + "method": "list", + "httpMethod": "get", + "tag": "Database table view groupings", + "typeScriptTag": "databaseTableViewGroupings", + "description": "Lists all groupings of the view related to the provided `view_id` if the user has access to the related database's workspace. A view can have multiple groupings.", + "parameters": [ + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Returns only groupings of the view related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/group_bys", + "method": "createNewGrouping", + "httpMethod": "post", + "tag": "Database table view groupings", + "typeScriptTag": "databaseTableViewGroupings", + "description": "Creates a new group by for the view related to the provided `view_id` parameter if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Creates a group by for the view related to the provided value.", + "example": 0 + }, + { + "name": "field", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "order", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "width", + "schema": "integer", + "required": false, + "description": "", + "default": 200 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/rotate-slug", + "method": "rotateSlug", + "httpMethod": "post", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Rotates the unique slug of the view by replacing it with a new value. This would mean that the publicly shared URL of the view will change. Anyone with the old URL won't be able to access the viewanymore. Only view types which are sharable can have their slugs rotated.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Rotates the slug of the view related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/sortings", + "method": "list", + "httpMethod": "get", + "tag": "Database table view sortings", + "typeScriptTag": "databaseTableViewSortings", + "description": "Lists all sortings of the view related to the provided `view_id` if the user has access to the related database's workspace. A view can have multiple sortings. When all the rows are requested they will be in the desired order.", + "parameters": [ + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Returns only sortings of the view related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/{view_id}/sortings", + "method": "createNewSort", + "httpMethod": "post", + "tag": "Database table view sortings", + "typeScriptTag": "databaseTableViewSortings", + "description": "Creates a new sort for the view related to the provided `view_id` parameter if the authorized user has access to the related database's workspace. When the rows of a view are requested, for example via the `list_database_table_grid_view_rows` endpoint, they will be returned in the respected order defined by all the sortings.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Creates a sort for the view related to the provided value.", + "example": 0 + }, + { + "name": "field", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "order", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/calendar/{slug}/public/rows", + "method": "getPublicRows", + "httpMethod": "get", + "tag": "Database table calendar view", + "typeScriptTag": "databaseTableCalendarView", + "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": [ + { + "name": "fromTimestamp", + "schema": "string", + "required": true, + "description": "Restricts results based on the calendar date field.", + "example": "FROM_TIMESTAMP" + }, + { + "name": "limit", + "schema": "integer", + "description": "Defines how many rows should be returned by default. This value can be overwritten per select option." + }, + { + "name": "offset", + "schema": "integer", + "description": "Defines from which offset the rows should be returned.This value can be overwritten per select option." + }, + { + "name": "slug", + "schema": "string", + "required": true, + "description": "Returns only rows that belong to the related view.", + "example": "SLUG" + }, + { + "name": "toTimestamp", + "schema": "string", + "required": true, + "description": "Restricts results based on the calendar date field.", + "example": "TO_TIMESTAMP" + }, + { + "name": "userTimezone", + "schema": "string", + "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. ", + "default": "UTC" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/calendar/{view_id}", + "method": "getGroupedRows", + "httpMethod": "get", + "tag": "Database table calendar view", + "typeScriptTag": "databaseTableCalendarView", + "description": "Responds with serialized rows grouped by date regarding view's date fieldif the user is authenticated and has access to the related workspace.\n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "fromTimestamp", + "schema": "string", + "required": true, + "description": "Restricts results based on the calendar date field.", + "example": "FROM_TIMESTAMP" + }, + { + "name": "include", + "schema": "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." + }, + { + "name": "limit", + "schema": "integer", + "description": "Defines how many rows should be returned by default." + }, + { + "name": "offset", + "schema": "integer", + "description": "Defines from which offset the rows should be returned.", + "default": 0 + }, + { + "name": "search", + "schema": "string", + "description": "If provided only rows with data that matches the search query are going to be returned." + }, + { + "name": "searchMode", + "schema": "string", + "description": "If provided, allows API consumers to determine what kind of search experience they wish to have. If the default `full-text-with-count` is used, then Postgres full-text search is used. If `compat` is provided then the search term will be exactly searched for including whitespace on each cell. This is the Baserow legacy search behaviour." + }, + { + "name": "toTimestamp", + "schema": "string", + "required": true, + "description": "Restricts results based on the calendar date field.", + "example": "TO_TIMESTAMP" + }, + { + "name": "userTimezone", + "schema": "string", + "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. ", + "default": "UTC" + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Returns only rows that belong to the related view's table.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/decoration/{view_decoration_id}", + "method": "deleteExistingDecoration", + "httpMethod": "delete", + "tag": "Database table view decorations", + "typeScriptTag": "databaseTableViewDecorations", + "description": "Deletes the existing decoration if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewDecorationId", + "schema": "integer", + "required": true, + "description": "Deletes the decoration related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/decoration/{view_decoration_id}", + "method": "getViewDecoration", + "httpMethod": "get", + "tag": "Database table view decorations", + "typeScriptTag": "databaseTableViewDecorations", + "description": "Returns the existing view decoration if the current user has access to the related database's workspace.", + "parameters": [ + { + "name": "viewDecorationId", + "schema": "integer", + "required": true, + "description": "Returns the view decoration related to the provided id.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/decoration/{view_decoration_id}", + "method": "updateDecoration", + "httpMethod": "patch", + "tag": "Database table view decorations", + "typeScriptTag": "databaseTableViewDecorations", + "description": "Updates the existing decoration if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewDecorationId", + "schema": "integer", + "required": true, + "description": "Updates the view decoration related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/filter-group/{filter_group_id}", + "method": "deleteFilterGroup", + "httpMethod": "delete", + "tag": "Database table view filters", + "typeScriptTag": "databaseTableViewFilters", + "description": "Deletes the existing filter group with the given `view_filter_group_id`.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "filterGroupId", + "schema": "string", + "required": true, + "description": "", + "example": "FILTER_GROUP_ID" + }, + { + "name": "viewFilterGroupId", + "schema": "integer", + "required": true, + "description": "The ID of the view filter group to delete.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/filter-group/{filter_group_id}", + "method": "getFilterGroupById", + "httpMethod": "get", + "tag": "Database table view filters", + "typeScriptTag": "databaseTableViewFilters", + "description": "Returns the existing view filter group with the given `view_filter_group_id`.", + "parameters": [ + { + "name": "filterGroupId", + "schema": "string", + "required": true, + "description": "", + "example": "FILTER_GROUP_ID" + }, + { + "name": "viewFilterGroupId", + "schema": "integer", + "required": true, + "description": "Teh ID of the view filter group to return.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/filter-group/{filter_group_id}", + "method": "updateFilterGroup", + "httpMethod": "patch", + "tag": "Database table view filters", + "typeScriptTag": "databaseTableViewFilters", + "description": "Updates the existing filter group with the given `view_filter_group_id`.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "filterGroupId", + "schema": "string", + "required": true, + "description": "", + "example": "FILTER_GROUP_ID" + }, + { + "name": "viewFilterGroupId", + "schema": "integer", + "required": true, + "description": "The ID of the view filter group to update.", + "example": 0 + }, + { + "name": "filter_type", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/filter/{view_filter_id}", + "method": "deleteFilter", + "httpMethod": "delete", + "tag": "Database table view filters", + "typeScriptTag": "databaseTableViewFilters", + "description": "Deletes the existing filter if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewFilterId", + "schema": "integer", + "required": true, + "description": "The ID of the view filter to delete.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/filter/{view_filter_id}", + "method": "getViewFilter", + "httpMethod": "get", + "tag": "Database table view filters", + "typeScriptTag": "databaseTableViewFilters", + "description": "Returns the existing view filter.", + "parameters": [ + { + "name": "viewFilterId", + "schema": "integer", + "required": true, + "description": "The ID of the view filter to return.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/filter/{view_filter_id}", + "method": "updateExistingFilter", + "httpMethod": "patch", + "tag": "Database table view filters", + "typeScriptTag": "databaseTableViewFilters", + "description": "Updates the existing filter.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewFilterId", + "schema": "integer", + "required": true, + "description": "The ID of the view filter to update.", + "example": 0 + }, + { + "name": "field", + "schema": "integer", + "description": "" + }, + { + "name": "type", + "schema": "string", + "description": "" + }, + { + "name": "value", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/form/{slug}/submit", + "method": "getFormMetadataBySlug", + "httpMethod": "get", + "tag": "Database table form view", + "typeScriptTag": "databaseTableFormView", + "description": "Returns the metadata related to the form view if the form is publicly shared or if the user has access to the related workspace. This data can be used to construct a form with the right fields.", + "parameters": [ + { + "name": "slug", + "schema": "string", + "required": true, + "description": "The slug related to the form form.", + "example": "SLUG" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/form/{slug}/submit", + "method": "submitForm", + "httpMethod": "post", + "tag": "Database table form view", + "typeScriptTag": "databaseTableFormView", + "description": "Submits the form if the form is publicly shared or if the user has access to the related workspace. The provided data will be validated based on the fields that are in the form and the rules per field. If valid, a new row will be created in the table.", + "parameters": [ + { + "name": "slug", + "schema": "string", + "required": true, + "description": "The slug related to the form.", + "example": "SLUG" + }, + { + "name": "field_1", + "schema": "string", + "description": "" + }, + { + "name": "field_2", + "schema": "string", + "description": "" + }, + { + "name": "field_3", + "schema": "string", + "description": "" + }, + { + "name": "field_4", + "schema": "string", + "description": "" + }, + { + "name": "field_5", + "schema": "string", + "description": "" + }, + { + "name": "field_6", + "schema": "integer", + "description": "", + "default": 0 + }, + { + "name": "field_7", + "schema": "boolean", + "description": "", + "default": false + }, + { + "name": "field_8", + "schema": "string", + "description": "" + }, + { + "name": "field_13", + "schema": "number", + "description": "" + }, + { + "name": "field_14", + "schema": "array", + "description": "" + }, + { + "name": "field_15", + "schema": "array", + "description": "" + }, + { + "name": "field_16", + "schema": "integer", + "description": "" + }, + { + "name": "field_17", + "schema": "array", + "description": "" + }, + { + "name": "field_18", + "schema": "string", + "description": "" + }, + { + "name": "field_23", + "schema": "array", + "description": "" + }, + { + "name": "field_26", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/form/{slug}/upload-file", + "method": "uploadFile", + "httpMethod": "post", + "tag": "Database table form view", + "typeScriptTag": "databaseTableFormView", + "description": "Uploads a file anonymously to Baserow by uploading the file contents directly. A `file` multipart is expected containing the file contents.", + "parameters": [ + { + "name": "slug", + "schema": "string", + "required": true, + "description": "Submits files only if the view with the provided slughas a public file field.", + "example": "SLUG" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/gallery/{slug}/public/rows", + "method": "listPublicRows", + "httpMethod": "get", + "tag": "Database table gallery view", + "typeScriptTag": "databaseTableGalleryView", + "description": "Lists the requested rows of the view's table related to the provided `slug` if the gallery view is public.The response is paginated either by a limit/offset or page/size style. The style depends on the provided GET parameters. The properties of the returned rows depends on which fields the table has. For a complete overview of fields use the **list_database_table_fields** endpoint to list them all. In the example all field types are listed, but normally the number in field_{id} key is going to be the id of the field. The value is what the user has provided and the format of it depends on the fields type.\n\n", + "parameters": [ + { + "name": "count", + "schema": "boolean", + "description": "If provided only the count will be returned." + }, + { + "name": "excludeFields", + "schema": "string", + "description": "All the fields are included in the response by default. You can select a subset of fields by providing the exclude_fields query parameter. If you for example provide the following GET parameter `exclude_fields=field_1,field_2` then the fields with id `1` and id `2` are going to be excluded from the selection and response. " + }, + { + "name": "filter_{field}_{filter}", + "schema": "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\nPlease note that if the `filters` parameter is provided, this parameter will be ignored. \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, lower_than, 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, single_select_equal, single_select_not_equal, 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." + }, + { + "name": "filterType", + "schema": "string", + "description": "`AND`: Indicates that the rows must match all the provided filters.\n`OR`: Indicates that the rows only have to match one of the filters.\n\nThis works only if two or more filters are provided.Please note that if the `filters` parameter is provided, this parameter will be ignored. \n\n" + }, + { + "name": "filters", + "schema": "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\nPlease note that if this parameter is provided, all other `filter__{field}__{filter}` will be ignored, as well as the `filter_type` parameter. \n\nAn example of a valid filter tree is the following:`{\"filter_type\": \"AND\", \"filters\": [{\"field\": 1, \"type\": \"equal\", \"value\": \"test\"}]}`.\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, lower_than, 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, single_select_equal, single_select_not_equal, 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." + }, + { + "name": "include", + "schema": "string", + "description": "A comma separated list allowing the values of `field_options` 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." + }, + { + "name": "includeFields", + "schema": "string", + "description": "All the fields are included in the response by default. You can select a subset of fields by providing the fields query parameter. If you for example provide the following GET parameter `include_fields=field_1,field_2` then only the fields with id `1` and id `2` are going to be selected and included in the response." + }, + { + "name": "limit", + "schema": "integer", + "description": "Defines how many rows should be returned." + }, + { + "name": "offset", + "schema": "integer", + "description": "Can only be used in combination with the `limit` parameter and defines from which offset the rows should be returned." + }, + { + "name": "orderBy", + "schema": "string", + "description": "Optionally the rows can be ordered by provided field ids separated by comma. By default a field is ordered in ascending (https://baserow.io/docs/index order, but by prepending the field with a '-' it can be ordered descending (https://baserow.io/docs/index." + }, + { + "name": "page", + "schema": "integer", + "description": "Defines which page of rows should be returned. Either the `page` or `limit` can be provided, not both." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only rows with data that matches the search query are going to be returned." + }, + { + "name": "searchMode", + "schema": "string", + "description": "If provided, allows API consumers to determine what kind of search experience they wish to have. If the default `full-text-with-count` is used, then Postgres full-text search is used. If `compat` is provided then the search term will be exactly searched for including whitespace on each cell. This is the Baserow legacy search behaviour." + }, + { + "name": "size", + "schema": "integer", + "description": "Can only be used in combination with the `page` parameter and defines how many rows should be returned." + }, + { + "name": "slug", + "schema": "string", + "required": true, + "description": "Returns only rows that belong to the related view.", + "example": "SLUG" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/gallery/{view_id}", + "method": "listRowsByViewId", + "httpMethod": "get", + "tag": "Database table gallery view", + "typeScriptTag": "databaseTableGalleryView", + "description": "Lists the requested rows of the view's table related to the provided `view_id` if the authorized user has access to the database's workspace. The response is paginated by a limit/offset style.", + "parameters": [ + { + "name": "count", + "schema": "boolean", + "description": "If provided only the count will be returned." + }, + { + "name": "filter_{field}_{filter}", + "schema": "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\nPlease note that if the `filters` parameter is provided, this parameter will be ignored. \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, lower_than, 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, single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the view filters saved for the view itself will be ignored." + }, + { + "name": "filterType", + "schema": "string", + "description": "`AND`: Indicates that the rows must match all the provided filters.\n`OR`: Indicates that the rows only have to match one of the filters.\n\nThis works only if two or more filters are provided.Please note that if the `filters` parameter is provided, this parameter will be ignored. \n\n" + }, + { + "name": "filters", + "schema": "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\"}]}`.\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, lower_than, 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, single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the view filters saved for the view itself will be ignored." + }, + { + "name": "include", + "schema": "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." + }, + { + "name": "limit", + "schema": "integer", + "description": "Defines how many rows should be returned." + }, + { + "name": "offset", + "schema": "integer", + "description": "Can only be used in combination with the `limit` parameter and defines from which offset the rows should be returned." + }, + { + "name": "orderBy", + "schema": "string", + "description": "Optionally the rows can be ordered by provided field ids separated by comma. By default a field is ordered in ascending (https://baserow.io/docs/index order, but by prepending the field with a '-' it can be ordered descending (https://baserow.io/docs/index." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only rows with data that matches the search query are going to be returned." + }, + { + "name": "searchMode", + "schema": "string", + "description": "If provided, allows API consumers to determine what kind of search experience they wish to have. If the default `full-text-with-count` is used, then Postgres full-text search is used. If `compat` is provided then the search term will be exactly searched for including whitespace on each cell. This is the Baserow legacy search behaviour." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Returns only rows that belong to the related view's table.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/grid/{slug}/public/rows", + "method": "listPublicRows", + "httpMethod": "get", + "tag": "Database table grid view", + "typeScriptTag": "databaseTableGridView", + "description": "Lists the requested rows of the view's table related to the provided `slug` if the grid view is public.The response is paginated either by a limit/offset or page/size style. The style depends on the provided GET parameters. The properties of the returned rows depends on which fields the table has. For a complete overview of fields use the **list_database_table_fields** endpoint to list them all. In the example all field types are listed, but normally the number in field_{id} key is going to be the id of the field. The value is what the user has provided and the format of it depends on the fields type.\n\n", + "parameters": [ + { + "name": "count", + "schema": "boolean", + "description": "If provided only the count will be returned." + }, + { + "name": "excludeFields", + "schema": "string", + "description": "All the fields are included in the response by default. You can select a subset of fields by providing the exclude_fields query parameter. If you for example provide the following GET parameter `exclude_fields=field_1,field_2` then the fields with id `1` and id `2` are going to be excluded from the selection and response. " + }, + { + "name": "filter_{field}_{filter}", + "schema": "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\nPlease note that if the `filters` parameter is provided, this parameter will be ignored. \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, lower_than, 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, single_select_equal, single_select_not_equal, 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." + }, + { + "name": "filterType", + "schema": "string", + "description": "`AND`: Indicates that the rows must match all the provided filters.\n`OR`: Indicates that the rows only have to match one of the filters.\n\nThis works only if two or more filters are provided.Please note that if the `filters` parameter is provided, this parameter will be ignored. \n\n" + }, + { + "name": "filters", + "schema": "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\nPlease note that if this parameter is provided, all other `filter__{field}__{filter}` will be ignored, as well as the `filter_type` parameter. \n\nAn example of a valid filter tree is the following:`{\"filter_type\": \"AND\", \"filters\": [{\"field\": 1, \"type\": \"equal\", \"value\": \"test\"}]}`.\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, lower_than, 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, single_select_equal, single_select_not_equal, 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." + }, + { + "name": "groupBy", + "schema": "string", + "description": "Optionally the rows can be grouped by provided field ids separated by comma. By default no groups are applied. This doesn't actually responds with the rows groups, this is just what's needed for the Baserow group by feature." + }, + { + "name": "include", + "schema": "string", + "description": "A comma separated list allowing the values of `field_options` 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." + }, + { + "name": "includeFields", + "schema": "string", + "description": "All the fields are included in the response by default. You can select a subset of fields by providing the fields query parameter. If you for example provide the following GET parameter `include_fields=field_1,field_2` then only the fields with id `1` and id `2` are going to be selected and included in the response." + }, + { + "name": "limit", + "schema": "integer", + "description": "Defines how many rows should be returned." + }, + { + "name": "offset", + "schema": "integer", + "description": "Can only be used in combination with the `limit` parameter and defines from which offset the rows should be returned." + }, + { + "name": "orderBy", + "schema": "string", + "description": "Optionally the rows can be ordered by provided field ids separated by comma. By default a field is ordered in ascending (https://baserow.io/docs/index order, but by prepending the field with a '-' it can be ordered descending (https://baserow.io/docs/index." + }, + { + "name": "page", + "schema": "integer", + "description": "Defines which page of rows should be returned. Either the `page` or `limit` can be provided, not both." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only rows with data that matches the search query are going to be returned." + }, + { + "name": "searchMode", + "schema": "string", + "description": "If provided, allows API consumers to determine what kind of search experience they wish to have. If the default `full-text-with-count` is used, then Postgres full-text search is used. If `compat` is provided then the search term will be exactly searched for including whitespace on each cell. This is the Baserow legacy search behaviour." + }, + { + "name": "size", + "schema": "integer", + "description": "Can only be used in combination with the `page` parameter and defines how many rows should be returned." + }, + { + "name": "slug", + "schema": "string", + "required": true, + "description": "Returns only rows that belong to the related view.", + "example": "SLUG" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/grid/{view_id}", + "method": "getViewRows", + "httpMethod": "get", + "tag": "Database table grid view", + "typeScriptTag": "databaseTableGridView", + "description": "Lists the requested rows of the view's table related to the provided `view_id` if the authorized user has access to the database's workspace. The response is paginated either by a limit/offset or page/size style. The style depends on the provided GET parameters. The properties of the returned rows depends on which fields the table has. For a complete overview of fields use the **list_database_table_fields** endpoint to list them all. In the example all field types are listed, but normally the number in field_{id} key is going to be the id of the field. The value is what the user has provided and the format of it depends on the fields type.\n\nThe filters and sortings are automatically applied. To get a full overview of the applied filters and sortings you can use the `list_database_table_view_filters` and `list_database_table_view_sortings` endpoints.", + "parameters": [ + { + "name": "count", + "schema": "boolean", + "description": "If provided only the count will be returned." + }, + { + "name": "excludeFields", + "schema": "string", + "description": "All the fields are included in the response by default. You can select a subset of fields by providing the exclude_fields query parameter. If you for example provide the following GET parameter `exclude_fields=field_1,field_2` then the fields with id `1` and id `2` are going to be excluded from the selection and response. " + }, + { + "name": "filter_{field}_{filter}", + "schema": "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\nPlease note that if the `filters` parameter is provided, this parameter will be ignored. \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, lower_than, 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, single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the view filters saved for the view itself will be ignored." + }, + { + "name": "filterType", + "schema": "string", + "description": "`AND`: Indicates that the rows must match all the provided filters.\n`OR`: Indicates that the rows only have to match one of the filters.\n\nThis works only if two or more filters are provided.Please note that if the `filters` parameter is provided, this parameter will be ignored. \n\n" + }, + { + "name": "filters", + "schema": "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\"}]}`.\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, lower_than, 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, single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the view filters saved for the view itself will be ignored." + }, + { + "name": "include", + "schema": "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." + }, + { + "name": "includeFields", + "schema": "string", + "description": "All the fields are included in the response by default. You can select a subset of fields by providing the fields query parameter. If you for example provide the following GET parameter `include_fields=field_1,field_2` then only the fields with id `1` and id `2` are going to be selected and included in the response." + }, + { + "name": "limit", + "schema": "integer", + "description": "Defines how many rows should be returned." + }, + { + "name": "offset", + "schema": "integer", + "description": "Can only be used in combination with the `limit` parameter and defines from which offset the rows should be returned." + }, + { + "name": "orderBy", + "schema": "string", + "description": "Optionally the rows can be ordered by provided field ids separated by comma. By default a field is ordered in ascending (https://baserow.io/docs/index order, but by prepending the field with a '-' it can be ordered descending (https://baserow.io/docs/index." + }, + { + "name": "page", + "schema": "integer", + "description": "Defines which page of rows should be returned. Either the `page` or `limit` can be provided, not both." + }, + { + "name": "search", + "schema": "string", + "description": "If provided only rows with data that matches the search query are going to be returned." + }, + { + "name": "searchMode", + "schema": "string", + "description": "If provided, allows API consumers to determine what kind of search experience they wish to have. If the default `full-text-with-count` is used, then Postgres full-text search is used. If `compat` is provided then the search term will be exactly searched for including whitespace on each cell. This is the Baserow legacy search behaviour." + }, + { + "name": "size", + "schema": "integer", + "description": "Can only be used in combination with the `page` parameter and defines how many rows should be returned." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Returns only rows that belong to the related view's table.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/grid/{view_id}", + "method": "getFilteredData", + "httpMethod": "post", + "tag": "Database table grid view", + "typeScriptTag": "databaseTableGridView", + "description": "Lists only the rows and fields that match the request. Only the rows with the ids that are in the `row_ids` list are going to be returned. Same goes for the fields, only the fields with the ids in the `field_ids` are going to be returned. This endpoint could be used to refresh data after changes something. For example in the web frontend after changing a field type, the data of the related cells will be refreshed using this endpoint. In the example all field types are listed, but normally the number in field_{id} key is going to be the id of the field. The value is what the user has provided and the format of it depends on the fields type.", + "parameters": [ + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Returns only rows that belong to the related view's table.", + "example": 0 + }, + { + "name": "field_ids", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "row_ids", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/grid/{view_id}/aggregation/{field_id}", + "method": "computeAggregation", + "httpMethod": "get", + "tag": "Database table grid view", + "typeScriptTag": "databaseTableGridView", + "description": "Computes the aggregation of all the values for a specified field from the selected grid view. You must select the aggregation type by setting the `type` GET parameter. If filters are configured for the selected view, the aggregation is calculated only on filtered rows. You need to have read permissions on the view to request an aggregation.", + "parameters": [ + { + "name": "fieldId", + "schema": "integer", + "required": true, + "description": "The field id you want to aggregate", + "example": 0 + }, + { + "name": "include", + "schema": "string", + "description": "if `include` is set to `total`, the total row count will be returned with the result." + }, + { + "name": "type", + "schema": "string", + "description": "The aggregation type you want. Available aggregation types: empty_count, not_empty_count, unique_count, min, max, sum, average, median, decile, variance, std_dev" + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Select the view you want the aggregation for.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/grid/{view_id}/aggregations", + "method": "getFieldAggregations", + "httpMethod": "get", + "tag": "Database table grid view", + "typeScriptTag": "databaseTableGridView", + "description": "Returns all field aggregations values previously defined for this grid view. If filters exist for this view, the aggregations are computed only on filtered rows.You need to have read permissions on the view to request aggregations.", + "parameters": [ + { + "name": "filter_{field}_{filter}", + "schema": "string", + "description": "The aggregation 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\nPlease note that if the `filters` parameter is provided, this parameter will be ignored. \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, lower_than, 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, single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the view filters saved for the view itself will be ignored." + }, + { + "name": "filterType", + "schema": "string", + "description": "`AND`: Indicates that the aggregated rows must match all the provided filters.\n`OR`: Indicates that the aggregated rows only have to match one of the filters.\n\nThis works only if two or more filters are provided.Please note that if the `filters` parameter is provided, this parameter will be ignored. \n\n" + }, + { + "name": "filters", + "schema": "string", + "description": "A JSON serialized string containing the filter tree to apply for the aggregation. 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\"}]}`.\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, lower_than, 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, single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the view filters saved for the view itself will be ignored." + }, + { + "name": "include", + "schema": "string", + "description": "if `include` is set to `total`, the total row count will be returned with the result." + }, + { + "name": "search", + "schema": "string", + "description": "If provided the aggregations are calculated only for matching rows." + }, + { + "name": "searchMode", + "schema": "string", + "description": "If provided, allows API consumers to determine what kind of search experience they wish to have. If the default `full-text-with-count` is used, then Postgres full-text search is used. If `compat` is provided then the search term will be exactly searched for including whitespace on each cell. This is the Baserow legacy search behaviour." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Select the view you want the aggregations for.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/group_by/{view_group_by_id}", + "method": "deleteGroupBy", + "httpMethod": "delete", + "tag": "Database table view groupings", + "typeScriptTag": "databaseTableViewGroupings", + "description": "Deletes the existing group by if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewGroupById", + "schema": "integer", + "required": true, + "description": "Deletes the group by related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/group_by/{view_group_by_id}", + "method": "getViewGroupBy", + "httpMethod": "get", + "tag": "Database table view groupings", + "typeScriptTag": "databaseTableViewGroupings", + "description": "Returns the existing view group by if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "viewGroupById", + "schema": "integer", + "required": true, + "description": "Returns the view group by related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/group_by/{view_group_by_id}", + "method": "updateGroupBy", + "httpMethod": "patch", + "tag": "Database table view groupings", + "typeScriptTag": "databaseTableViewGroupings", + "description": "Updates the existing group by if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewGroupById", + "schema": "integer", + "required": true, + "description": "Updates the view group by related to the provided value.", + "example": 0 + }, + { + "name": "field", + "schema": "integer", + "description": "" + }, + { + "name": "order", + "schema": "string", + "description": "" + }, + { + "name": "width", + "schema": "integer", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/kanban/{slug}/public/rows", + "method": "getPublicRowsBySlug", + "httpMethod": "get", + "tag": "Database table kanban view", + "typeScriptTag": "databaseTableKanbanView", + "description": "Responds with serialized rows grouped by the view's single select field options related to the `slug` if the kanban 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": [ + { + "name": "filter_{field}_{filter}", + "schema": "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\nPlease note that if the `filters` parameter is provided, this parameter will be ignored. \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, lower_than, 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, single_select_equal, single_select_not_equal, 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." + }, + { + "name": "filterType", + "schema": "string", + "description": "`AND`: Indicates that the rows must match all the provided filters.\n`OR`: Indicates that the rows only have to match one of the filters.\n\nThis works only if two or more filters are provided.Please note that if the `filters` parameter is provided, this parameter will be ignored. \n\n" + }, + { + "name": "filters", + "schema": "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\nPlease note that if this parameter is provided, all other `filter__{field}__{filter}` will be ignored, as well as the `filter_type` parameter. \n\nAn example of a valid filter tree is the following:`{\"filter_type\": \"AND\", \"filters\": [{\"field\": 1, \"type\": \"equal\", \"value\": \"test\"}]}`.\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, lower_than, 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, single_select_equal, single_select_not_equal, 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." + }, + { + "name": "limit", + "schema": "integer", + "description": "Defines how many rows should be returned by default. This value can be overwritten per select option." + }, + { + "name": "offset", + "schema": "integer", + "description": "Defines from which offset the rows should be returned.This value can be overwritten per select option." + }, + { + "name": "selectOption", + "schema": "string", + "description": "Accepts multiple `select_option` parameters. If not provided, the rows of all select options will be returned. If one or more `select_option` parameters are provided, then only the rows of those will be included in the response. `?select_option=1&select_option=null` will only include the rows for both select option with id `1` and `null`. `?select_option=1,10,20` will only include the rows of select option id `1` with a limit of `10` and and offset of `20`." + }, + { + "name": "slug", + "schema": "string", + "required": true, + "description": "Returns only rows that belong to the related view.", + "example": "SLUG" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/kanban/{view_id}", + "method": "getSerializedRowsByViewId", + "httpMethod": "get", + "tag": "Database table kanban view", + "typeScriptTag": "databaseTableKanbanView", + "description": "Responds with serialized rows grouped by the view's single select field options if the user is authenticated and has access to the related workspace. Additional query parameters can be provided to control the `limit` and `offset` per select option.\n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "filter_{field}_{filter}", + "schema": "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\nPlease note that if the `filters` parameter is provided, this parameter will be ignored. \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, lower_than, 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, single_select_equal, single_select_not_equal, 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.Please note that by passing the filter parameters the view filters saved for the view itself will be ignored." + }, + { + "name": "filterType", + "schema": "string", + "description": "`AND`: Indicates that the rows must match all the provided filters.\n`OR`: Indicates that the rows only have to match one of the filters.\n\nThis works only if two or more filters are provided.Please note that if the `filters` parameter is provided, this parameter will be ignored. \n\n" + }, + { + "name": "filters", + "schema": "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\"}]}`.\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, lower_than, 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, single_select_equal, single_select_not_equal, 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.Please note that by passing the filters parameter the view filters saved for the view itself will be ignored." + }, + { + "name": "include", + "schema": "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." + }, + { + "name": "limit", + "schema": "integer", + "description": "Defines how many rows should be returned by default. This value can be overwritten per select option." + }, + { + "name": "offset", + "schema": "integer", + "description": "Defines from which offset the rows should be returned.This value can be overwritten per select option." + }, + { + "name": "selectOption", + "schema": "string", + "description": "Accepts multiple `select_option` parameters. If not provided, the rows of all select options will be returned. If one or more `select_option` parameters are provided, then only the rows of those will be included in the response. `?select_option=1&select_option=null` will only include the rows for both select option with id `1` and `null`. `?select_option=1,10,20` will only include the rows of select option id `1` with a limit of `10` and and offset of `20`." + }, + { + "name": "viewId", + "schema": "integer", + "required": true, + "description": "Returns only rows that belong to the related view's table.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/sort/{view_sort_id}", + "method": "deleteById", + "httpMethod": "delete", + "tag": "Database table view sortings", + "typeScriptTag": "databaseTableViewSortings", + "description": "Deletes the existing sort if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewSortId", + "schema": "integer", + "required": true, + "description": "Deletes the sort related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/sort/{view_sort_id}", + "method": "getSortById", + "httpMethod": "get", + "tag": "Database table view sortings", + "typeScriptTag": "databaseTableViewSortings", + "description": "Returns the existing view sort if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "viewSortId", + "schema": "integer", + "required": true, + "description": "Returns the view sort related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/sort/{view_sort_id}", + "method": "updateById", + "httpMethod": "patch", + "tag": "Database table view sortings", + "typeScriptTag": "databaseTableViewSortings", + "description": "Updates the existing sort if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "viewSortId", + "schema": "integer", + "required": true, + "description": "Updates the view sort related to the provided value.", + "example": 0 + }, + { + "name": "field", + "schema": "integer", + "description": "" + }, + { + "name": "order", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/table/{table_id}", + "method": "listTableViews", + "httpMethod": "get", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Lists all views of the table related to the provided `table_id`. If the workspace is related to a template, then this endpoint will be publicly accessible. A table can have multiple views. Each view can display the data in a different way. For example the `grid` view shows the in a spreadsheet like way. That type has custom endpoints for data retrieval and manipulation. In the future other views types like a calendar or Kanban are going to be added. Each type can have different properties.", + "parameters": [ + { + "name": "include", + "schema": "string", + "description": "A comma separated list of extra attributes to include on each view in the response. The supported attributes are `filters`, `sortings` and `decorations`. For example `include=filters,sortings` will add the attributes `filters` and `sortings` to every returned view, containing a list of the views filters and sortings respectively." + }, + { + "name": "limit", + "schema": "integer", + "description": "The maximum amount of views that must be returned. This endpoint doesn't support pagination, but if you for example just need to fetch the first view, you can do that by setting a limit. There isn't a limit by default." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Returns only views of the table related to the provided value.", + "example": 0 + }, + { + "name": "type", + "schema": "string", + "description": "Optionally filter on the view type. If provided, only views of that type will be returned." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/table/{table_id}", + "method": "createNewView", + "httpMethod": "post", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Creates a new view for the table related to the provided `table_id` parameter. Depending on the type, different properties can optionally be set.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "include", + "schema": "string", + "description": "A comma separated list of extra attributes to include on each view in the response. The supported attributes are `filters`, `sortings` and `decorations`. For example `include=filters,sortings` will add the attributes `filters` and `sortings` to every returned view, containing a list of the views filters and sortings respectively." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Creates a view for the table related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/views/table/{table_id}/order", + "method": "reorderTableOrder", + "httpMethod": "post", + "tag": "Database table views", + "typeScriptTag": "databaseTableViews", + "description": "Changes the order of the provided view ids to the matching position that the id has in the list. The order of the not provided views will be set to `0`.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Updates the order of the views in the table related to the provided value.", + "example": 0 + }, + { + "name": "view_ids", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/webhooks/{webhook_id}", + "method": "deleteWebhook", + "httpMethod": "delete", + "tag": "Database table webhooks", + "typeScriptTag": "databaseTableWebhooks", + "description": "Deletes the existing webhook if the authorized user has access to the related database's workspace.", + "parameters": [ + { + "name": "webhookId", + "schema": "integer", + "required": true, + "description": "Deletes the webhook related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "OK" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/webhooks/{webhook_id}", + "method": "getExistingWebhook", + "httpMethod": "get", + "tag": "Database table webhooks", + "typeScriptTag": "databaseTableWebhooks", + "description": "Returns the existing webhook if the authorized user has access to the related database workspace.", + "parameters": [ + { + "name": "webhookId", + "schema": "integer", + "required": true, + "description": "Returns the webhook related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/webhooks/{webhook_id}", + "method": "updateView", + "httpMethod": "patch", + "tag": "Database table webhooks", + "typeScriptTag": "databaseTableWebhooks", + "description": "Updates the existing view if the authorized user has access to the related database workspace.", + "parameters": [ + { + "name": "webhookId", + "schema": "integer", + "required": true, + "description": "Updates the webhook related to the provided value.", + "example": 0 + }, + { + "name": "url", + "schema": "string", + "description": "" + }, + { + "name": "include_all_events", + "schema": "boolean", + "description": "" + }, + { + "name": "events", + "schema": "array", + "description": "" + }, + { + "name": "request_method", + "schema": "string", + "description": "" + }, + { + "name": "headers", + "schema": "object", + "description": "" + }, + { + "name": "name", + "schema": "string", + "description": "" + }, + { + "name": "active", + "schema": "boolean", + "description": "" + }, + { + "name": "use_user_field_names", + "schema": "boolean", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/webhooks/table/{table_id}", + "method": "list", + "httpMethod": "get", + "tag": "Database table webhooks", + "typeScriptTag": "databaseTableWebhooks", + "description": "Lists all webhooks of the table related to the provided `table_id` if the user has access to the related database workspace.", + "parameters": [ + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Returns only webhooks of the table related to this value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/webhooks/table/{table_id}", + "method": "createWebhook", + "httpMethod": "post", + "tag": "Database table webhooks", + "typeScriptTag": "databaseTableWebhooks", + "description": "Creates a new webhook for the table related to the provided `table_id` parameter if the authorized user has access to the related database workspace.", + "parameters": [ + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "Creates a webhook for the table related to the provided value.", + "example": 0 + }, + { + "name": "url", + "schema": "string", + "required": true, + "description": "", + "example": "URL" + }, + { + "name": "include_all_events", + "schema": "boolean", + "required": false, + "description": "" + }, + { + "name": "events", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "request_method", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "headers", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "use_user_field_names", + "schema": "boolean", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/database/webhooks/table/{table_id}/test-call", + "method": "triggerTestCall", + "httpMethod": "post", + "tag": "Database table webhooks", + "typeScriptTag": "databaseTableWebhooks", + "description": "This endpoint triggers a test call based on the provided data if the user has access to the workspace related to the table. The test call will be made immediately and a copy of the request, response and status will be included in the response.", + "parameters": [ + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "The id of the table that must be tested.", + "example": 0 + }, + { + "name": "url", + "schema": "string", + "required": true, + "description": "", + "example": "URL" + }, + { + "name": "event_type", + "schema": "string", + "required": true, + "description": "", + "example": "EVENT_TYPE" + }, + { + "name": "request_method", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "headers", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "use_user_field_names", + "schema": "boolean", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups", + "method": "groups", + "httpMethod": "get", + "tag": "Groups", + "typeScriptTag": "groups", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [list_workspaces](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Lists all the groups of the authorized user. A group can contain multiple applications like a database. Multiple users can have access to a group. For example each company could have their own group containing databases related to that company. The order of the groups are custom for each user. The order is configurable via the **order_groups** endpoint.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/groups", + "method": "group", + "httpMethod": "post", + "tag": "Groups", + "typeScriptTag": "groups", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [create_workspace](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Creates a new group where only the authorized user has access to. No initial data like database applications are added, they have to be created via other endpoints.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "This serializers includes relevant fields of the Workspace model, but also\nsome WorkspaceUser specific fields related to the workspace user relation.\n\nAdditionally, the list of users are included for each workspace." + } + ] + }, + { + "url": "/api/groups/{group_id}", + "method": "group", + "httpMethod": "delete", + "tag": "Groups", + "typeScriptTag": "groups", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [delete_workspace](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Deletes an existing group if the authorized user belongs to the group. All the applications, databases, tables etc that were in the group are going to be deleted also.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Deletes the group related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/{group_id}", + "method": "group", + "httpMethod": "patch", + "tag": "Groups", + "typeScriptTag": "groups", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [update_workspace](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Updates the existing group related to the provided `group_id` parameter if the authorized user belongs to the group. It is not yet possible to add additional users to a group.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Updates the group related to the provided value.", + "example": 0 + }, + { + "name": "id", + "schema": "integer", + "description": "" + }, + { + "name": "name", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/{group_id}/leave", + "method": "group", + "httpMethod": "post", + "tag": "Groups", + "typeScriptTag": "groups", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [leave_workspace](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Makes the authenticated user leave the group related to the provided `group_id` if the user is in that group. If the user is the last admin in the group, they will not be able to leave it. There must always be one admin in the group, otherwise it will be left without control. If that is the case, they must either delete the group or give another member admin permissions first.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Leaves the group related to the value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/{group_id}/permissions", + "method": "permissions", + "httpMethod": "get", + "tag": "Groups", + "typeScriptTag": "groups", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_permissions](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Returns a the permission data necessary to determine the permissions of a specific user over a specific group.\n See `core.handler.CoreHandler.get_permissions()` for more details.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "The group id we want the permission object for.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/invitations/{group_invitation_id}", + "method": "deleteInvitation", + "httpMethod": "delete", + "tag": "Group invitations", + "typeScriptTag": "groupInvitations", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [delete_workspace_invitation](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Deletes a group invitation if the authorized user has admin rights to the related group.", + "parameters": [ + { + "name": "groupInvitationId", + "schema": "integer", + "required": true, + "description": "Deletes the group invitation related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/invitations/{group_invitation_id}", + "method": "getById", + "httpMethod": "get", + "tag": "Group invitations", + "typeScriptTag": "groupInvitations", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [get_workspace_invitation](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Returns the requested group invitation if the authorized user has admin right to the related group", + "parameters": [ + { + "name": "groupInvitationId", + "schema": "integer", + "required": true, + "description": "Returns the group invitation related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/invitations/{group_invitation_id}", + "method": "updateRelatedInvitation", + "httpMethod": "patch", + "tag": "Group invitations", + "typeScriptTag": "groupInvitations", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [update_workspace_invitation](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Updates the existing group invitation related to the provided `group_invitation_id` param if the authorized user has admin rights to the related group.", + "parameters": [ + { + "name": "groupInvitationId", + "schema": "integer", + "required": true, + "description": "Updates the group invitation related to the provided value.", + "example": 0 + }, + { + "name": "permissions", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/invitations/{group_invitation_id}/accept", + "method": "acceptGroupInvitation", + "httpMethod": "post", + "tag": "Group invitations", + "typeScriptTag": "groupInvitations", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [accept_workspace_invitation](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Accepts a group invitation with the given id if the email address of the user matches that of the invitation.", + "parameters": [ + { + "name": "groupInvitationId", + "schema": "integer", + "required": true, + "description": "Accepts the group invitation related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "This serializers includes relevant fields of the Workspace model, but also\nsome WorkspaceUser specific fields related to the workspace user relation.\n\nAdditionally, the list of users are included for each workspace." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/invitations/{group_invitation_id}/reject", + "method": "rejectGroupInvitation", + "httpMethod": "post", + "tag": "Group invitations", + "typeScriptTag": "groupInvitations", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [reject_workspace_invitation](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Rejects a group invitation with the given id if the email address of the user matches that of the invitation.", + "parameters": [ + { + "name": "groupInvitationId", + "schema": "integer", + "required": true, + "description": "Rejects the group invitation related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/invitations/group/{group_id}", + "method": "listForGroup", + "httpMethod": "get", + "tag": "Group invitations", + "typeScriptTag": "groupInvitations", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [list_workspace_invitations](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Lists all the group invitations of the group related to the provided `group_id` parameter if the authorized user has admin rights to that group.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Returns only invitations that are in the group related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/invitations/group/{group_id}", + "method": "createNewInvitation", + "httpMethod": "post", + "tag": "Group invitations", + "typeScriptTag": "groupInvitations", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [create_workspace_invitation](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Creates a new group invitations for an email address if the authorized user has admin rights to the related group. An email containing a sign up link will be send to the user.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Creates a group invitation to the group related to the provided value.", + "example": 0 + }, + { + "name": "email", + "schema": "string", + "required": true, + "description": "", + "example": "EMAIL" + }, + { + "name": "permissions", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "message", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "base_url", + "schema": "string", + "required": true, + "description": "", + "example": "BASE_URL" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/invitations/token/{token}", + "method": "findByToken", + "httpMethod": "get", + "tag": "Group invitations", + "typeScriptTag": "groupInvitations", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [get_workspace_invitation_by_token](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Responds with the serialized group invitation if an invitation with the provided token is found.", + "parameters": [ + { + "name": "token", + "schema": "string", + "required": true, + "description": "Returns the group invitation related to the provided token.", + "example": "TOKEN" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "This serializer is used for displaying the invitation to the user that doesn't\nhave access to the workspace yet, so not for invitation management purposes." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/order", + "method": "groups", + "httpMethod": "post", + "tag": "Groups", + "typeScriptTag": "groups", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [order_workspaces](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Changes the order of the provided group ids to the matching position that the id has in the list. If the authorized user does not belong to the group it will be ignored. The order will be custom for each user.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "workspaces", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + } + ] + }, + { + "url": "/api/groups/users/{group_user_id}", + "method": "deleteGroupUser", + "httpMethod": "delete", + "tag": "Groups", + "typeScriptTag": "groups", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [delete_workspace_user](https://api.baserow.io).**\n\n Deletes a group user if the authorized user has admin rights to the related group.", + "parameters": [ + { + "name": "groupUserId", + "schema": "integer", + "required": true, + "description": "Deletes the group user related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/users/{group_user_id}", + "method": "updateGroupUser", + "httpMethod": "patch", + "tag": "Groups", + "typeScriptTag": "groups", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [update_workspace_user](https://api.baserow.io).**\n\n Updates the existing group user related to the provided `group_user_id` param if the authorized user has admin rights to the related group.", + "parameters": [ + { + "name": "groupUserId", + "schema": "integer", + "required": true, + "description": "Updates the group user related to the provided value.", + "example": 0 + }, + { + "name": "permissions", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/groups/users/group/{group_id}", + "method": "listGroupUsers", + "httpMethod": "get", + "tag": "Groups", + "typeScriptTag": "groups", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [list_workspace_users](https://api.baserow.io).**\n\n Lists all the users that are in a group if the authorized user has admin permissions to the related group. To add a user to a group an invitation must be sent first.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Lists group users related to the provided group value.", + "example": 0 + }, + { + "name": "search", + "schema": "string", + "description": "Search for group users by username, or email." + }, + { + "name": "sorts", + "schema": "string", + "description": "Sort group users by name, email or role." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/integration/{integration_id}", + "method": "deleteById", + "httpMethod": "delete", + "tag": "Integrations", + "typeScriptTag": "integrations", + "description": "Deletes the integration related by the given id.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "integrationId", + "schema": "integer", + "required": true, + "description": "The id of the integration", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/integration/{integration_id}", + "method": "updateExistingIntegration", + "httpMethod": "patch", + "tag": "Integrations", + "typeScriptTag": "integrations", + "description": "Updates an existing integration.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "integrationId", + "schema": "integer", + "required": true, + "description": "The id of the integration", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/integration/{integration_id}/move", + "method": "moveIntegration", + "httpMethod": "patch", + "tag": "Integrations", + "typeScriptTag": "integrations", + "description": "Moves the integration in the application before another integration or at the end of the application if no before integration is given. The integrations must belong to the same application.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "integrationId", + "schema": "integer", + "required": true, + "description": "The id of the integration to move", + "example": 0 + }, + { + "name": "before_id", + "schema": "integer", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/jobs", + "method": "job", + "httpMethod": "get", + "tag": "Jobs", + "typeScriptTag": "jobs", + "description": "List all existing jobs. Jobs are task executed asynchronously in the background. You can use the `get_job` endpoint to read the currentprogress of a the job.", + "parameters": [ + { + "name": "jobIds", + "schema": "string", + "description": "A comma separated list of job ids in the desired order.The jobs will be returned in the same order as the ids.If a job id is not found it will be ignored." + }, + { + "name": "states", + "schema": "string", + "description": "A comma separated list of jobs state to look for. The only possible values are: `pending`, `finished` and `failed`. It's possible to exclude a state by prefixing it with a `!`. " + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/jobs", + "method": "job", + "httpMethod": "post", + "tag": "Jobs", + "typeScriptTag": "jobs", + "description": "Creates a new job. This job runs asynchronously in the background and execute the task specific to the provided typeparameters. The `get_job` can be used to get the current state of the job.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/jobs/{job_id}", + "method": "job", + "httpMethod": "get", + "tag": "Jobs", + "typeScriptTag": "jobs", + "description": "Returns the information related to the provided job id. This endpoint can for example be polled to get the state and progress of the job in real time.", + "parameters": [ + { + "name": "jobId", + "schema": "integer", + "required": true, + "description": "The job id to lookup information about.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/licenses", + "method": "licenses", + "httpMethod": "get", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Lists all the valid licenses that are registered to this instance. A premium license can be used to unlock the premium features for a fixed amount of users. An enterprise license can similarly be used to unlock enterpise features. More information about self hosted licenses can be found on our pricing page https://baserow.io/pricing.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/licenses", + "method": "registerLicense", + "httpMethod": "post", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Registers a new license. After registering you can assign users to the license that will be able to use the license's features while the license is active. If an existing license with the same `license_id` already exists and the provided license has been issued later than that one, the existing one will be upgraded.", + "parameters": [ + { + "name": "license", + "schema": "string", + "required": true, + "description": "", + "example": "LICENSE" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/licenses/{id}", + "method": "removeLicense", + "httpMethod": "delete", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Removes the existing license related to the provided parameter. If the license is active, then all the users that are using the license will lose access to the features granted by that license.", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "The internal identifier of the license, this is `id` and not `license_id`.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/licenses/{id}", + "method": "getLicenseDetails", + "httpMethod": "get", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Responds with detailed information about the license related to the provided parameter.", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "The internal identifier of the license.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/licenses/{id}/{user_id}", + "method": "removeUserFromLicense", + "httpMethod": "delete", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Removes the user related to the provided parameter and to the license related to the parameter. This only happens if the user is on the license, otherwise nothing will happen.", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "The internal identifier of the license, this is `id` and not `license_id`.", + "example": 0 + }, + { + "name": "userId", + "schema": "integer", + "required": true, + "description": "The ID of the user that must be removed from the license.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/licenses/{id}/{user_id}", + "method": "addUserToLicense", + "httpMethod": "post", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Adds the user related to the provided parameter and to the license related to the parameter. This only happens if there are enough seats left on the license and if the user is not already on the license.", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "The internal identifier of the license, this is `id` and not `license_id`.", + "example": 0 + }, + { + "name": "userId", + "schema": "integer", + "required": true, + "description": "The ID of the user that must be added to the license.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/licenses/{id}/check", + "method": "checkLicenseStatus", + "httpMethod": "get", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "This endpoint checks with the authority if the license needs to be updated. It also checks if the license is operating within its limits and might take action on that. It could also happen that the license has been deleted because there is an instance id mismatch or because it's invalid. In that case a `204` status code is returned.", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "The internal identifier of the license, this is `id` and not `license_id`.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/licenses/{id}/fill-seats", + "method": "fillSeatsLicense", + "httpMethod": "post", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Fills the remaining empty seats of the license with the first users that are found.", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "The internal identifier of the license, this is `id` and not `license_id`.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/licenses/{id}/lookup-users", + "method": "lookupUsers", + "httpMethod": "get", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "This endpoint can be used to lookup users that can be added to a license. Users that are already in the license are not returned here. Optionally a `search` query parameter can be provided to filter the results.", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "The internal identifier of the license, this is `id` and not `license_id`.", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "description": "Defines which page of users should be returned." + }, + { + "name": "search", + "schema": "string", + "description": "If provided, only users where the name or email contains the value are returned." + }, + { + "name": "size", + "schema": "integer", + "description": "Defines how many users should be returned per page." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/licenses/{id}/remove-all-users", + "method": "removeAllUsers", + "httpMethod": "post", + "tag": "Admin", + "typeScriptTag": "admin", + "description": "Removes all the users that are on the license. This will empty all the seats.", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "The internal identifier of the license, this is `id` and not `license_id`.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/notifications/{workspace_id}", + "method": "clearWorkspaceNotifications", + "httpMethod": "delete", + "tag": "Notifications", + "typeScriptTag": "notifications", + "description": "Clear all the notifications for the given workspace and user.", + "parameters": [ + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The workspace the notifications are in.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/notifications/{workspace_id}", + "method": "listForWorkspaceAndUser", + "httpMethod": "get", + "tag": "Notifications", + "typeScriptTag": "notifications", + "description": "Lists the notifications for the given workspace and the current user. The response is paginated and the limit and offset parameters can be controlled using the query parameters.", + "parameters": [ + { + "name": "limit", + "schema": "integer", + "description": "Defines how many notifications should be returned." + }, + { + "name": "offset", + "schema": "integer", + "description": "Defines the offset of the notifications that should be returned." + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The workspace id that the notifications belong to.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/notifications/{workspace_id}/{notification_id}", + "method": "markAsRead", + "httpMethod": "patch", + "tag": "Notifications", + "typeScriptTag": "notifications", + "description": "Marks a notification as read.", + "parameters": [ + { + "name": "notificationId", + "schema": "integer", + "required": true, + "description": "The notification id to update.", + "example": 0 + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The workspace the notification is in.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Serialize notification data along with the recipient information about the\nread status for the given user." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/notifications/{workspace_id}/mark-all-as-read", + "method": "markAllAsRead", + "httpMethod": "post", + "tag": "Notifications", + "typeScriptTag": "notifications", + "description": "Mark as read all the notifications for the given workspace and user.", + "parameters": [ + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The workspace the notifications are in.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/role/{group_id}", + "method": "listWithinGroup", + "httpMethod": "get", + "tag": "Role assignments", + "typeScriptTag": "roleAssignments", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_assign_role](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n You can list the role assignments within a group, optionally filtered down to a specific scope inside of that group. If the scope isn't specified,the group will be considered the scope.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "The group in which the role assignments are related to.", + "example": 0 + }, + { + "name": "scopeId", + "schema": "integer", + "description": "The id of the scope you are trying to get all roleassignments for." + }, + { + "name": "scopeType", + "schema": "string", + "description": "The type of scope you are trying to get all roleassignments for." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/role/{group_id}", + "method": "assignRoleToGroup", + "httpMethod": "post", + "tag": "Role assignments", + "typeScriptTag": "roleAssignments", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_assign_role](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n You can assign a role to a subject into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "The group in which the role assignment takes place.", + "example": 0 + }, + { + "name": "subject_id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "subject_type", + "schema": "string", + "required": true, + "description": "", + "example": "SUBJECT_TYPE" + }, + { + "name": "role", + "schema": "string", + "required": true, + "description": "", + "example": "ROLE" + }, + { + "name": "scope_id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "scope_type", + "schema": "string", + "required": true, + "description": "", + "example": "SCOPE_TYPE" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Serializer for RoleAssignment used for the Open API spec" + }, + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/role/{group_id}/batch", + "method": "assignMultipleSubjectsToGroup", + "httpMethod": "post", + "tag": "Role assignments", + "typeScriptTag": "roleAssignments", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_batch_assign_role](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n You can assign a role to a multiple subjects into the given group for the given scope with this endpoint. If you want to remove the role you can omit the role property.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "The group in which the role assignment takes place.", + "example": 0 + }, + { + "name": "items", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/role/{workspace_id}", + "method": "listWithinWorkspaceScope", + "httpMethod": "get", + "tag": "Role assignments", + "typeScriptTag": "roleAssignments", + "description": "You can list the role assignments within a workspace, optionally filtered downto a specific scope inside of that workspace. If the scope isn't specified,the workspace will be considered the scope.", + "parameters": [ + { + "name": "scopeId", + "schema": "integer", + "description": "The id of the scope you are trying to get all roleassignments for." + }, + { + "name": "scopeType", + "schema": "string", + "description": "The type of scope you are trying to get all roleassignments for." + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The workspace in which the role assignments are related to.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/role/{workspace_id}", + "method": "role", + "httpMethod": "post", + "tag": "Role assignments", + "typeScriptTag": "roleAssignments", + "description": "You can assign a role to a subject into the given workspace for the given scope with this endpoint. If you want to remove the role you can omit the role property.", + "parameters": [ + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The workspace in which the role assignment takes place.", + "example": 0 + }, + { + "name": "subject_id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "subject_type", + "schema": "string", + "required": true, + "description": "", + "example": "SUBJECT_TYPE" + }, + { + "name": "role", + "schema": "string", + "required": true, + "description": "", + "example": "ROLE" + }, + { + "name": "scope_id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "scope_type", + "schema": "string", + "required": true, + "description": "", + "example": "SCOPE_TYPE" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Serializer for RoleAssignment used for the Open API spec" + }, + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/role/{workspace_id}/batch", + "method": "assignRoleToGroup", + "httpMethod": "post", + "tag": "Role assignments", + "typeScriptTag": "roleAssignments", + "description": "You can assign a role to a multiple subjects into the given workspace for the given scopes with this endpoint. If you want to remove the role you can omit the role property.", + "parameters": [ + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The workspace in which the role assignment takes place.", + "example": 0 + }, + { + "name": "items", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/row_comments/{table_id}/{row_id}", + "method": "getAllComments", + "httpMethod": "get", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Returns all row comments for the specified table and row.\n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "limit", + "schema": "integer", + "description": "Defines how many rows should be returned." + }, + { + "name": "offset", + "schema": "integer", + "description": "Can only be used in combination with the `limit` parameter and defines from which offset the rows should be returned." + }, + { + "name": "page", + "schema": "integer", + "description": "Defines which page of rows should be returned. Either the `page` or `limit` can be provided, not both." + }, + { + "name": "rowId", + "schema": "integer", + "required": true, + "description": "The row to get row comments for.", + "example": 0 + }, + { + "name": "size", + "schema": "integer", + "description": "Can only be used in combination with the `page` parameter and defines how many rows should be returned." + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "The table the row is in.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/row_comments/{table_id}/{row_id}", + "method": "createComment", + "httpMethod": "post", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Creates a comment on the specified row.\n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "rowId", + "schema": "integer", + "required": true, + "description": "The row to create a comment for.", + "example": 0 + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "The table to find the row to comment on in.", + "example": 0 + }, + { + "name": "message", + "schema": "object", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/row_comments/{table_id}/{row_id}/notification-mode", + "method": "updateNotificationMode", + "httpMethod": "put", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Updates the user's notification preferences for comments made on a specified table row.\n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "rowId", + "schema": "integer", + "required": true, + "description": "The row on which to manage the comment subscription.", + "example": 0 + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "The table id where the row is in.", + "example": 0 + }, + { + "name": "mode", + "schema": "string", + "required": true, + "description": "", + "example": "MODE" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/row_comments/{table_id}/comment/{comment_id}", + "method": "deleteComment", + "httpMethod": "delete", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Delete a row comment.\n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "commentId", + "schema": "integer", + "required": true, + "description": "The row comment to delete.", + "example": 0 + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "The table the row is in.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/row_comments/{table_id}/comment/{comment_id}", + "method": "updateComment", + "httpMethod": "patch", + "tag": "Database table rows", + "typeScriptTag": "databaseTableRows", + "description": "Update a row comment.\n\nThis is a **premium** feature.", + "parameters": [ + { + "name": "commentId", + "schema": "integer", + "required": true, + "description": "The row comment to update.", + "example": 0 + }, + { + "name": "tableId", + "schema": "integer", + "required": true, + "description": "The table the row is in.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/settings", + "method": "settings", + "httpMethod": "get", + "tag": "Settings", + "typeScriptTag": "settings", + "description": "Responds with all the admin configured settings.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/settings/instance-id", + "method": "getInstanceId", + "httpMethod": "get", + "tag": "Settings", + "typeScriptTag": "settings", + "description": "Responds with the self hosted instance id. Only a user with staff permissions can request it.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/settings/update", + "method": "settings", + "httpMethod": "patch", + "tag": "Settings", + "typeScriptTag": "settings", + "description": "Updates the admin configured settings if the user has admin permissions.", + "parameters": [ + { + "name": "allow_new_signups", + "schema": "boolean", + "description": "" + }, + { + "name": "allow_signups_via_workspace_invitations", + "schema": "boolean", + "description": "" + }, + { + "name": "allow_signups_via_group_invitations", + "schema": "boolean", + "description": "" + }, + { + "name": "allow_reset_password", + "schema": "boolean", + "description": "" + }, + { + "name": "allow_global_workspace_creation", + "schema": "boolean", + "description": "" + }, + { + "name": "allow_global_group_creation", + "schema": "boolean", + "description": "" + }, + { + "name": "account_deletion_grace_delay", + "schema": "integer", + "description": "" + }, + { + "name": "show_admin_signup_page", + "schema": "boolean", + "description": "" + }, + { + "name": "track_workspace_usage", + "schema": "boolean", + "description": "" + }, + { + "name": "show_baserow_help_request", + "schema": "boolean", + "description": "" + }, + { + "name": "co_branding_logo", + "schema": "undefined", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/snapshots/{snapshot_id}", + "method": "snapshot", + "httpMethod": "delete", + "tag": "Snapshots", + "typeScriptTag": "snapshots", + "description": "Deletes a snapshot. Deleting a snapshot doesn't affect the application that the snapshot is made from and doesn't affect any applications that were created by restoring it. Snapshot deletion is permanent and can't be undone.", + "parameters": [ + { + "name": "snapshotId", + "schema": "integer", + "required": true, + "description": "Id of the snapshot to delete.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/snapshots/{snapshot_id}/restore", + "method": "snapshot", + "httpMethod": "post", + "tag": "Snapshots", + "typeScriptTag": "snapshots", + "description": "Restores a snapshot. When an application snapshot is restored, a new application will be created in the same workspace that the original application was placed in with the name of the snapshot and data that were in the original application at the time the snapshot was taken. The original application that the snapshot was taken from is unaffected. Snapshots can be restored multiple times and a number suffix is added to the new application name in the case of a collision.", + "parameters": [ + { + "name": "snapshotId", + "schema": "integer", + "required": true, + "description": "Id of the snapshot to restore.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/snapshots/application/{application_id}", + "method": "snapshots", + "httpMethod": "get", + "tag": "Snapshots", + "typeScriptTag": "snapshots", + "description": "Lists snapshots that were created for a given application.", + "parameters": [ + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "Application ID for which to list snapshots.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/snapshots/application/{application_id}", + "method": "snapshot", + "httpMethod": "post", + "tag": "Snapshots", + "typeScriptTag": "snapshots", + "description": "Creates a new application snapshot. Snapshots represent a state of an application at a specific point in time and can be restored later, making it easy to create backups of entire applications.", + "parameters": [ + { + "name": "applicationId", + "schema": "integer", + "required": true, + "description": "Application ID for which to list snapshots.", + "example": 0 + }, + { + "name": "id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "snapshot_from_application", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "created_by", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "created_at", + "schema": "string", + "required": true, + "description": "", + "example": "CREATED_AT" + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/sso/oauth2/callback/{provider_id}", + "method": "completeProviderCallback", + "httpMethod": "get", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "Processes callback from OAuth2 provider and logs the user in if successful.", + "parameters": [ + { + "name": "code", + "schema": "integer", + "description": "The id of the provider for which to process the callback." + }, + { + "name": "providerId", + "schema": "integer", + "required": true, + "description": "The id of the provider for which to process the callback.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "default", + "description": "No response body" + } + ] + }, + { + "url": "/api/sso/oauth2/login/{provider_id}", + "method": "redirectToProvider", + "httpMethod": "get", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "Redirects to the OAuth2 provider's authentication URL based on the provided auth provider's id.", + "parameters": [ + { + "name": "groupInvitationToken", + "schema": "string", + "description": "Please use the functionally identical `workspace_invitation_token` instead as this querystring is being removed in the future." + }, + { + "name": "original", + "schema": "integer", + "description": "The relative part of URL that the user wanted to access." + }, + { + "name": "providerId", + "schema": "integer", + "required": true, + "description": "The id of the provider for redirect.", + "example": 0 + }, + { + "name": "workspaceInvitationToken", + "schema": "string", + "description": "The invitation token sent to the user to join a specific workspace." + } + ], + "responses": [ + { + "statusCode": "default", + "description": "No response body" + } + ] + }, + { + "url": "/api/sso/saml/acs", + "method": "completeSamlAuthenticationFlow", + "httpMethod": "post", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "Complete the SAML authentication flow by validating the SAML response. Sign in the user if already exists in Baserow or create a new one otherwise. Once authenticated, the user will be redirected to the original URL they were trying to access. If the response is invalid, the user will be redirected to an error page with a specific error message.It accepts the language code and the workspace invitation token as query parameters if provided.", + "parameters": [ + { + "name": "SAMLResponse", + "schema": "string", + "required": true, + "description": "", + "example": "SAMLRESPONSE" + }, + { + "name": "RelayState", + "schema": "string", + "required": true, + "description": "", + "example": "RELAYSTATE" + } + ], + "responses": [ + { + "statusCode": "default", + "description": "No response body" + } + ] + }, + { + "url": "/api/sso/saml/login", + "method": "initiateSsoSamlLogin", + "httpMethod": "get", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "This is the endpoint that is called when the user wants to initiate a SSO SAML login from Baserow (the service provider). The user will be redirected to the SAML identity provider (https://baserow.io/docs/index where the user can authenticate. Once logged in in the IdP, the user will be redirected back to the assertion consumer service endpoint (https://baserow.io/docs/index where the SAML response will be validated and a new JWT session token will be provided to work with Baserow APIs.", + "parameters": [ + { + "name": "email", + "schema": "string", + "description": "The email address of the user that want to sign in using SAML." + }, + { + "name": "groupInvitationToken", + "schema": "string", + "description": "Please use the functionally identical `workspace_invitation_token` instead as this querystring is being removed in the future" + }, + { + "name": "language", + "schema": "string", + "description": "An ISO 639 language code (with optional variant) selected by the user. Ex: en-GB." + }, + { + "name": "original", + "schema": "string", + "description": "The url to which the user should be redirected after a successful login or sign up." + }, + { + "name": "workspaceInvitationToken", + "schema": "string", + "description": "If provided and valid, the user accepts the workspace invitation and will have access to the workspace after login or signing up." + } + ], + "responses": [ + { + "statusCode": "default", + "description": "No response body" + } + ] + }, + { + "url": "/api/sso/saml/login-url", + "method": "getSamlLoginUrl", + "httpMethod": "get", + "tag": "Auth", + "typeScriptTag": "auth", + "description": "Return the correct redirect_url to initiate the SSO SAML login. It needs an email address if multiple SAML providers are configured otherwise the only configured SAML provider signup URL will be returned.", + "parameters": [ + { + "name": "email", + "schema": "string", + "description": "The email address of the user that want to sign in using SAML." + }, + { + "name": "groupInvitationToken", + "schema": "string", + "description": "Please use the functionally identical `workspace_invitation_token` instead as this querystring is being removed in the future." + }, + { + "name": "language", + "schema": "string", + "description": "An ISO 639 language code (with optional variant) selected by the user. Ex: en-GB." + }, + { + "name": "original", + "schema": "string", + "description": "The url to which the user should be redirected after a successful login." + }, + { + "name": "workspaceInvitationToken", + "schema": "string", + "description": "If provided and valid, the user accepts the workspace invitation and will have access to the workspace after login or signing up." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Unspecified response body" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/teams/{team_id}", + "method": "team", + "httpMethod": "delete", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "Deletes a team if the authorized user is in the team's workspace. All the related children (e.g. subjects) are also going to be deleted.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "teamId", + "schema": "integer", + "required": true, + "description": "Deletes the team related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/teams/{team_id}", + "method": "team", + "httpMethod": "get", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "Returns the information related to the provided team id.", + "parameters": [ + { + "name": "teamId", + "schema": "integer", + "required": true, + "description": "Returns the team related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/teams/{team_id}", + "method": "team", + "httpMethod": "put", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "Updates an existing team with a new name.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "teamId", + "schema": "string", + "required": true, + "description": "", + "example": "TEAM_ID" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "default_role", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "subjects", + "schema": "array", + "required": false, + "description": "", + "default": [] + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/teams/{team_id}/subjects", + "method": "listSubjects", + "httpMethod": "get", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "Lists all team subjects in a given team.", + "parameters": [ + { + "name": "teamId", + "schema": "string", + "required": true, + "description": "", + "example": "TEAM_ID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/teams/{team_id}/subjects", + "method": "subject", + "httpMethod": "post", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "Creates a new team subject.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "teamId", + "schema": "string", + "required": true, + "description": "", + "example": "TEAM_ID" + }, + { + "name": "id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "subject_id", + "schema": "integer", + "required": false, + "description": "" + }, + { + "name": "subject_user_email", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "subject_type", + "schema": "string", + "required": true, + "description": "", + "example": "SUBJECT_TYPE" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/teams/{team_id}/subjects/{subject_id}", + "method": "subject", + "httpMethod": "delete", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "Deletes a subject if the authorized user is in the team's workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "subjectId", + "schema": "integer", + "required": true, + "description": "The subject id to remove from the team.", + "example": 0 + }, + { + "name": "teamId", + "schema": "integer", + "required": true, + "description": "The team id which the subject will be removed from.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/teams/{team_id}/subjects/{subject_id}", + "method": "subject", + "httpMethod": "get", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "Returns the information related to the provided subject id", + "parameters": [ + { + "name": "subjectId", + "schema": "integer", + "required": true, + "description": "Returns the subject related to the provided value.", + "example": 0 + }, + { + "name": "teamId", + "schema": "string", + "required": true, + "description": "", + "example": "TEAM_ID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/teams/group/{group_id}", + "method": "getAllInGroup", + "httpMethod": "get", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_list_teams](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Lists all teams in a given group.", + "parameters": [ + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Lists all teams in a given group.", + "example": 0 + }, + { + "name": "search", + "schema": "string", + "description": "Search for teams by their name." + }, + { + "name": "sorts", + "schema": "string", + "description": "Sort teams by name or subjects." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/teams/group/{group_id}", + "method": "createInGroup", + "httpMethod": "post", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_create_team](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Creates a new team in a given group.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "groupId", + "schema": "string", + "required": true, + "description": "", + "example": "GROUP_ID" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "default_role", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "subjects", + "schema": "array", + "required": false, + "description": "", + "default": [] + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/teams/workspace/{workspace_id}", + "method": "listInWorkspace", + "httpMethod": "get", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "Lists all teams in a given workspace.", + "parameters": [ + { + "name": "search", + "schema": "string", + "description": "Search for teams by their name." + }, + { + "name": "sorts", + "schema": "string", + "description": "Sort teams by name or subjects." + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Lists all teams in a given workspace.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/teams/workspace/{workspace_id}", + "method": "createNewTeam", + "httpMethod": "post", + "tag": "Teams", + "typeScriptTag": "teams", + "description": "Creates a new team.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "workspaceId", + "schema": "string", + "required": true, + "description": "", + "example": "WORKSPACE_ID" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "default_role", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "subjects", + "schema": "array", + "required": false, + "description": "", + "default": [] + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/templates", + "method": "templates", + "httpMethod": "get", + "tag": "Templates", + "typeScriptTag": "templates", + "description": "Lists all the template categories and the related templates that are in that category. The template's `workspace_id` can be used for previewing purposes because that workspace contains the applications that are in the template. All the `get` and `list` endpoints related to that workspace are publicly accessible.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/templates/install/{group_id}/{template_id}", + "method": "installApplications", + "httpMethod": "post", + "tag": "Templates", + "typeScriptTag": "templates", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_install_template](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Installs the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "The id related to the group where the template applications must be installed into.", + "example": 0 + }, + { + "name": "templateId", + "schema": "integer", + "required": true, + "description": "The id related to the template that must be installed.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/templates/install/{group_id}/{template_id}/async", + "method": "startAsyncJob", + "httpMethod": "post", + "tag": "Templates", + "typeScriptTag": "templates", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_install_template_async](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Start an async job to install the applications of the given template into the given group if the user has access to that group. The response contains those newly created applications.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "The id related to the group where the template applications must be installed into.", + "example": 0 + }, + { + "name": "templateId", + "schema": "integer", + "required": true, + "description": "The id related to the template that must be installed.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/templates/install/{workspace_id}/{template_id}", + "method": "template", + "httpMethod": "post", + "tag": "Templates", + "typeScriptTag": "templates", + "description": "(https://baserow.io/docs/index Installs the applications of the given template into the given workspace if the user has access to that workspace. The response contains those newly created applications.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "templateId", + "schema": "integer", + "required": true, + "description": "The id related to the template that must be installed.", + "example": 0 + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The id related to the workspace where the template applications must be installed into.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/templates/install/{workspace_id}/{template_id}/async", + "method": "startAsyncJob", + "httpMethod": "post", + "tag": "Templates", + "typeScriptTag": "templates", + "description": "Start an async job to install the applications of the given template into the given workspace if the user has access to that workspace. The response contains those newly created applications.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "templateId", + "schema": "integer", + "required": true, + "description": "The id related to the template that must be installed.", + "example": 0 + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The id related to the workspace where the template applications must be installed into.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/trash", + "method": "inspectTrashContents", + "httpMethod": "get", + "tag": "Trash", + "typeScriptTag": "trash", + "description": "Responds with the workspaces and applications available for the requesting user to inspect the trash contents of.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/trash/group/{group_id}", + "method": "emptyGroupContents", + "httpMethod": "delete", + "tag": "Trash", + "typeScriptTag": "trash", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_empty_contents](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Empties the specified group and/or application of trash, including the group and application themselves if they are trashed also.", + "parameters": [ + { + "name": "applicationId", + "schema": "integer", + "description": "Optionally filters down the trash to delete to only items for this application in the group." + }, + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "The group whose trash contents to empty, including the group itself if it is also trashed.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/trash/group/{group_id}", + "method": "getGroupContents", + "httpMethod": "get", + "tag": "Trash", + "typeScriptTag": "trash", + "description": "**This endpoint has been deprecated and replaced with a new endpoint, [workspace_get_contents](https://api.baserow.io).**\n\n**Support for this endpoint will end in 2024.**\n\n Responds with trash contents for a group optionally filtered to a specific application.", + "parameters": [ + { + "name": "applicationId", + "schema": "integer", + "description": "Optionally filters down the trash to only items for this application in the group." + }, + { + "name": "groupId", + "schema": "integer", + "required": true, + "description": "Returns the trash for the group with this id.", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "description": "Selects which page of trash contents should be returned." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/trash/restore", + "method": "restoreItem", + "httpMethod": "patch", + "tag": "Trash", + "typeScriptTag": "trash", + "description": "Restores the specified trashed item back into baserow.", + "parameters": [ + { + "name": "trash_item_id", + "schema": "integer", + "description": "" + }, + { + "name": "parent_trash_item_id", + "schema": "integer", + "description": "" + }, + { + "name": "trash_item_type", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/trash/workspace/{workspace_id}", + "method": "emptyWorkspace", + "httpMethod": "delete", + "tag": "Trash", + "typeScriptTag": "trash", + "description": "Empties the specified workspace and/or application of trash, including the workspace and application themselves if they are trashed also.", + "parameters": [ + { + "name": "applicationId", + "schema": "integer", + "description": "Optionally filters down the trash to delete to only items for this application in the workspace." + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The workspace whose trash contents to empty, including the workspace itself if it is also trashed.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/trash/workspace/{workspace_id}", + "method": "getWorkspaceTrashContents", + "httpMethod": "get", + "tag": "Trash", + "typeScriptTag": "trash", + "description": "Responds with trash contents for a workspace optionally filtered to a specific application.", + "parameters": [ + { + "name": "applicationId", + "schema": "integer", + "description": "Optionally filters down the trash to only items for this application in the workspace." + }, + { + "name": "page", + "schema": "integer", + "description": "Selects which page of trash contents should be returned." + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Returns the trash for the workspace with this id.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/user", + "method": "user", + "httpMethod": "post", + "tag": "User", + "typeScriptTag": "user", + "description": "Creates a new user based on the provided values. If desired an authentication JWT can be generated right away. After creating an account the initial workspace containing a database is created.", + "parameters": [ + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "email", + "schema": "string", + "required": true, + "description": "", + "example": "EMAIL" + }, + { + "name": "password", + "schema": "string", + "required": true, + "description": "", + "example": "PASSWORD" + }, + { + "name": "language", + "schema": "string", + "required": false, + "description": "", + "default": "en" + }, + { + "name": "authenticate", + "schema": "boolean", + "required": false, + "description": "", + "default": false + }, + { + "name": "group_invitation_token", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "workspace_invitation_token", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "template_id", + "schema": "integer", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/user-files/upload-file", + "method": "file", + "httpMethod": "post", + "tag": "User files", + "typeScriptTag": "userFiles", + "description": "Uploads a file to Baserow by uploading the file contents directly. A `file` multipart is expected containing the file contents.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/user-files/upload-via-url", + "method": "uploadViaUrl", + "httpMethod": "post", + "tag": "User files", + "typeScriptTag": "userFiles", + "description": "Uploads a file to Baserow by downloading it from the provided URL.", + "parameters": [ + { + "name": "url", + "schema": "string", + "required": true, + "description": "", + "example": "URL" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/user-source-auth-refresh", + "method": "refreshAccessToken", + "httpMethod": "post", + "tag": "User sources", + "typeScriptTag": "userSources", + "description": "Generate a new access_token that can be used to continue operating on Baserow with a user source user starting from a valid refresh token.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/api/user-source-token-blacklist", + "method": "blacklistToken", + "httpMethod": "post", + "tag": "User sources", + "typeScriptTag": "userSources", + "description": "Blacklists the provided user source token. This can be used the sign the user off.", + "parameters": [ + { + "name": "refresh", + "schema": "string", + "required": true, + "description": "", + "example": "REFRESH" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/api/user-source/{user_source_id}", + "method": "removeById", + "httpMethod": "delete", + "tag": "User sources", + "typeScriptTag": "userSources", + "description": "Deletes the user_source related by the given id.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "userSourceId", + "schema": "integer", + "required": true, + "description": "The id of the user_source", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/user-source/{user_source_id}", + "method": "updateExistingUserSource", + "httpMethod": "patch", + "tag": "User sources", + "typeScriptTag": "userSources", + "description": "Updates an existing user_source.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "userSourceId", + "schema": "integer", + "required": true, + "description": "The id of the user_source", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/user-source/{user_source_id}/move", + "method": "rearrangeUserSource", + "httpMethod": "patch", + "tag": "User sources", + "typeScriptTag": "userSources", + "description": "Moves the user_source in the application before another user_source or at the end of the application if no before user_source is given. The user_sources must belong to the same application.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "userSourceId", + "schema": "integer", + "required": true, + "description": "The id of the user_source to move", + "example": 0 + }, + { + "name": "before_id", + "schema": "integer", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/user/account", + "method": "account", + "httpMethod": "patch", + "tag": "User", + "typeScriptTag": "user", + "description": "Updates the account information of the authenticated user.", + "parameters": [ + { + "name": "first_name", + "schema": "string", + "description": "" + }, + { + "name": "language", + "schema": "string", + "description": "" + }, + { + "name": "email_notification_frequency", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "This serializer must be kept in sync with `UserSerializer`." + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/user/change-password", + "method": "password", + "httpMethod": "post", + "tag": "User", + "typeScriptTag": "user", + "description": "Changes the password of an authenticated user, but only if the old password matches.", + "parameters": [ + { + "name": "old_password", + "schema": "string", + "required": true, + "description": "", + "example": "OLD_PASSWORD" + }, + { + "name": "new_password", + "schema": "string", + "required": true, + "description": "", + "example": "NEW_PASSWORD" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/user/dashboard", + "method": "viewPendingWorkspaceInvitations", + "httpMethod": "get", + "tag": "User", + "typeScriptTag": "user", + "description": "Lists all the relevant user information that for example could be shown on a dashboard. It will contain all the pending workspace invitations for that user.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/user/redo", + "method": "redoAction", + "httpMethod": "patch", + "tag": "User", + "typeScriptTag": "user", + "description": "Redoes the latest redoable action performed by the user making the request. a ClientSessionId header must be provided and only actions which were performed the same user with the same ClientSessionId value set on the api request that performed the action will be redone.Additionally the ClientSessionId header must be between 1 and 256 characters long and must only contain alphanumeric or the - characters.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "required": true, + "description": "The particular client session to redo actions for. The actions must have been performed with this same header set with the same value for them to be redoable by this endpoint.", + "example": "CLIENTSESSIONID" + }, + { + "name": "scopes", + "schema": "object", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/user/reset-password", + "method": "password", + "httpMethod": "post", + "tag": "User", + "typeScriptTag": "user", + "description": "Changes the password of a user if the reset token is valid. The **send_password_reset_email** endpoint sends an email to the user containing the token. That token can be used to change the password here without providing the old password.", + "parameters": [ + { + "name": "token", + "schema": "string", + "required": true, + "description": "", + "example": "TOKEN" + }, + { + "name": "password", + "schema": "string", + "required": true, + "description": "", + "example": "PASSWORD" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/user/schedule-account-deletion", + "method": "scheduleAccountDeletion", + "httpMethod": "post", + "tag": "User", + "typeScriptTag": "user", + "description": "Schedules the account deletion of the authenticated user. The user will be permanently deleted after the grace delay defined by the instance administrator.", + "parameters": [], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/user/send-reset-password-email", + "method": "sendResetPasswordEmail", + "httpMethod": "post", + "tag": "User", + "typeScriptTag": "user", + "description": "Sends an email containing the password reset link to the email address of the user. This will only be done if a user is found with the given email address. The endpoint will not fail if the email address is not found. The link is going to the valid for 48 hours.", + "parameters": [ + { + "name": "email", + "schema": "string", + "required": true, + "description": "", + "example": "EMAIL" + }, + { + "name": "base_url", + "schema": "string", + "required": true, + "description": "", + "example": "BASE_URL" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + } + ] + }, + { + "url": "/api/user/token-auth", + "method": "auth", + "httpMethod": "post", + "tag": "User", + "typeScriptTag": "user", + "description": "Authenticates an existing user based on their email and their password. If successful, an access token and a refresh token will be returned.", + "parameters": [ + { + "name": "email", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "username", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "password", + "schema": "string", + "required": true, + "description": "", + "example": "PASSWORD" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/api/user/token-blacklist", + "method": "blacklist", + "httpMethod": "post", + "tag": "User", + "typeScriptTag": "user", + "description": "Blacklists the provided token. This can be used the sign the user off.", + "parameters": [ + { + "name": "refresh", + "schema": "string", + "required": true, + "description": "", + "example": "REFRESH" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/api/user/token-refresh", + "method": "refresh", + "httpMethod": "post", + "tag": "User", + "typeScriptTag": "user", + "description": "Generate a new access_token that can be used to continue operating on Baserow starting from a valid refresh token.", + "parameters": [ + { + "name": "access", + "schema": "string", + "required": true, + "description": "", + "example": "ACCESS" + }, + { + "name": "refresh_token", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "token", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/api/user/token-verify", + "method": "verify", + "httpMethod": "post", + "tag": "User", + "typeScriptTag": "user", + "description": "Verifies if the refresh token is valid and can be used to generate a new access_token.", + "parameters": [ + { + "name": "token", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "refresh_token", + "schema": "string", + "required": true, + "description": "", + "example": "REFRESH_TOKEN" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/api/user/undo", + "method": "undoLatestUndoableAction", + "httpMethod": "patch", + "tag": "User", + "typeScriptTag": "user", + "description": "undoes the latest undoable action performed by the user making the request. a ClientSessionId header must be provided and only actions which were performed the same user with the same ClientSessionId value set on the api request that performed the action will be undone.Additionally the ClientSessionId header must be between 1 and 256 characters long and must only contain alphanumeric or the - characters.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "required": true, + "description": "The particular client session to undo actions for. The actions must have been performed with this same header set with the same value for them to be undoable by this endpoint.", + "example": "CLIENTSESSIONID" + }, + { + "name": "scopes", + "schema": "object", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/workspaces", + "method": "workspaces", + "httpMethod": "get", + "tag": "Workspaces", + "typeScriptTag": "workspaces", + "description": "Lists all the workspaces of the authorized user. A workspace can contain multiple applications like a database. Multiple users can have access to a workspace. For example each company could have their own workspace containing databases related to that company. The order of the workspaces are custom for each user. The order is configurable via the **order_workspaces** endpoint.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/api/workspaces", + "method": "workspace", + "httpMethod": "post", + "tag": "Workspaces", + "typeScriptTag": "workspaces", + "description": "Creates a new workspace where only the authorized user has access to. No initial data like database applications are added, they have to be created via other endpoints.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "This serializers includes relevant fields of the Workspace model, but also\nsome WorkspaceUser specific fields related to the workspace user relation.\n\nAdditionally, the list of users are included for each workspace." + } + ] + }, + { + "url": "/api/workspaces/{workspace_id}", + "method": "workspace", + "httpMethod": "delete", + "tag": "Workspaces", + "typeScriptTag": "workspaces", + "description": "Deletes an existing workspace if the authorized user belongs to the workspace. All the applications, databases, tables etc that were in the workspace are going to be deleted also.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Deletes the workspace related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/{workspace_id}", + "method": "workspace", + "httpMethod": "patch", + "tag": "Workspaces", + "typeScriptTag": "workspaces", + "description": "Updates the existing workspace related to the provided `workspace_id` parameter if the authorized user belongs to the workspace. It is not yet possible to add additional users to a workspace.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Updates the workspace related to the provided value.", + "example": 0 + }, + { + "name": "id", + "schema": "integer", + "description": "" + }, + { + "name": "name", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/{workspace_id}/leave", + "method": "workspace", + "httpMethod": "post", + "tag": "Workspaces", + "typeScriptTag": "workspaces", + "description": "Makes the authenticated user leave the workspace related to the provided `workspace_id` if the user is in that workspace. If the user is the last admin in the workspace, they will not be able to leave it. There must always be one admin in the workspace, otherwise it will be left without control. If that is the case, they must either delete the workspace or give another member admin permissions first.", + "parameters": [ + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Leaves the workspace related to the value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/{workspace_id}/permissions", + "method": "permissions", + "httpMethod": "get", + "tag": "Workspaces", + "typeScriptTag": "workspaces", + "description": "Returns a the permission data necessary to determine the permissions of a specific user over a specific workspace. \nSee `core.handler.CoreHandler.get_permissions()` for more details.", + "parameters": [ + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "The workspace id we want the permission object for.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/invitations/{workspace_invitation_id}", + "method": "deleteInvitation", + "httpMethod": "delete", + "tag": "Workspace invitations", + "typeScriptTag": "workspaceInvitations", + "description": "Deletes a workspace invitation if the authorized user has admin rights to the related workspace.", + "parameters": [ + { + "name": "workspaceInvitationId", + "schema": "integer", + "required": true, + "description": "Deletes the workspace invitation related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/invitations/{workspace_invitation_id}", + "method": "getById", + "httpMethod": "get", + "tag": "Workspace invitations", + "typeScriptTag": "workspaceInvitations", + "description": "Returns the requested workspace invitation if the authorized user has admin right to the related workspace", + "parameters": [ + { + "name": "workspaceInvitationId", + "schema": "integer", + "required": true, + "description": "Returns the workspace invitation related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/invitations/{workspace_invitation_id}", + "method": "updateExistingInvitation", + "httpMethod": "patch", + "tag": "Workspace invitations", + "typeScriptTag": "workspaceInvitations", + "description": "Updates the existing workspace invitation related to the provided `workspace_invitation_id` param if the authorized user has admin rights to the related workspace.", + "parameters": [ + { + "name": "workspaceInvitationId", + "schema": "integer", + "required": true, + "description": "Updates the workspace invitation related to the provided value.", + "example": 0 + }, + { + "name": "permissions", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/invitations/{workspace_invitation_id}/accept", + "method": "acceptInvitation", + "httpMethod": "post", + "tag": "Workspace invitations", + "typeScriptTag": "workspaceInvitations", + "description": "Accepts a workspace invitation with the given id if the email address of the user matches that of the invitation.", + "parameters": [ + { + "name": "workspaceInvitationId", + "schema": "integer", + "required": true, + "description": "Accepts the workspace invitation related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "This serializers includes relevant fields of the Workspace model, but also\nsome WorkspaceUser specific fields related to the workspace user relation.\n\nAdditionally, the list of users are included for each workspace." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/invitations/{workspace_invitation_id}/reject", + "method": "rejectInvitation", + "httpMethod": "post", + "tag": "Workspace invitations", + "typeScriptTag": "workspaceInvitations", + "description": "Rejects a workspace invitation with the given id if the email address of the user matches that of the invitation.", + "parameters": [ + { + "name": "workspaceInvitationId", + "schema": "integer", + "required": true, + "description": "Rejects the workspace invitation related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/invitations/token/{token}", + "method": "getByToken", + "httpMethod": "get", + "tag": "Workspace invitations", + "typeScriptTag": "workspaceInvitations", + "description": "Responds with the serialized workspace invitation if an invitation with the provided token is found.", + "parameters": [ + { + "name": "token", + "schema": "string", + "required": true, + "description": "Returns the workspace invitation related to the provided token.", + "example": "TOKEN" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "This serializer is used for displaying the invitation to the user that doesn't\nhave access to the workspace yet, so not for invitation management purposes." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/invitations/workspace/{workspace_id}", + "method": "list", + "httpMethod": "get", + "tag": "Workspace invitations", + "typeScriptTag": "workspaceInvitations", + "description": "Lists all the workspace invitations of the workspace related to the provided `workspace_id` parameter if the authorized user has admin rights to that workspace.", + "parameters": [ + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Returns only invitations that are in the workspace related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/invitations/workspace/{workspace_id}", + "method": "createInvite", + "httpMethod": "post", + "tag": "Workspace invitations", + "typeScriptTag": "workspaceInvitations", + "description": "Creates a new workspace invitations for an email address if the authorized user has admin rights to the related workspace. An email containing a sign up link will be send to the user.", + "parameters": [ + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Creates a workspace invitation to the workspace related to the provided value.", + "example": 0 + }, + { + "name": "email", + "schema": "string", + "required": true, + "description": "", + "example": "EMAIL" + }, + { + "name": "permissions", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "message", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "base_url", + "schema": "string", + "required": true, + "description": "", + "example": "BASE_URL" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/order", + "method": "workspaces", + "httpMethod": "post", + "tag": "Workspaces", + "typeScriptTag": "workspaces", + "description": "Changes the order of the provided workspace ids to the matching position that the id has in the list. If the authorized user does not belong to the workspace it will be ignored. The order will be custom for each user.", + "parameters": [ + { + "name": "clientSessionId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular client session. Then using the undo/redo endpoints with the same ClientSessionId header this action can be undone/redone." + }, + { + "name": "clientUndoRedoActionGroupId", + "schema": "string", + "description": "An optional header that marks the action performed by this request as having occurred in a particular action group.Then calling the undo/redo endpoint with the same ClientSessionId header, all the actions belonging to the same action group can be undone/redone together in a single API call." + }, + { + "name": "workspaces", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + } + ] + }, + { + "url": "/api/workspaces/users/{workspace_user_id}", + "method": "deleteUser", + "httpMethod": "delete", + "tag": "Workspaces", + "typeScriptTag": "workspaces", + "description": "Deletes a workspace user if the authorized user has admin rights to the related workspace.", + "parameters": [ + { + "name": "workspaceUserId", + "schema": "integer", + "required": true, + "description": "Deletes the workspace user related to the provided value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No response body" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/users/{workspace_user_id}", + "method": "updateWorkspaceUser", + "httpMethod": "patch", + "tag": "Workspaces", + "typeScriptTag": "workspaces", + "description": "Updates the existing workspace user related to the provided `workspace_user_id` param if the authorized user has admin rights to the related workspace.", + "parameters": [ + { + "name": "workspaceUserId", + "schema": "integer", + "required": true, + "description": "Updates the workspace user related to the provided value.", + "example": 0 + }, + { + "name": "permissions", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/api/workspaces/users/workspace/{workspace_id}", + "method": "listUsersInWorkspace", + "httpMethod": "get", + "tag": "Workspaces", + "typeScriptTag": "workspaces", + "description": "Lists all the users that are in a workspace if the authorized user has admin permissions to the related workspace. To add a user to a workspace an invitation must be sent first.", + "parameters": [ + { + "name": "search", + "schema": "string", + "description": "Search for workspace users by username, or email." + }, + { + "name": "sorts", + "schema": "string", + "description": "Sort workspace users by name, email or role." + }, + { + "name": "workspaceId", + "schema": "integer", + "required": true, + "description": "Lists workspace users related to the provided workspace value.", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + } + ], + "repositoryDescription": "Baserow: The most flexible no-code platform for building databases and applications. Self-hosted, collaborative, secure, and scalable with Kanban boards, calendars, forms, and more. Embracing open-source principles. Join us at baserow.io/jobs. Baserow's {language} SDK generated by Konfig (https://konfigthis.com/).", + "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/baserow/logo.png", + "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/baserow/openapi.yaml", + "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/baserow/openapi.yaml", + "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/baserow/imagePreview.png", + "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/baserow/favicon.png", + "clientNameCamelCase": "baserow", + "lastUpdated": "2024-03-29T20:52:35.791Z", + "typescriptSdkUsageCode": "import { Baserow } from 'baserow-typescript-sdk';\n\nconst baserow = new Baserow({\n databaseToken: \"DATABASE_TOKEN\",\n jwt: \"JWT\"\n})", + "typescriptSdkFirstRequestCode": "// Sets view attributes only available for premium users.\nconst setPremiumAttributesResponse = baserow.databaseTableViews.setPremiumAttributes({\n viewId: 0\n})", + "fixedSpecFileName": "baserow-fixed-spec.yaml" +} \ No newline at end of file diff --git a/sdks/db/published/from-custom-request_beamlend.com.json b/sdks/db/published/from-custom-request_beamlend.com.json index 69b39bf8df..ebf2034089 100644 --- a/sdks/db/published/from-custom-request_beamlend.com.json +++ b/sdks/db/published/from-custom-request_beamlend.com.json @@ -31,7 +31,7 @@ "company": "Beam", "sdkName": "beam-{language}-sdk", "clientName": "Beam", - "metaDescription": "Beam is the intelligent way to manage risk with laser precision in real time.\n\nBeam's state-of-the-art software solution sources traditional and alternative data to give you a real-time affordability analysis of your customer and makes manual analysis, fragmented data sources, high costs and slow processes a thing of the past so that you and your team get better data with sharper insight.\n\nBeam makes it easy and seamless to access multiple data sources like bank statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated credit decisions. \n\nOur completely digital customer onboarding process allows for near-instant credit approval.\n\nBeam's API-first solution reduces credit decision-making time from days to seconds while helping you forecast your customer's income and expenses instantly. Beam Console's audit-ready reporting dashboard lets your admin, risk and underwriting teams easily and efficiently manage your customer data from one place.", + "metaDescription": "Beam is the intelligent way to manage risk with laser precision in real time.\n\nBeam's state-of-the-art software solution sources traditional and alternative data to give you a real-time affordability analysis of your customer and makes manual analysis, fragmented data sources, high costs and slow processes a thing of the past so that you and your team get better data with sharper insight.\n\nBeam makes it easy and seamless to access multiple data sources like bank statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated credit decisions.\n\nOur completely digital customer onboarding process allows for near-instant credit approval.\n\nBeam's API-first solution reduces credit decision-making time from days to seconds while helping you forecast your customer's income and expenses instantly. Beam Console's audit-ready reporting dashboard lets your admin, risk and underwriting teams easily and efficiently manage your customer data from one place.", "apiStatusUrls": "inherit", "homepage": "beamlend.com/", "developerDocumentation": "docs.beamlend.com/api/", @@ -44,7 +44,7 @@ "financial_data" ], "category": "Finance", - "apiDescription": "Beam is the intelligent way to manage risk with laser precision in real time.\n\nBeam's state-of-the-art software solution sources traditional and alternative data to give you a real-time affordability analysis of your customer and makes manual analysis, fragmented data sources, high costs and slow processes a thing of the past so that you and your team get better data with sharper insight.\n\nBeam makes it easy and seamless to access multiple data sources like bank statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated credit decisions. \n\nOur completely digital customer onboarding process allows for near-instant credit approval.\n\nBeam's API-first solution reduces credit decision-making time from days to seconds while helping you forecast your customer's income and expenses instantly. Beam Console's audit-ready reporting dashboard lets your admin, risk and underwriting teams easily and efficiently manage your customer data from one place.", + "apiDescription": "Beam is the intelligent way to manage risk with laser precision in real time.\n\nBeam's state-of-the-art software solution sources traditional and alternative data to give you a real-time affordability analysis of your customer and makes manual analysis, fragmented data sources, high costs and slow processes a thing of the past so that you and your team get better data with sharper insight.\n\nBeam makes it easy and seamless to access multiple data sources like bank statements from multiple accounts, bureau data and alternative data for thin-file customers, giving you the most up-to-date and precise view of your customer's financial position so that your organisation can make accelerated credit decisions.\n\nOur completely digital customer onboarding process allows for near-instant credit approval.\n\nBeam's API-first solution reduces credit decision-making time from days to seconds while helping you forecast your customer's income and expenses instantly. Beam Console's audit-ready reporting dashboard lets your admin, risk and underwriting teams easily and efficiently manage your customer data from one place.", "methods": [ { "url": "/v1/applications/applications/{application_id}", @@ -946,14 +946,14 @@ ] } ], - "repositoryDescription": "Beam offers an intelligent risk management software solution that provides real-time affordability analysis by sourcing traditional and alternative data. Access multiple data sources, make accelerated credit decisions, and reduce decision-making time with Beam's API-first solution.", + "repositoryDescription": "Beam provides real-time risk management with affordable affordability analysis, easy access to multiple data sources, near-instant credit approval, and audit-ready reporting dashboard. Beam's {language} SDK generated by Konfig (https://konfigthis.com/).", "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/beam/logo.jpg", "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/beam/openapi.yaml", "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/beam/openapi.yaml", "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/beam/imagePreview.png", "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/beam/favicon.png", "clientNameCamelCase": "beam", - "lastUpdated": "2024-03-29T20:32:07.929Z", + "lastUpdated": "2024-03-29T20:45:46.288Z", "typescriptSdkUsageCode": "import { Beam } from 'beam-typescript-sdk';\n\nconst beam = new Beam({\n username: \"USERNAME\",\n password: \"PASSWORD\"\n})", "typescriptSdkFirstRequestCode": "// Get Application By Id\nconst getByIdResponse = beam.applications.getById({\n applicationId: \"5eb7cf5a86d9755df3a6c593\"\n})", "fixedSpecFileName": "beam-fixed-spec.yaml" diff --git a/sdks/db/published/from-custom-request_browse.ai.json b/sdks/db/published/from-custom-request_browse.ai.json new file mode 100644 index 0000000000..19378639e0 --- /dev/null +++ b/sdks/db/published/from-custom-request_browse.ai.json @@ -0,0 +1,1135 @@ +{ + "securitySchemes": {}, + "apiBaseUrl": "https://api.browse.ai/v2", + "apiVersion": "v2", + "apiDescription": "If you are still using the deprecated API v1 version, you can see its documentation [here](https://www.browse.ai/docs/api/v1).", + "apiTitle": "Browse AI API Documentation", + "endpoints": 13, + "sdkMethods": 19, + "schemas": 72, + "parameters": 71, + "originalCustomRequest": { + "type": "GET", + "url": "https://api.browse.ai/v2/openapi" + }, + "customRequestSpecFilename": "browse.ai.yaml", + "difficultyScore": 72.25, + "difficulty": "Easy", + "company": "Browse AI", + "sdkName": "browse-ai-{language}-sdk", + "clientName": "BrowseAi", + "metaDescription": "We're creating the easiest way to scrape and monitor any website with no code. \n\nOur mission is to give every individual and business equal opportunity to benefit from information on the internet.", + "apiStatusUrls": "inherit", + "homepage": "browse.ai", + "developerDocumentation": "www.browse.ai/docs/api/v2", + "categories": [ + "ai", + "web_scraping" + ], + "category": "AI Tools", + "methods": [ + { + "url": "/status", + "method": "checkInfrastructureStatus", + "httpMethod": "get", + "tag": "system", + "typeScriptTag": "system", + "description": "Endpoint for checking the status of Browse AI infrastructure", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/teams", + "method": "getTeamsByAuth0AccessToken", + "httpMethod": "get", + "tag": "internal", + "typeScriptTag": "internal", + "description": "Retrieve list of teams under user account", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/robots", + "method": "listRetrieval", + "httpMethod": "get", + "tag": "robots", + "typeScriptTag": "robots", + "description": "Retrieve list of robots under your account", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}", + "method": "getById", + "httpMethod": "get", + "tag": "robots", + "typeScriptTag": "robots", + "description": "Retrieve single robot by ID", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID You can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/cookies", + "method": "updateCookies", + "httpMethod": "patch", + "tag": "robots", + "typeScriptTag": "robots", + "description": "Update a robot's cookies", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/tasks", + "method": "getAllByRobot", + "httpMethod": "get", + "tag": "tasks", + "typeScriptTag": "tasks", + "description": "Get all tasks by a robot", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Page number", + "example": 1 + }, + { + "name": "pageSize", + "schema": "integer", + "required": false, + "description": "Page size", + "example": 10, + "default": 10 + }, + { + "name": "status", + "schema": "string", + "required": false, + "description": "Task status", + "example": "successful" + }, + { + "name": "robotBulkRunId", + "schema": "string", + "required": false, + "description": "filter the result based on robot bulk run ID", + "example": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0" + }, + { + "name": "sort", + "schema": "string", + "required": false, + "description": "A comma separated list of fields to sort by. Default sorting is ascending and prefixing field names with a hyphen '-' yields a descending order.", + "example": "-createdAt,finishedAt" + }, + { + "name": "includeRetried", + "schema": "boolean", + "required": false, + "description": "by passing false you can exclude the retried tasks", + "example": false + }, + { + "name": "fromDate", + "schema": "integer", + "required": false, + "description": "From task creation date and time in the form of a Unix timestamp", + "example": 1678795867879 + }, + { + "name": "toDate", + "schema": "integer", + "required": false, + "description": "To task creation date and time in the form of a Unix timestamp", + "example": 1678795867879 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/tasks", + "method": "runRobotTask", + "httpMethod": "post", + "tag": "tasks", + "typeScriptTag": "tasks", + "description": "Run a robot", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "recordVideo", + "schema": "boolean", + "description": "", + "example": false + }, + { + "name": "inputParameters", + "schema": "object", + "description": "", + "example": { + "originUrl": "https://www.ycombinator.com/companies/airbnb", + "companies_skip": 0, + "companies_limit": 10 + } + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + }, + { + "statusCode": "503", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/tasks/{taskId}", + "method": "getTaskDetails", + "httpMethod": "get", + "tag": "tasks", + "typeScriptTag": "tasks", + "description": "Retrieve a task", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "taskId", + "schema": "string", + "required": true, + "description": "Unique task ID", + "example": "f3672790-4561-424b-8a7b-7b7df182b236" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/monitors", + "method": "getList", + "httpMethod": "get", + "tag": "monitors", + "typeScriptTag": "monitors", + "description": "Retrieve a robot's monitors", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/monitors", + "method": "createNew", + "httpMethod": "post", + "tag": "monitors", + "typeScriptTag": "monitors", + "description": "Create a new monitor on a robot", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "Monitor Products" + }, + { + "name": "inputParameters", + "schema": "object", + "required": true, + "description": "", + "example": { + "originUrl": "https://www.ycombinator.com/companies/airbnb", + "companies_skip": 0, + "companies_limit": 10 + } + }, + { + "name": "schedules", + "schema": "array", + "required": false, + "description": "", + "example": [ + { + "type": "FIXED_INTERVAL", + "everyMinutes": 60 + } + ] + }, + { + "name": "schedule", + "schema": "string", + "required": false, + "description": "", + "example": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR" + }, + { + "name": "notifyOnCapturedScreenshotChange", + "schema": "boolean", + "required": true, + "description": "", + "example": true + }, + { + "name": "notifyOnCapturedTextChange", + "schema": "boolean", + "required": true, + "description": "", + "example": true + }, + { + "name": "capturedScreenshotNotificationThreshold", + "schema": "number", + "required": true, + "description": "", + "example": 15 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/monitors/{monitorId}", + "method": "deleteRobotMonitor", + "httpMethod": "delete", + "tag": "monitors", + "typeScriptTag": "monitors", + "description": "Delete a robot's monitor", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "monitorId", + "schema": "string", + "required": true, + "description": "Unique monitor ID\n\nYou can find a monitor's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "e524ab69-4269-4d9d-b3d8-678112a10d29" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/monitors/{monitorId}", + "method": "getRobotMonitor", + "httpMethod": "get", + "tag": "monitors", + "typeScriptTag": "monitors", + "description": "Retrieve a robot's monitor", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "monitorId", + "schema": "string", + "required": true, + "description": "Unique monitor ID\n\nYou can find a monitor's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "e524ab69-4269-4d9d-b3d8-678112a10d29" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/monitors/{monitorId}", + "method": "updateRobotMonitor", + "httpMethod": "patch", + "tag": "monitors", + "typeScriptTag": "monitors", + "description": "Update a robot's monitor", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "monitorId", + "schema": "string", + "required": true, + "description": "Unique monitor ID\n\nYou can find a monitor's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "e524ab69-4269-4d9d-b3d8-678112a10d29" + }, + { + "name": "name", + "schema": "string", + "description": "", + "example": "Monitor Products" + }, + { + "name": "status", + "schema": "string", + "description": "", + "example": "active" + }, + { + "name": "inputParameters", + "schema": "object", + "description": "", + "example": { + "originUrl": "https://www.ycombinator.com/companies/airbnb", + "companies_skip": 0, + "companies_limit": 10 + } + }, + { + "name": "schedules", + "schema": "array", + "description": "", + "example": [ + { + "type": "FIXED_INTERVAL", + "everyMinutes": 60 + } + ] + }, + { + "name": "schedule", + "schema": "string", + "description": "", + "example": "FREQ=HOURLY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR" + }, + { + "name": "notifyOnCapturedScreenshotChange", + "schema": "boolean", + "description": "", + "example": true + }, + { + "name": "notifyOnCapturedTextChange", + "schema": "boolean", + "description": "", + "example": true + }, + { + "name": "capturedScreenshotNotificationThreshold", + "schema": "number", + "description": "", + "example": 15 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/bulk-runs", + "method": "getList", + "httpMethod": "get", + "tag": "bulk runs", + "typeScriptTag": "bulkRuns", + "description": "Retrieve a robot's bulk runs list", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Page number", + "example": 1 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/bulk-runs", + "method": "executeTasks", + "httpMethod": "post", + "tag": "bulk runs", + "typeScriptTag": "bulkRuns", + "description": "Bulk run tasks", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "title", + "schema": "string", + "required": false, + "description": "", + "example": "Bulk Run Title" + }, + { + "name": "inputParameters", + "schema": "array", + "required": true, + "description": "", + "example": [ + { + "originUrl": "https://www.ycombinator.com/companies/airbnb", + "companies_skip": 0, + "companies_limit": 10 + }, + { + "originUrl": "https://www.ycombinator.com/companies/coinbase", + "companies_skip": 0, + "companies_limit": 20 + } + ] + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + }, + { + "statusCode": "503", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/bulk-runs/{bulkRunId}", + "method": "getRobotBulkRun", + "httpMethod": "get", + "tag": "bulk runs", + "typeScriptTag": "bulkRuns", + "description": "Retrieve a robot's bulk run", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "bulkRunId", + "schema": "string", + "required": true, + "description": "Unique bulk run ID\n", + "example": "5aa4df52-25bb-48da-bf38-ce4f2bd98dd5" + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Page number", + "example": 1 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/webhooks", + "method": "getList", + "httpMethod": "get", + "tag": "webhooks", + "typeScriptTag": "webhooks", + "description": "Retrieve a robot's webhooks", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/webhooks", + "method": "createNewOnRobot", + "httpMethod": "post", + "tag": "webhooks", + "typeScriptTag": "webhooks", + "description": "Create a new webhook on a robot", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "hookUrl", + "schema": "string", + "required": true, + "description": "", + "example": "https://example.com/v2/webhooks/callback/events" + }, + { + "name": "eventType", + "schema": "string", + "required": true, + "description": "", + "example": "taskFinished" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/robots/{robotId}/webhooks/{webhookId}", + "method": "deleteRobotWebhook", + "httpMethod": "delete", + "tag": "webhooks", + "typeScriptTag": "webhooks", + "description": "Delete a robot's webhook", + "parameters": [ + { + "name": "authorization", + "schema": "string", + "required": true, + "description": "You can generate a new API key on [your dashboard](https://dashboard.browse.ai/api) if you do not have one.\n", + "example": "Bearer YOUR_SECRET_API_KEY" + }, + { + "name": "robotId", + "schema": "string", + "required": true, + "description": "Unique robot ID\n\nYou can find a robot's ID by opening it on the dashboard and copying its ID in the browser address bar.\n", + "example": "c3689adb-50aa-44af-b265-a7e0d4e5846e" + }, + { + "name": "webhookId", + "schema": "string", + "required": true, + "description": "Unique webhookId ID\n", + "example": "6d7f1218-43fb-4735-ac71-21e81b1ab23e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + } + ], + "repositoryDescription": "We're creating the easiest way to scrape and monitor any website with no code. Our mission is to give every individual and business equal opportunity to benefit from information on the internet. Browse AI's {language} SDK generated by Konfig (https://konfigthis.com/).", + "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/browse-ai/logo.png", + "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/browse-ai/openapi.yaml", + "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/browse-ai/openapi.yaml", + "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/browse-ai/imagePreview.png", + "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/browse-ai/favicon.png", + "clientNameCamelCase": "browseAi", + "lastUpdated": "2024-03-29T20:52:35.791Z", + "typescriptSdkUsageCode": "import { BrowseAi } from 'browse-ai-typescript-sdk';\n\nconst browseAi = new BrowseAi()", + "typescriptSdkFirstRequestCode": "// Endpoint for checking the status of Browse AI infrastructure\nconst checkInfrastructureStatusResponse = browseAi.system.checkInfrastructureStatus()", + "fixedSpecFileName": "browse-ai-fixed-spec.yaml" +} \ No newline at end of file diff --git a/sdks/db/published/from-custom-request_chatkitty.com.json b/sdks/db/published/from-custom-request_chatkitty.com.json new file mode 100644 index 0000000000..14408a552d --- /dev/null +++ b/sdks/db/published/from-custom-request_chatkitty.com.json @@ -0,0 +1,3408 @@ +{ + "securitySchemes": { + "password_reset_token_authorization": { + "type": "apiKey", + "name": "X-Token", + "in": "header" + }, + "application_authorization": { + "type": "oauth2", + "flows": { + "clientCredentials": { + "tokenUrl": "https://authorization.chatkitty.com/oauth/token", + "refreshUrl": "https://authorization.chatkitty.com/oauth/token", + "scopes": { + "create:*": "Create application resources", + "read:*": "Read application resources", + "update:*": "Update application resources", + "delete:*": "Delete application resources" + } + } + } + } + }, + "apiBaseUrl": "https://api.chatkitty.com", + "apiVersion": "2.57.0", + "apiDescription": "OpenAPI specification (OAS) for the ChatKitty Platform API.\nSee the Interactive Docs to try ChatKitty API methods without writing code,\nand get the complete schema of resources exposed by the API.", + "apiTitle": "ChatKitty Platform API", + "endpoints": 48, + "sdkMethods": 68, + "schemas": 125, + "parameters": 173, + "contactUrl": "mailto:support@chatkitty.com", + "originalCustomRequest": { + "type": "GET", + "url": "https://api.chatkitty.com/docs/v1" + }, + "customRequestSpecFilename": "chatkitty.com.yaml", + "difficultyScore": 169.75, + "difficulty": "Medium", + "company": "ChatKitty", + "sdkName": "chat-kitty-{language}-sdk", + "clientName": "ChatKitty", + "metaDescription": "ChatKitty gives you the tools to build real-time chat for web and mobile apps, complete with advanced features like moderation, offline messaging and analytics.", + "apiStatusUrls": "inherit", + "homepage": "chatkitty.com", + "developerDocumentation": "chatkitty.com/docs/api/reference", + "categories": [ + "communications_software", + "messaging", + "chat_platforms", + "chat_sdks" + ], + "category": "Team Chat", + "methods": [ + { + "url": "/v1/analytics/messages", + "method": "exportMessageAnalyticsData", + "httpMethod": "post", + "tag": "analytics", + "typeScriptTag": "analytics", + "description": "Export message analytics", + "parameters": [], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/analytics/users", + "method": "exportUserAnalyticsData", + "httpMethod": "post", + "tag": "analytics", + "typeScriptTag": "analytics", + "description": "Export user analytics", + "parameters": [], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/application", + "method": "getAuthenticated", + "httpMethod": "get", + "tag": "application", + "typeScriptTag": "application", + "description": "Retrieve the authenticated application", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/application/settings", + "method": "getSettings", + "httpMethod": "get", + "tag": "application", + "typeScriptTag": "application", + "description": "Retrieve the authenticated application settings", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/application/settings", + "method": "updateSettings", + "httpMethod": "put", + "tag": "application", + "typeScriptTag": "application", + "description": "Update the authenticated application settings", + "parameters": [ + { + "name": "guest_users", + "schema": "string", + "required": true, + "description": "", + "example": "GUEST_USERS" + }, + { + "name": "user_created_channels", + "schema": "string", + "required": true, + "description": "", + "example": "USER_CREATED_CHANNELS" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels", + "method": "list", + "httpMethod": "get", + "tag": "channels", + "typeScriptTag": "channels", + "description": "List channels", + "parameters": [ + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + }, + { + "name": "type", + "schema": "string", + "required": false, + "description": "Filters by channel type" + }, + { + "name": "members", + "schema": "array", + "required": false, + "description": "Filters by channel members using their usernames" + }, + { + "name": "startTime", + "schema": "string", + "required": false, + "description": "Filters for channels created within a time range: start time" + }, + { + "name": "endTime", + "schema": "string", + "required": false, + "description": "Filters for channels created within a time range: end time" + }, + { + "name": "properties", + "schema": "string", + "required": false, + "description": "Filters by channel custom properties" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels", + "method": "createChannel", + "httpMethod": "post", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Create a channel", + "parameters": [ + { + "name": "type", + "schema": "string", + "required": true, + "description": "", + "example": "TYPE" + }, + { + "name": "creator", + "schema": "object", + "required": false, + "description": "", + "example": { + "username": "jane@chatkitty.com" + } + }, + { + "name": "members", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "properties", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}", + "method": "deleteById", + "httpMethod": "delete", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Delete a channel", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}", + "method": "getById", + "httpMethod": "get", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Retrieve a channel", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}", + "method": "updateProperties", + "httpMethod": "patch", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Update a channel", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/events", + "method": "sendEvent", + "httpMethod": "post", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Send a channel event", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "type", + "schema": "string", + "required": true, + "description": "", + "example": "TYPE" + }, + { + "name": "properties", + "schema": "object", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/invites", + "method": "listInvites", + "httpMethod": "get", + "tag": "channels", + "typeScriptTag": "channels", + "description": "List channel invites", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/invites", + "method": "sendInvite", + "httpMethod": "post", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Send a channel invite", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "user", + "schema": "object", + "required": true, + "description": "", + "example": { + "username": "jane@chatkitty.com" + } + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/keystrokes", + "method": "sendKeystrokes", + "httpMethod": "post", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Send channel keystrokes", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "keys", + "schema": "string", + "required": true, + "description": "", + "example": "KEYS" + }, + { + "name": "user", + "schema": "object", + "required": true, + "description": "", + "example": { + "username": "jane@chatkitty.com" + } + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/members", + "method": "listMembersPage", + "httpMethod": "get", + "tag": "channels", + "typeScriptTag": "channels", + "description": "List a channel's members", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/members", + "method": "addMember", + "httpMethod": "post", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Add a channel member", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "username", + "schema": "string", + "description": "", + "example": "jane@chatkitty.com" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/members/{user_id}", + "method": "removeMember", + "httpMethod": "delete", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Remove a channel member", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "userId", + "schema": "integer", + "required": true, + "description": "User ID of member to be removed", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/memberships", + "method": "listMembershipsPage", + "httpMethod": "get", + "tag": "channels", + "typeScriptTag": "channels", + "description": "List channel memberships", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/messages", + "method": "listMessagesPage", + "httpMethod": "get", + "tag": "channels", + "typeScriptTag": "channels", + "description": "List channel messages", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned" + }, + { + "name": "start", + "schema": "integer", + "required": false, + "description": "Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages" + }, + { + "name": "next", + "schema": "integer", + "required": false, + "description": "Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages" + }, + { + "name": "relation", + "schema": "string", + "required": false, + "description": "Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages" + }, + { + "name": "username", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "query", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/messages", + "method": "sendChannelMessage", + "httpMethod": "post", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Send a channel message", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "type", + "schema": "string", + "required": true, + "description": "", + "example": "TYPE" + }, + { + "name": "group_tag", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "properties", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "user", + "schema": "object", + "required": false, + "description": "", + "example": { + "username": "jane@chatkitty.com" + } + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/moderators", + "method": "listModeratorsPage", + "httpMethod": "get", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Lists a channel's moderators", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/moderators", + "method": "addModerator", + "httpMethod": "post", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Add a channel moderator", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "username", + "schema": "string", + "description": "", + "example": "jane@chatkitty.com" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/moderators/{user_id}", + "method": "removeModerator", + "httpMethod": "delete", + "tag": "channels", + "typeScriptTag": "channels", + "description": "Remove a channel moderator", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "userId", + "schema": "integer", + "required": true, + "description": "User ID of moderator to be removed", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/participants", + "method": "listParticipantsPage", + "httpMethod": "get", + "tag": "channels", + "typeScriptTag": "channels", + "description": "List channel participants", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/channels/{id}/reported-messages", + "method": "listReportedMessagesPage", + "httpMethod": "get", + "tag": "channels", + "typeScriptTag": "channels", + "description": "List channel reported messages", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Channel ID", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/chat-sessions", + "method": "listPage", + "httpMethod": "get", + "tag": "chat-sessions", + "typeScriptTag": "chatSessions", + "description": "List chat sessions", + "parameters": [ + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + }, + { + "name": "state", + "schema": "string", + "required": false, + "description": "Filters by state" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/function-versions/{id}", + "method": "getById", + "httpMethod": "get", + "tag": "function-versions", + "typeScriptTag": "functionVersions", + "description": "Retrieve a chat function version", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Chat function version ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/functions/{id}", + "method": "getById", + "httpMethod": "get", + "tag": "functions", + "typeScriptTag": "functions", + "description": "Retrieve a chat function", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Chat function ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/functions/{id}/current-version", + "method": "getCurrentVersion", + "httpMethod": "get", + "tag": "functions", + "typeScriptTag": "functions", + "description": "Retrieve chat function current version", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Chat function ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/functions/{id}/invocations", + "method": "listInvocationsPage", + "httpMethod": "get", + "tag": "functions", + "typeScriptTag": "functions", + "description": "List chat function invocations", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Chat function ID", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/functions/{id}/versions", + "method": "listVersionsPage", + "httpMethod": "get", + "tag": "functions", + "typeScriptTag": "functions", + "description": "List chat function versions", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Chat function ID", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/functions/{id}/versions", + "method": "createFunctionVersion", + "httpMethod": "post", + "tag": "functions", + "typeScriptTag": "functions", + "description": "Create a chat function version", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Chat function ID", + "example": 0 + }, + { + "name": "handler_script", + "schema": "string", + "required": true, + "description": "", + "example": "HANDLER_SCRIPT" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/imports/channels", + "method": "batchChannels", + "httpMethod": "post", + "tag": "imports", + "typeScriptTag": "imports", + "description": "Import channels", + "parameters": [ + { + "name": "file", + "schema": "string", + "required": true, + "description": "", + "example": "FILE" + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/imports/channels/{id}/members", + "method": "channelMembersBatch", + "httpMethod": "post", + "tag": "imports", + "typeScriptTag": "imports", + "description": "Import channel members", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "file", + "schema": "string", + "required": true, + "description": "", + "example": "FILE" + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/imports/messages", + "method": "batchMessagesFromJson", + "httpMethod": "post", + "tag": "imports", + "typeScriptTag": "imports", + "description": "Import messages", + "parameters": [ + { + "name": "file", + "schema": "string", + "required": true, + "description": "", + "example": "FILE" + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/imports/users", + "method": "jsonUsersBatch", + "httpMethod": "post", + "tag": "imports", + "typeScriptTag": "imports", + "description": "Import users", + "parameters": [ + { + "name": "file", + "schema": "string", + "required": true, + "description": "", + "example": "FILE" + } + ], + "responses": [ + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/jobs", + "method": "listJobsPage", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "List jobs", + "parameters": [ + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + }, + { + "name": "running", + "schema": "boolean", + "required": false, + "description": "Filters for jobs currently running" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/jobs/{id}", + "method": "getJobById", + "httpMethod": "get", + "tag": "jobs", + "typeScriptTag": "jobs", + "description": "Retrieve a job", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Job ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/messages", + "method": "deleteAll", + "httpMethod": "delete", + "tag": "messages", + "typeScriptTag": "messages", + "description": "Delete messages", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/messages", + "method": "listPage", + "httpMethod": "get", + "tag": "messages", + "typeScriptTag": "messages", + "description": "List messages", + "parameters": [ + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned" + }, + { + "name": "start", + "schema": "integer", + "required": false, + "description": "Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages" + }, + { + "name": "next", + "schema": "integer", + "required": false, + "description": "Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages" + }, + { + "name": "relation", + "schema": "string", + "required": false, + "description": "Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages" + }, + { + "name": "username", + "schema": "string", + "required": false, + "description": "Filters messages by a sender's username" + }, + { + "name": "query", + "schema": "string", + "required": false, + "description": "Filters text messages by text contained in the message body" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/messages/{id}", + "method": "removeById", + "httpMethod": "delete", + "tag": "messages", + "typeScriptTag": "messages", + "description": "Delete a message", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Message ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/messages/{id}", + "method": "getById", + "httpMethod": "get", + "tag": "messages", + "typeScriptTag": "messages", + "description": "Retrieve a message", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Message ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/messages/{id}", + "method": "updateProperties", + "httpMethod": "patch", + "tag": "messages", + "typeScriptTag": "messages", + "description": "Update a message", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Message ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/messages/{id}/read-receipts", + "method": "listReadReceipts", + "httpMethod": "get", + "tag": "messages", + "typeScriptTag": "messages", + "description": "List message read receipts", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/runtimes/nodejs", + "method": "getNodejsChatRuntime", + "httpMethod": "get", + "tag": "runtime", + "typeScriptTag": "runtime", + "description": "Retrieve NodeJS chat runtime", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/runtimes/nodejs/dependencies", + "method": "updateNodejsChatDependencies", + "httpMethod": "put", + "tag": "runtime", + "typeScriptTag": "runtime", + "description": "Update NodeJS chat runtime NPM dependencies", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/runtimes/nodejs/environment-variables", + "method": "updateNodejsChatEnvironmentVariables", + "httpMethod": "put", + "tag": "runtime", + "typeScriptTag": "runtime", + "description": "Update NodeJS chat runtime environment variables", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/runtimes/nodejs/functions", + "method": "listNodejsChatFunctions", + "httpMethod": "get", + "tag": "runtime", + "typeScriptTag": "runtime", + "description": "List NodeJS chat runtime functions", + "parameters": [ + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/runtimes/nodejs/functions", + "method": "createNodejsChatFunction", + "httpMethod": "post", + "tag": "runtime", + "typeScriptTag": "runtime", + "description": "Create a NodeJS chat runtime function", + "parameters": [ + { + "name": "description", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "type", + "schema": "string", + "required": true, + "description": "", + "example": "TYPE" + }, + { + "name": "initialize_asynchronously", + "schema": "boolean", + "required": true, + "description": "", + "example": true + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/runtimes/nodejs/initialization-script", + "method": "updateNodejsChatInitializationScript", + "httpMethod": "put", + "tag": "runtime", + "typeScriptTag": "runtime", + "description": "Update NodeJS chat runtime initialization script", + "parameters": [ + { + "name": "script", + "schema": "string", + "required": true, + "description": "", + "example": "SCRIPT" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/threads/{id}", + "method": "getById", + "httpMethod": "get", + "tag": "threads", + "typeScriptTag": "threads", + "description": "Retrieve a thread", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "Reply thread ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/threads/{id}/keystrokes", + "method": "sendKeystrokes", + "httpMethod": "post", + "tag": "threads", + "typeScriptTag": "threads", + "description": "Send thread keystrokes", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "keys", + "schema": "string", + "required": true, + "description": "", + "example": "KEYS" + }, + { + "name": "user", + "schema": "object", + "required": true, + "description": "", + "example": { + "username": "jane@chatkitty.com" + } + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/threads/{id}/messages", + "method": "listThreadMessages", + "httpMethod": "get", + "tag": "threads", + "typeScriptTag": "threads", + "description": "List reply thread messages", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned" + }, + { + "name": "start", + "schema": "integer", + "required": false, + "description": "Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages" + }, + { + "name": "next", + "schema": "integer", + "required": false, + "description": "Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages" + }, + { + "name": "relation", + "schema": "string", + "required": false, + "description": "Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/threads/{id}/messages", + "method": "sendReplyMessage", + "httpMethod": "post", + "tag": "threads", + "typeScriptTag": "threads", + "description": "Send a reply thread message", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "type", + "schema": "string", + "required": true, + "description": "", + "example": "TYPE" + }, + { + "name": "group_tag", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "properties", + "schema": "object", + "required": false, + "description": "" + }, + { + "name": "user", + "schema": "object", + "required": false, + "description": "", + "example": { + "username": "jane@chatkitty.com" + } + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/user-sessions", + "method": "listUserSessions", + "httpMethod": "get", + "tag": "user-sessions", + "typeScriptTag": "userSessions", + "description": "List user sessions", + "parameters": [ + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + }, + { + "name": "state", + "schema": "string", + "required": false, + "description": "Filters by state" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users", + "method": "getPage", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "List users", + "parameters": [ + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + }, + { + "name": "name", + "schema": "string", + "required": false, + "description": "Filters by username" + }, + { + "name": "properties", + "schema": "string", + "required": false, + "description": "Filters by user custom properties" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users", + "method": "checkExists", + "httpMethod": "head", + "tag": "users", + "typeScriptTag": "users", + "description": "Check a user exists", + "parameters": [ + { + "name": "name", + "schema": "string", + "required": true, + "description": "Username of the user", + "example": "NAME" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Empty object" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users", + "method": "createUser", + "httpMethod": "post", + "tag": "users", + "typeScriptTag": "users", + "description": "Create a user", + "parameters": [ + { + "name": "display_name", + "schema": "string", + "required": true, + "description": "", + "example": "DISPLAY_NAME" + }, + { + "name": "is_guest", + "schema": "boolean", + "required": true, + "description": "", + "example": true + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "properties", + "schema": "object", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users/{id}", + "method": "removeUser", + "httpMethod": "delete", + "tag": "users", + "typeScriptTag": "users", + "description": "Delete a user", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "User ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users/{id}", + "method": "getById", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "Retrieve a user", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "User ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users/{id}", + "method": "updateUserById", + "httpMethod": "patch", + "tag": "users", + "typeScriptTag": "users", + "description": "Update a user", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "User ID", + "example": 0 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users/{id}/channels", + "method": "listChannelsPage", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "List a user's channels", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "User ID", + "example": 0 + }, + { + "name": "page", + "schema": "integer", + "required": false, + "description": "Zero-based page index (0..N)", + "default": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned", + "default": 25 + }, + { + "name": "sort", + "schema": "array", + "required": false, + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users/{id}/display-picture", + "method": "updateDisplayPicture", + "httpMethod": "post", + "tag": "users", + "typeScriptTag": "users", + "description": "Update a user's display picture", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "User ID", + "example": 0 + }, + { + "name": "content_type", + "schema": "string", + "required": true, + "description": "", + "example": "CONTENT_TYPE" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "NAME" + }, + { + "name": "size", + "schema": "integer", + "required": true, + "description": "", + "example": 0 + }, + { + "name": "url", + "schema": "string", + "required": true, + "description": "", + "example": "URL" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users/{id}/messages", + "method": "listMessagesPage", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "List a user's messages", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "User ID", + "example": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned" + }, + { + "name": "start", + "schema": "integer", + "required": false, + "description": "Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages" + }, + { + "name": "next", + "schema": "integer", + "required": false, + "description": "Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages" + }, + { + "name": "relation", + "schema": "string", + "required": false, + "description": "Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages" + }, + { + "name": "unread", + "schema": "boolean", + "required": false, + "description": "Filters by returning unread messages" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users/{id}/notifications", + "method": "listNotificationsPage", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "List a user's notifications", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "User ID", + "example": 0 + }, + { + "name": "size", + "schema": "integer", + "required": false, + "description": "The size of the page to be returned" + }, + { + "name": "start", + "schema": "integer", + "required": false, + "description": "Start cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages" + }, + { + "name": "next", + "schema": "integer", + "required": false, + "description": "Next page cursor value. Do not set manually. Provided by the Platform API pagination engine to fetch subsequent pages" + }, + { + "name": "relation", + "schema": "string", + "required": false, + "description": "Page cursor relation. Do not set manually. Provided by the Platform API pagination engine to fetch previous or next pages" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users/{id}/secrets/{name}", + "method": "removeSecretValue", + "httpMethod": "delete", + "tag": "users", + "typeScriptTag": "users", + "description": "Remove a user secret", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "User ID", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "The secret's name", + "example": "NAME" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users/{id}/secrets/{name}", + "method": "getSecret", + "httpMethod": "get", + "tag": "users", + "typeScriptTag": "users", + "description": "Retrieve a user secret", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "User ID", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "The secret's name", + "example": "NAME" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/v1/users/{id}/secrets/{name}", + "method": "setUserSecret", + "httpMethod": "put", + "tag": "users", + "typeScriptTag": "users", + "description": "Set a user secret", + "parameters": [ + { + "name": "id", + "schema": "integer", + "required": true, + "description": "User ID", + "example": 0 + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "The secret's name", + "example": "NAME" + }, + { + "name": "secret", + "schema": "object", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + } + ], + "repositoryDescription": "ChatKitty gives you the tools to build real-time chat for web and mobile apps, complete with advanced features like moderation, offline messaging and analytics. ChatKitty's {language} SDK generated by Konfig (https://konfigthis.com/).", + "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/chatkitty/logo.png", + "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/chatkitty/openapi.yaml", + "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/chatkitty/openapi.yaml", + "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/chatkitty/imagePreview.png", + "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/chatkitty/favicon.png", + "clientNameCamelCase": "chatKitty", + "lastUpdated": "2024-03-29T20:55:24.918Z", + "typescriptSdkUsageCode": "import { ChatKitty } from 'chat-kitty-typescript-sdk';\n\nconst chatKitty = new ChatKitty({\n passwordResetTokenAuthorization: \"X_TOKEN\",\n clientId: \"CLIENT_ID\",\n clientSecret: \"CLIENT_SECRET\"\n})", + "typescriptSdkFirstRequestCode": "// Export message analytics\nconst exportMessageAnalyticsDataResponse = chatKitty.analytics.exportMessageAnalyticsData()", + "fixedSpecFileName": "chat-kitty-fixed-spec.yaml" +} \ No newline at end of file diff --git a/sdks/db/published/from-custom-request_telintel.com_SmsGateway.json b/sdks/db/published/from-custom-request_telintel.com_SmsGateway.json index c67857b877..fbe540a402 100644 --- a/sdks/db/published/from-custom-request_telintel.com_SmsGateway.json +++ b/sdks/db/published/from-custom-request_telintel.com_SmsGateway.json @@ -20,7 +20,7 @@ "serviceName": "SMS Gateway", "sdkName": "telintel-sms-gateway-{language}-sdk", "clientName": "TelintelSmsGateway", - "metaDescription": "With +20 years of experience in the market, Telintel makes the experience of communicating with your clients easier. We are leaders on technological solutions that makes the interaction with any user simpler no matter neither the business size nor the industrial sector at hand. Our products based on SMS and VoIP (SMS 2-Way, Landing Pages, RoboCall, Text2Speech, IVR, SMS2Call & Click2Call) allow us to offer a vast service spectrum for any need including reminders, alerts, promotions and client loyalty, along with commercial presence on any the continents around the world.\n\nOur Go4Clients and TestMySMS platforms will allow you to enhance your user experience, centralize operational processes and improve your response times with the best service quality and 24/7 technical support, 365 days a year. These are smart solutions that will allow you to have infinite possibilities at your hands reach.\n\nWe count on our strategic allies and important customers satisfied with our services. Be one of them today and contact us at social@telintel.net or give us a call at +1 786-871-6540.\n\nCon más de 20 años de experiencia en el mercado, Telintel hace más sencilla la manera de comunicarse con sus clientes. Somos líderes en soluciones tecnológicas que hacen más simple la interacción con cualquier usuario sin importar el tamaño de su organización o la industria a la que se dedique. Nuestros productos basados en SMS y VoIP (SMS 2way, Landing Page, Robocall, Text2Speech, IVR, SMS2Call y Click2Call) nos permiten ofrecer una amplia gama de servicios para cualquier necesidad incluyendo recordatorios, alertas, promociones y fidelización de clientes en todo el mundo, con presencia comercial en los 5 continentes. \n\nNuestras plataformas Go4Clients y TestmySMS le permitirán mejorar la experiencia de sus usuarios con el mejor servicio y soporte 24/7 los 365 días del año, centralizar procesos operativos y mejorar sus tiempo de respuesta.", + "metaDescription": "With +20 years of experience in the market, Telintel makes the experience of communicating with your clients easier. We are leaders on technological solutions that makes the interaction with any user simpler no matter neither the business size nor the industrial sector at hand. Our products based on SMS and VoIP (SMS 2-Way, Landing Pages, RoboCall, Text2Speech, IVR, SMS2Call & Click2Call) allow us to offer a vast service spectrum for any need including reminders, alerts, promotions and client loyalty, along with commercial presence on any the continents around the world.\n\nOur Go4Clients and TestMySMS platforms will allow you to enhance your user experience, centralize operational processes and improve your response times with the best service quality and 24/7 technical support, 365 days a year. These are smart solutions that will allow you to have infinite possibilities at your hands reach.\n\nWe count on our strategic allies and important customers satisfied with our services. Be one of them today and contact us at social@telintel.net or give us a call at +1 786-871-6540.\n\nCon más de 20 años de experiencia en el mercado, Telintel hace más sencilla la manera de comunicarse con sus clientes. Somos líderes en soluciones tecnológicas que hacen más simple la interacción con cualquier usuario sin importar el tamaño de su organización o la industria a la que se dedique. Nuestros productos basados en SMS y VoIP (SMS 2way, Landing Page, Robocall, Text2Speech, IVR, SMS2Call y Click2Call) nos permiten ofrecer una amplia gama de servicios para cualquier necesidad incluyendo recordatorios, alertas, promociones y fidelización de clientes en todo el mundo, con presencia comercial en los 5 continentes.\n\nNuestras plataformas Go4Clients y TestmySMS le permitirán mejorar la experiencia de sus usuarios con el mejor servicio y soporte 24/7 los 365 días del año, centralizar procesos operativos y mejorar sus tiempo de respuesta.", "apiStatusUrls": "inherit", "homepage": "telintel.com", "developerDocumentation": "smsapi.telintel.com", @@ -287,14 +287,14 @@ ] } ], - "repositoryDescription": "Telintel simplifies client communication with 20+ years of experience. Leaders in SMS and VoIP solutions for all business sizes and industries. Enhance user experience, centralize operations, and improve response times with smart solutions. Contact us for 24/7 support.", + "repositoryDescription": "Telintel simplifies client communication with 20+ years of tech leadership. SMS & VoIP solutions for reminders, alerts, promotions. Go4Clients & TestMySMS enhance user experience with 24/7 support. Reach us at social@telintel.net or +1 786-871-6540. Telintel's {language} SDK for SMS Gateway API generated by Konfig (https://konfigthis.com/).", "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/telintel/sms-gateway/logo.png", "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/telintel/sms-gateway/openapi.yaml", "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/telintel/sms-gateway/openapi.yaml", "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/telintel/sms-gateway/imagePreview.jpg", "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/telintel/sms-gateway/favicon.png", "clientNameCamelCase": "telintelSmsGateway", - "lastUpdated": "2024-03-29T20:34:56.573Z", + "lastUpdated": "2024-03-29T20:45:46.288Z", "typescriptSdkUsageCode": "import { TelintelSmsGateway } from 'telintel-sms-gateway-typescript-sdk';\n\nconst telintelSmsGateway = new TelintelSmsGateway()", "typescriptSdkFirstRequestCode": "// The request will contain a JSON object in the body of the request.\nconst messageDeliveryResponse = telintelSmsGateway.sendSingleSms.messageDelivery({\n username: \"testhttp\"\n password: \"passthttp\"\n destinationNumber: \"573005555555\"\n message: \"testMessage\"\n from: \"573121112222\"\n serviceType: \"serviceTypeTest\"\n datacoding: 1\n})", "fixedSpecFileName": "telintel-sms-gateway-fixed-spec.yaml" diff --git a/sdks/db/published/from-custom-request_uploadthing.com.json b/sdks/db/published/from-custom-request_uploadthing.com.json index 6036a7ac75..d316e4a4a9 100644 --- a/sdks/db/published/from-custom-request_uploadthing.com.json +++ b/sdks/db/published/from-custom-request_uploadthing.com.json @@ -19,7 +19,7 @@ }, "customRequestSpecFilename": "uploadthing.com.yaml", "difficultyScore": 36, - "difficulty": "Easy", + "difficulty": "Very Easy", "company": "UploadThing", "sdkName": "upload-thing-{language}-sdk", "clientName": "UploadThing", @@ -850,7 +850,7 @@ "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/uploadthing/imagePreview.png", "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/uploadthing/favicon.png", "clientNameCamelCase": "uploadThing", - "lastUpdated": "2024-03-24T21:41:22.682Z", + "lastUpdated": "2024-03-29T20:52:35.791Z", "typescriptSdkUsageCode": "import { UploadThing } from 'upload-thing-typescript-sdk';\n\nconst uploadThing = new UploadThing({\n apiKeyAuth: \"X_UPLOADTHING_API_KEY\"\n})", "typescriptSdkFirstRequestCode": "// Poll for server callback data. This is used to retrieve the data returned from `onUploadComplete` callback.\nconst getDataResponse = uploadThing.serverCallback.getData({\n authorization: \"AUTHORIZATION\"\n})", "fixedSpecFileName": "upload-thing-fixed-spec.yaml" diff --git a/sdks/db/spec-data/apideck.com_ecosystem_0.0.6.json b/sdks/db/spec-data/apideck.com_ecosystem_0.0.6.json index e298edbe88..ae3d40e473 100644 --- a/sdks/db/spec-data/apideck.com_ecosystem_0.0.6.json +++ b/sdks/db/spec-data/apideck.com_ecosystem_0.0.6.json @@ -19,5 +19,5 @@ "contactUrl": "https://developers.apideck.com", "contactEmail": "hello@apideck.com", "difficultyScore": 36, - "difficulty": "Easy" + "difficulty": "Very Easy" } \ No newline at end of file diff --git a/sdks/db/spec-data/from-custom-request_askmiso.com.json b/sdks/db/spec-data/from-custom-request_askmiso.com.json new file mode 100644 index 0000000000..7bacfdc3c7 --- /dev/null +++ b/sdks/db/spec-data/from-custom-request_askmiso.com.json @@ -0,0 +1,31 @@ +{ + "securitySchemes": { + "Secret API Key": { + "type": "apiKey", + "description": "\nYour secret API key is used to access every Miso API endpoint. You should secure this key and only use it on a backend \nserver. Never leave this key in your client-side JavaScript code. If the private key is compromised, you can revoke it \nin [Dojo](https://dojo.askmiso.com/docs/api-browser) and get a new one.\n\nSpecify your secret key in the `api_key` query parameter. For example:\n```\nPOST /v1/users?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17\n```\n\n", + "in": "query", + "name": "api_key" + }, + "Publishable API Key": { + "type": "apiKey", + "description": "\nYour publishable API key is used to call Miso's APIs from your front-end code. It can be used to stream interactions from the browser using Miso's Interactions Upload API or to access read-only search and recommendation results for a given user. When using the publishable API key, the requested user_id will need to be hashed to maintain the necessary security compliance. \n\nSpecify your publishable key in the `api_key` query parameter. For example:\n```\nPOST /v1/interactions?api_key=039c501ac8dfcac91c6f05601cee876e1cc07e17\n```\n", + "in": "query", + "name": "api_key" + } + }, + "apiBaseUrl": "https://api.askmiso.com", + "apiVersion": "1.1.4", + "apiDescription": "\n# Overview\nMiso’s approach to personalization is to train machine learning Engines on three core data sets:\n\n1. Your site’s log of historical and real-time interactions,\n2. Your catalog of products and content, and\n3. Your users. Miso provides the output of its Engines to you, so you can build search and recommendation\nexperiences that are personalized down to the individual level (n=1 personalization).\n\nTo see how Miso works and explore the power of its Engines, we recommend following\n[this tutorial](https://docs.askmiso.com/) to get\nstarted with our Playground data. Integrating your site or application with Miso happens in three basic steps:\n\n1. Upload your data\n2. Train your Engines\n3. Build search and recommendation experiences with the output of your Engines.\n\n\nMiso provides two main integration points. The first is your [Dojo Dashboard](https://dojo.askmiso.com/),\nwhich is used to set up your Engines with the conversions you want to optimize and your training schedule.\nDojo is also a great way to get familiar with Miso by manually uploading data and exploring the output of\nMiso’s Engines. In Dojo’s Sandboxes, you can tweak your Engine settings and see visual examples of Miso’s search\nand recommendations running on your live data.\n\nThe second integration point is Miso’s API, which lets you automatically manage your data in Miso and build\nexperiences that leverage the output of Miso’s personalization Engines.\n\n\nMiso’s API is composed of two major groups of REST API endpoints: Data APIs and Engine APIs.\n\n### Data APIs\nData APIs collect input to Miso's personalization Engines. These APIs all support high-throughput\ndata ingestion through bulk insert, and satisfy GDPR and CCPA compliance by letting users delete their data\nfrom Miso. Subcategories of Data APIs are:\n\n* [Interaction APIs](https://api.askmiso.com), for managing your Interaction records. By uploading historical and real-time Interaction\nrecords, you tell Miso how users are engaging with the products and content on your site, and in turn, Miso’s\nEngines learn how to optimize your conversion funnels.\n* [Product / Content APIs](https://api.askmiso.com), for managing your Product / Content records. These records provide a deep semantic\nunderstanding of your catalog and keep Miso up to date about your offerings so it can make smart and timely\nsuggestions. The `product_id` is how Miso links Product / Content records to your Interaction records.\n* [User APIs](https://api.askmiso.com), for managing your User records. These records tell Miso about your site’s users and visitors,\nso Miso can build an understanding of user segmentation and behavior in relation to products and content.\nThe `user_id` is how Miso links User records to your Interaction records.\n\nAs a rule of thumb, we recommend batching up data to avoid timeout risks. For the Product / Content and User\nUpload APIs, we recommend limiting each API upload call to about 100 records at a time. For the Interaction\nUpload API, we recommend limiting your calls to around 10,000 records at a time.\n\n### Engine APIs\nEngine APIs provide the output of Miso's personalization Engines. We designed these APIs with a focus on low\nlatency and high availability. Most of these APIs' 95th percentile response time is under 75ms,\nand the services are replicated to at least three separate instances for high availability.\nThe types of Engine APIs are:\n\n* [Search APIs](https://api.askmiso.com), for getting Miso’s personalized search results for a user, with search-as-you-type and\nautocompletion.\n* [Recommendation APIs](https://api.askmiso.com), for retrieving Miso’s recommendations that match users with\nthe products, categories, and product attributes that are likely to drive conversions.\n\n# Authentication\n[View your API Keys in your Dojo Dashboard.](https://dojo.askmiso.com/docs/api-browser)\n\nThere are three environments in Miso:\n* **Playground**, a read-only tutorial environment with sample data.\n* **Development**, for staging, QA, and experimentation.\n* **Production**, where you run your live integration with Miso.\n\nAccess a Miso environment by passing in the corresponding API key in your API calls. There is one publishable\nkey and one secret key per environment.\n\nAPI Key can passed with query parameter `api_key`, or using the `X-API-KEY` header.\n", + "apiTitle": "Miso API", + "endpoints": 23, + "sdkMethods": 26, + "schemas": 134, + "parameters": 212, + "originalCustomRequest": { + "type": "GET", + "url": "https://api.askmiso.com/swagger.json" + }, + "customRequestSpecFilename": "askmiso.com.yaml", + "difficultyScore": 146, + "difficulty": "Medium" +} \ No newline at end of file diff --git a/sdks/db/spec-data/from-custom-request_baserow.io.json b/sdks/db/spec-data/from-custom-request_baserow.io.json new file mode 100644 index 0000000000..d12a7f10b1 --- /dev/null +++ b/sdks/db/spec-data/from-custom-request_baserow.io.json @@ -0,0 +1,31 @@ +{ + "securitySchemes": { + "Database token": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "Token your_token" + }, + "JWT": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT your_token" + } + }, + "apiBaseUrl": "api.baserow.io", + "apiVersion": "1.23.2", + "apiDescription": "For more information about our REST API, please visit [this page](https://baserow.io/docs/apis%2Frest-api).\n\nFor more information about our deprecation policy, please visit [this page](https://baserow.io/docs/apis%2Fdeprecations).", + "apiTitle": "Baserow API spec", + "endpoints": 211, + "sdkMethods": 299, + "schemas": 594, + "parameters": 914, + "contactUrl": "https://baserow.io/contact", + "originalCustomRequest": { + "type": "GET", + "url": "https://api.baserow.io/api/schema.json", + "apiBaseUrl": "api.baserow.io" + }, + "customRequestSpecFilename": "baserow.io.yaml", + "difficultyScore": 824.5, + "difficulty": "Very Hard" +} \ No newline at end of file diff --git a/sdks/db/spec-data/from-custom-request_browse.ai.json b/sdks/db/spec-data/from-custom-request_browse.ai.json new file mode 100644 index 0000000000..603a8dbc89 --- /dev/null +++ b/sdks/db/spec-data/from-custom-request_browse.ai.json @@ -0,0 +1,18 @@ +{ + "securitySchemes": {}, + "apiBaseUrl": "https://api.browse.ai/v2", + "apiVersion": "v2", + "apiDescription": "If you are still using the deprecated API v1 version, you can see its documentation [here](https://www.browse.ai/docs/api/v1).", + "apiTitle": "Browse AI API Documentation", + "endpoints": 13, + "sdkMethods": 19, + "schemas": 71, + "parameters": 71, + "originalCustomRequest": { + "type": "GET", + "url": "https://api.browse.ai/v2/openapi" + }, + "customRequestSpecFilename": "browse.ai.yaml", + "difficultyScore": 72.25, + "difficulty": "Easy" +} \ No newline at end of file diff --git a/sdks/db/spec-data/from-custom-request_chatkitty.com.json b/sdks/db/spec-data/from-custom-request_chatkitty.com.json new file mode 100644 index 0000000000..4ba4ffd779 --- /dev/null +++ b/sdks/db/spec-data/from-custom-request_chatkitty.com.json @@ -0,0 +1,40 @@ +{ + "securitySchemes": { + "password_reset_token_authorization": { + "type": "apiKey", + "name": "X-Token", + "in": "header" + }, + "application_authorization": { + "type": "oauth2", + "flows": { + "clientCredentials": { + "tokenUrl": "https://authorization.chatkitty.com/oauth/token", + "refreshUrl": "https://authorization.chatkitty.com/oauth/token", + "scopes": { + "create:*": "Create application resources", + "read:*": "Read application resources", + "update:*": "Update application resources", + "delete:*": "Delete application resources" + } + } + } + } + }, + "apiBaseUrl": "https://api.chatkitty.com", + "apiVersion": "2.57.0", + "apiDescription": "OpenAPI specification (OAS) for the ChatKitty Platform API.\nSee the Interactive Docs to try ChatKitty API methods without writing code,\nand get the complete schema of resources exposed by the API.", + "apiTitle": "ChatKitty Platform API", + "endpoints": 48, + "sdkMethods": 68, + "schemas": 117, + "parameters": 173, + "contactUrl": "mailto:support@chatkitty.com", + "originalCustomRequest": { + "type": "GET", + "url": "https://api.chatkitty.com/docs/v1" + }, + "customRequestSpecFilename": "chatkitty.com.yaml", + "difficultyScore": 169.75, + "difficulty": "Medium" +} \ No newline at end of file diff --git a/sdks/db/spec-data/from-custom-request_uploadthing.com.json b/sdks/db/spec-data/from-custom-request_uploadthing.com.json index c88e3b74cc..a20bf48257 100644 --- a/sdks/db/spec-data/from-custom-request_uploadthing.com.json +++ b/sdks/db/spec-data/from-custom-request_uploadthing.com.json @@ -19,5 +19,5 @@ }, "customRequestSpecFilename": "uploadthing.com.yaml", "difficultyScore": 36, - "difficulty": "Easy" + "difficulty": "Very Easy" } \ No newline at end of file diff --git a/sdks/db/spec-data/mandrillapp.com_1.0.json b/sdks/db/spec-data/mandrillapp.com_1.0.json index f098f89406..a4e632a78d 100644 --- a/sdks/db/spec-data/mandrillapp.com_1.0.json +++ b/sdks/db/spec-data/mandrillapp.com_1.0.json @@ -17,5 +17,5 @@ "schemas": 95, "parameters": 244, "difficultyScore": 198.5, - "difficulty": "Hard" + "difficulty": "Medium" } \ No newline at end of file diff --git a/sdks/db/spec-data/vatapi.com_1.json b/sdks/db/spec-data/vatapi.com_1.json index bbb7a7ae9f..b39c7655a2 100644 --- a/sdks/db/spec-data/vatapi.com_1.json +++ b/sdks/db/spec-data/vatapi.com_1.json @@ -23,5 +23,5 @@ "schemas": 22, "parameters": 57, "difficultyScore": 36.25, - "difficulty": "Easy" + "difficulty": "Very Easy" } \ No newline at end of file diff --git a/sdks/db/spec-data/vonage.com_vgis_1.0.1.json b/sdks/db/spec-data/vonage.com_vgis_1.0.1.json index 16884208ef..06d06b222e 100644 --- a/sdks/db/spec-data/vonage.com_vgis_1.0.1.json +++ b/sdks/db/spec-data/vonage.com_vgis_1.0.1.json @@ -16,5 +16,5 @@ "contactUrl": "https://integrate.vonage.com", "contactEmail": "gunifydevops@vonage.com", "difficultyScore": 36.25, - "difficulty": "Easy" + "difficulty": "Very Easy" } \ No newline at end of file diff --git a/sdks/db/spec-data/vtex.local_Orders-API-PII-version_1.0.json b/sdks/db/spec-data/vtex.local_Orders-API-PII-version_1.0.json index ad84c2913c..f0fcbbf350 100644 --- a/sdks/db/spec-data/vtex.local_Orders-API-PII-version_1.0.json +++ b/sdks/db/spec-data/vtex.local_Orders-API-PII-version_1.0.json @@ -30,5 +30,5 @@ "schemas": 41, "parameters": 38, "difficultyScore": 36, - "difficulty": "Easy" + "difficulty": "Very Easy" } \ No newline at end of file diff --git a/sdks/publish.yaml b/sdks/publish.yaml index 157b65281b..01a980c70a 100644 --- a/sdks/publish.yaml +++ b/sdks/publish.yaml @@ -8110,18 +8110,18 @@ publish: To make this possible, we provide account information and offer payment initiation services on our regulated and secure platform as a payment - institution approved by the German authorities (BaFin). + institution approved by the German authorities (BaFin). Due to our advanced, AI-based data analytics, we offer high-performance value-added services for a wide range of use cases (e.g. contract recognition, age verification, KYC light based on account data or - affordability checks). + affordability checks). In addition, we realise and operate your personal finance or business finance application as a web portal or mobile app cost-effectively with - our front-end technology platform. + our front-end technology platform. With our SaaS and ASP solutions, we maximally reduce complexity for our @@ -8146,3 +8146,87 @@ publish: serviceName: false sdkName: banks-api-{language}-sdk clientName: BanksApi + from-custom-request_askmiso.com: + homepage: miso.ai + company: Miso + developerDocumentation: docs.miso.ai/ + apiStatusUrls: inherit + metaDescription: >- + Miso’s simple APIs empower product teams to realize unlimited + personalization opportunities. Leading brands are using Miso’s semantic + intelligence and real-time clickstream analysis to drive a new generation + of personalized experiences and lift revenues sitewide. And unlike + traditional solutions, Miso can personalize 100% anonymously — no tracking + users or mining data. + categories: + - ai + - search + serviceName: false + sdkName: miso-{language}-sdk + clientName: Miso + from-custom-request_baserow.io: + homepage: baserow.io + company: Baserow + developerDocumentation: baserow.io/docs/index + apiStatusUrls: inherit + metaDescription: >- + Baserow is the most flexible platform for creating databases and + applications—without coding. + + + Get all the power of a database with the familiarity of a spreadsheet. + Organize your data and build applications faster, with greater security + and at any scale. Only Baserow has self-hosting, real-time collaboration, + APIs, plugins, and no vendor lock-in. + + + Create Kanban boards, calendars, forms, integrate with other tools, and + more to provide the best representation of your data. Today, thousands of + customers around the world use our powerful and easy-to-use tools as their + CRM, project management systems, or to power websites. + + + We live by open source principles: our code, product, and community are + all open for everyone to join and contribute to. We're looking for + passionate individuals to join us: baserow.io/jobs + categories: + - database + - no_code + serviceName: false + sdkName: baserow-{language}-sdk + clientName: Baserow + from-custom-request_browse.ai: + homepage: browse.ai + company: Browse AI + developerDocumentation: www.browse.ai/docs/api/v2 + apiStatusUrls: inherit + metaDescription: >- + We're creating the easiest way to scrape and monitor any website with no + code. + + + Our mission is to give every individual and business equal opportunity to + benefit from information on the internet. + categories: + - ai + - web_scraping + serviceName: false + sdkName: browse-ai-{language}-sdk + clientName: BrowseAi + from-custom-request_chatkitty.com: + homepage: chatkitty.com + company: ChatKitty + developerDocumentation: chatkitty.com/docs/api/reference + apiStatusUrls: inherit + metaDescription: >- + ChatKitty gives you the tools to build real-time chat for web and mobile + apps, complete with advanced features like moderation, offline messaging + and analytics. + categories: + - communications_software + - messaging + - chat_platforms + - chat_sdks + serviceName: false + sdkName: chat-kitty-{language}-sdk + clientName: ChatKitty diff --git a/sdks/src/collect-from-custom-requests.ts b/sdks/src/collect-from-custom-requests.ts index 0b5880d571..e2b5079d4b 100644 --- a/sdks/src/collect-from-custom-requests.ts +++ b/sdks/src/collect-from-custom-requests.ts @@ -2329,6 +2329,23 @@ const customRequests: Record = { url: "https://api.apaleo.com/swagger/inventory-v1/swagger.json", apiBaseUrl: "api.apaleo.com", }, + "chatkitty.com": { + type: "GET", + url: "https://api.chatkitty.com/docs/v1", + }, + "browse.ai": { + type: "GET", + url: "https://api.browse.ai/v2/openapi", + }, + "askmiso.com": { + type: "GET", + url: "https://api.askmiso.com/swagger.json", + }, + "baserow.io": { + type: "GET", + url: "https://api.baserow.io/api/schema.json", + apiBaseUrl: "api.baserow.io", + }, "wallester.com": { type: "GET", url: "https://api-doc.wallester.com/swagger.json", @@ -2438,7 +2455,7 @@ const customRequests: Record = { "beamlend.com": { type: "GET", url: "https://docs.beamlend.com/redocusaurus/plugin-redoc-0.yaml", - apiBaseUrl: "https://api.beamlend.com" + apiBaseUrl: "https://api.beamlend.com", }, "banksapi.de": { type: "GET",